1 #ifndef SIMULATIONDATA_H
2 #define SIMULATIONDATA_H
3 
4 #include <vector>
5 #include <array>
6 
7 #define SC_WALL 0
8 #define SC_ELEC 1
9 #define SC_POWERED 2
10 #define SC_SENSOR 3
11 #define SC_FORCE 4
12 #define SC_EXPLOSIVE 5
13 #define SC_GAS 6
14 #define SC_LIQUID 7
15 #define SC_POWDERS 8
16 #define SC_SOLIDS 9
17 #define SC_NUCLEAR 10
18 #define SC_SPECIAL 11
19 #define SC_LIFE 12
20 #define SC_TOOL 13
21 #define SC_FAVORITES 14
22 #define SC_DECO 15
23 #define SC_CRACKER 16
24 #define SC_CRACKER2 17
25 #define SC_TOTAL 16
26 
27 #define O_WL_WALLELEC	122
28 #define O_WL_EWALL		123
29 #define O_WL_DETECT		124
30 #define O_WL_STREAM		125
31 #define O_WL_SIGN		126
32 #define O_WL_FAN		127
33 #define O_WL_FANHELPER	255
34 #define O_WL_ALLOWLIQUID	128
35 #define O_WL_DESTROYALL	129
36 #define O_WL_ERASE		130
37 #define O_WL_WALL		131
38 #define O_WL_ALLOWAIR	132
39 #define O_WL_ALLOWSOLID	133
40 #define O_WL_ALLOWALLELEC	134
41 #define O_WL_EHOLE		135
42 #define O_WL_ALLOWGAS	140
43 #define O_WL_GRAV		142
44 #define O_WL_ALLOWENERGY 145
45 
46 #define WL_ERASE		0
47 #define WL_WALLELEC		1
48 #define WL_EWALL		2
49 #define WL_DETECT		3
50 #define WL_STREAM		4
51 #define WL_FAN			5
52 #define WL_ALLOWLIQUID	6
53 #define WL_DESTROYALL	7
54 #define WL_WALL			8
55 #define WL_ALLOWAIR		9
56 #define WL_ALLOWPOWDER	10
57 #define WL_ALLOWALLELEC	11
58 #define WL_EHOLE		12
59 #define WL_ALLOWGAS		13
60 #define WL_GRAV			14
61 #define WL_ALLOWENERGY	15
62 #define WL_BLOCKAIR		16
63 #define WL_ERASEALL		17
64 #define WL_STASIS		18
65 #define WL_FLOODHELPER	255
66 
67 #define UI_WALLCOUNT 19
68 
69 #define OLD_SPC_AIR 236
70 #define SPC_AIR 256
71 
72 #define DECO_DRAW	0
73 #define DECO_CLEAR	1
74 #define DECO_ADD	2
75 #define DECO_SUBTRACT	3
76 #define DECO_MULTIPLY	4
77 #define DECO_DIVIDE	5
78 #define DECO_SMUDGE 6
79 
80 //Old IDs for GOL types
81 #define GT_GOL 78
82 #define GT_HLIF 79
83 #define GT_ASIM 80
84 #define GT_2x2 81
85 #define GT_DANI 82
86 #define GT_AMOE 83
87 #define GT_MOVE 84
88 #define GT_PGOL 85
89 #define GT_DMOE 86
90 #define GT_34 87
91 #define GT_LLIF 88
92 #define GT_STAN 89
93 #define GT_SEED 134
94 #define GT_MAZE 135
95 #define GT_COAG 136
96 #define GT_WALL 137
97 #define GT_GNAR 138
98 #define GT_REPL 139
99 #define GT_MYST 140
100 #define GT_LOTE 142
101 #define GT_FRG2 143
102 #define GT_STAR 144
103 #define GT_FROG 145
104 #define GT_BRAN 146
105 
106 //New IDs for GOL types
107 #define NGT_GOL 0
108 #define NGT_HLIF 1
109 #define NGT_ASIM 2
110 #define NGT_2x2 3
111 #define NGT_DANI 4
112 #define NGT_AMOE 5
113 #define NGT_MOVE 6
114 #define NGT_PGOL 7
115 #define NGT_DMOE 8
116 #define NGT_34 9
117 #define NGT_LLIF 10
118 #define NGT_STAN 11
119 #define NGT_SEED 12
120 #define NGT_MAZE 13
121 #define NGT_COAG 14
122 #define NGT_WALL 15
123 #define NGT_GNAR 16
124 #define NGT_REPL 17
125 #define NGT_MYST 18
126 #define NGT_LOTE 19
127 #define NGT_FRG2 20
128 #define NGT_STAR 21
129 #define NGT_FROG 22
130 #define NGT_BRAN 23
131 
132 //replace mode / specific delete flags
133 #define REPLACE_MODE 0x1
134 #define SPECIFIC_DELETE 0x2
135 
136 struct part_type;
137 struct part_transition;
138 
139 struct wall_type;
140 struct gol_menu;
141 struct menu_section;
142 
143 class SimTool;
144 class Element;
145 
146 std::vector<gol_menu> LoadGOLMenu();
147 
148 std::vector<int> LoadGOLTypes();
149 
150 std::vector<std::array<int, 10> > LoadGOLRules();
151 
152 std::vector<wall_type> LoadWalls();
153 
154 std::vector<menu_section> LoadMenus();
155 
156 std::vector<unsigned int> LoadLatent();
157 
158 #endif /* SIMULATIONDATA_H */
159