1 #ifndef HEADER_MODELFACTORY_H
2 #define HEADER_MODELFACTORY_H
3 
4 class V2;
5 class Unit;
6 
7 #include "Cube.h"
8 #include "ControlSym.h"
9 #include "Dir.h"
10 
11 #include <string>
12 
13 /**
14  * Knows how to create new models.
15  */
16 class ModelFactory {
17     private:
18         static void createParams(const std::string &kind,
19                 Cube::eWeight *out_weight, Cube::eWeight *out_power,
20                 bool *out_alive);
21         static ControlSym parseExtraControlSym(const std::string &kind);
22         static Cube *createOutputItem(const std::string &kind, const V2 &loc,
23                 const std::string &shape);
24     public:
25         static Cube *createModel(const std::string &kind, const V2 &loc,
26                 const std::string &shape);
27         static Unit *createUnit(const std::string &kind);
28         static Cube *createBorder();
29 };
30 
31 #endif
32