1 #include "api.h"
2
3 /** @file api_const.cc exports constants */
4
5 #include "../api_param.h"
6 #include "../../simobj.h"
7 #include "../../simmenu.h"
8 #include "../../simunits.h"
9
10 using namespace script_api;
11
12 #define begin_enum(name) sq_pushconsttable(vm);
13 #define end_enum() sq_setconsttable(vm);
14 #define enum_slot create_slot<SQInteger>
15
export_global_constants(HSQUIRRELVM vm)16 void export_global_constants(HSQUIRRELVM vm)
17 {
18 /**
19 * Constants to identify tools, ie actions a player can perform to
20 * alter the state of the game.
21 */
22 begin_enum("tool_ids");
23 /// remover tool
24 enum_slot(vm, "tool_remover", TOOL_REMOVER | GENERAL_TOOL);
25 /// raise land tool
26 enum_slot(vm, "tool_raise_land", TOOL_RAISE_LAND | GENERAL_TOOL);
27 /// lower land tool
28 enum_slot(vm, "tool_lower_land", TOOL_LOWER_LAND | GENERAL_TOOL);
29 /// artificial slope
30 enum_slot(vm, "tool_setslope", TOOL_SETSLOPE | GENERAL_TOOL);
31 /// restore natural slope
32 enum_slot(vm, "tool_restoreslope", TOOL_RESTORESLOPE | GENERAL_TOOL);
33 /// set marker
34 enum_slot(vm, "tool_set_marker", TOOL_MARKER | GENERAL_TOOL);
35 /// clear block reservation
36 enum_slot(vm, "tool_clear_reservation", TOOL_CLEAR_RESERVATION | GENERAL_TOOL);
37 /// build transformer
38 enum_slot(vm, "tool_build_transformer", TOOL_TRANSFORMER | GENERAL_TOOL);
39 /// add city
40 enum_slot(vm, "tool_add_city", TOOL_ADD_CITY | GENERAL_TOOL);
41 /// change city size
42 enum_slot(vm, "tool_change_city_size", TOOL_CHANGE_CITY_SIZE | GENERAL_TOOL);
43 /// plant a tree
44 enum_slot(vm, "tool_plant_tree", TOOL_PLANT_TREE | GENERAL_TOOL);
45 // not needed? enum__slot(vm, "tool_schedule_add", TOOL_SCHEDULE_ADD | GENERAL_TOOL);
46 // not needed? enum__slot(vm, "tool_schedule_ins", TOOL_SCHEDULE_INS | GENERAL_TOOL);
47 /// build ways
48 enum_slot(vm, "tool_build_way", TOOL_BUILD_WAY | GENERAL_TOOL);
49 /// build bridges
50 enum_slot(vm, "tool_build_bridge", TOOL_BUILD_BRIDGE | GENERAL_TOOL);
51 /// build tunnel
52 enum_slot(vm, "tool_build_tunnel", TOOL_BUILD_TUNNEL | GENERAL_TOOL);
53 /// remove way
54 enum_slot(vm, "tool_remove_way", TOOL_WAYREMOVER | GENERAL_TOOL);
55 /// build overhead wires
56 enum_slot(vm, "tool_build_wayobj", TOOL_BUILD_WAYOBJ | GENERAL_TOOL);
57 /// build stations
58 enum_slot(vm, "tool_build_station", TOOL_BUILD_STATION | GENERAL_TOOL);
59 /// build signals and road signs
60 enum_slot(vm, "tool_build_roadsign", TOOL_BUILD_ROADSIGN | GENERAL_TOOL);
61 /// build depot
62 enum_slot(vm, "tool_build_depot", TOOL_BUILD_DEPOT | GENERAL_TOOL);
63 /// build city houses
64 enum_slot(vm, "tool_build_house", TOOL_BUILD_HOUSE | GENERAL_TOOL);
65 /// create industry chain with end consumer not in cities
66 enum_slot(vm, "tool_land_chain", TOOL_BUILD_LAND_CHAIN | GENERAL_TOOL);
67 /// create industry chain with end consumer in cities
68 enum_slot(vm, "tool_city_chain", TOOL_CITY_CHAIN | GENERAL_TOOL);
69 /// build a factory
70 enum_slot(vm, "tool_build_factory", TOOL_BUILD_FACTORY | GENERAL_TOOL);
71 /// link factories
72 enum_slot(vm, "tool_link_factory", TOOL_LINK_FACTORY | GENERAL_TOOL);
73 /// build headquarters
74 enum_slot(vm, "tool_headquarter", TOOL_HEADQUARTER | GENERAL_TOOL);
75 /// lock map: switching players not allowed anymore
76 enum_slot(vm, "tool_lock_game", TOOL_LOCK_GAME | GENERAL_TOOL);
77 /// add city car
78 enum_slot(vm, "tool_add_citycar", TOOL_ADD_CITYCAR | GENERAL_TOOL);
79 /// create forest
80 enum_slot(vm, "tool_forest", TOOL_FOREST | GENERAL_TOOL);
81 /// move stop tool
82 enum_slot(vm, "tool_stop_mover", TOOL_STOP_MOVER | GENERAL_TOOL);
83 /// make stop public
84 enum_slot(vm, "tool_make_stop_public", TOOL_MAKE_STOP_PUBLIC | GENERAL_TOOL);
85 /// remove way objects like overheadwires
86 enum_slot(vm, "tool_remove_wayobj", TOOL_REMOVE_WAYOBJ | GENERAL_TOOL);
87 // not needed? enum__slot(vm, "tool_sliced_and_underground_view", TOOL_SLICED_AND_UNDERGROUND_VIEW | GENERAL_TOOL);
88 /// buy a house
89 enum_slot(vm, "tool_buy_house", TOOL_BUY_HOUSE | GENERAL_TOOL);
90 /// build city road with pavement
91 enum_slot(vm, "tool_build_cityroad", TOOL_BUILD_CITYROAD | GENERAL_TOOL);
92 /// alter water height
93 enum_slot(vm, "tool_change_water_height", TOOL_CHANGE_WATER_HEIGHT | GENERAL_TOOL);
94 /// change climate of tiles
95 enum_slot(vm, "tool_set_climate", TOOL_SET_CLIMATE | GENERAL_TOOL);
96
97 // simple tools
98 /// increase industry density
99 enum_slot(vm, "tool_increase_industry", TOOL_INCREASE_INDUSTRY | SIMPLE_TOOL);
100 /// switch player
101 enum_slot(vm, "tool_switch_player", TOOL_SWITCH_PLAYER | SIMPLE_TOOL);
102 /// step year forward
103 enum_slot(vm, "tool_step_year", TOOL_STEP_YEAR | SIMPLE_TOOL);
104 /// fill area with trees
105 enum_slot(vm, "tool_fill_trees", TOOL_FILL_TREES | SIMPLE_TOOL);
106 /// set traffic level
107 enum_slot(vm, "tool_set_traffic_level", TOOL_TRAFFIC_LEVEL | SIMPLE_TOOL);
108
109 // tools to open certain windows
110 /// open factory editor window
111 enum_slot(vm, "dialog_edit_factory", DIALOG_EDIT_FACTORY | DIALOGE_TOOL);
112 /// open tourist attraction editor window
113 enum_slot(vm, "dialog_edit_attraction", DIALOG_EDIT_ATTRACTION | DIALOGE_TOOL);
114 /// open house editor window
115 enum_slot(vm, "dialog_edit_house", DIALOG_EDIT_HOUSE | DIALOGE_TOOL);
116 /// open tree editor window
117 enum_slot(vm, "dialog_edit_tree", DIALOG_EDIT_TREE | DIALOGE_TOOL);
118 /// open map enlargement window
119 enum_slot(vm, "dialog_enlarge_map", DIALOG_ENLARGE_MAP | DIALOGE_TOOL);
120
121 end_enum();
122
123 /**
124 * Constants for different way types.
125 */
126 begin_enum("way_types");
127 /// catch all value: used to forbid tools for all waytypes
128 enum_slot(vm, "wt_all", invalid_wt);
129 /// road
130 enum_slot(vm, "wt_road", road_wt);
131 /// rail
132 enum_slot(vm, "wt_rail", track_wt);
133 /// water
134 enum_slot(vm, "wt_water", water_wt);
135 /// monorail
136 enum_slot(vm, "wt_monorail", monorail_wt);
137 /// maglev
138 enum_slot(vm, "wt_maglev", maglev_wt);
139 /// trams
140 enum_slot(vm, "wt_tram", tram_wt);
141 /// narrow gauge
142 enum_slot(vm, "wt_narrowgauge", narrowgauge_wt);
143 /// aircrafts and airports
144 enum_slot(vm, "wt_air", air_wt);
145 /// powerlines
146 enum_slot(vm, "wt_power", powerline_wt);
147 /// invalid
148 enum_slot(vm, "wt_invalid", invalid_wt);
149 end_enum();
150
151 /**
152 * Constants for different system types of ways.
153 * System type could take also other values than the ones defined here.
154 */
155 begin_enum("way_system_types");
156 /// flat ways
157 enum_slot(vm, "st_flat", type_flat);
158 /// elevated ways
159 enum_slot(vm, "st_elevated", type_elevated);
160 /// runway (for wt_air), equal to st_elevated
161 enum_slot(vm, "st_runway", type_runway);
162 /// tram tracks (here way type has to be wt_tram)
163 enum_slot(vm, "st_tram", type_tram);
164 end_enum();
165
166 // players
167 begin_enum("");
168 /// constant to forbid/allow tools for all players (except public player)
169 enum_slot(vm, "player_all", PLAYER_UNOWNED);
170 end_enum();
171
172 /**
173 * Types of map objects.
174 */
175 begin_enum("map_objects");
176 /// tree
177 enum_slot(vm, "mo_tree", obj_t::baum);
178 /// pointer (bulldozers etc)
179 enum_slot(vm, "mo_pointer", obj_t::zeiger);
180 /// cloud and smoke
181 enum_slot(vm, "mo_cloud", obj_t::wolke);
182 /// building (houses, halts, factories ...)
183 enum_slot(vm, "mo_building", obj_t::gebaeude);
184 /// signal
185 enum_slot(vm, "mo_signal", obj_t::signal);
186 /// bridge
187 enum_slot(vm, "mo_bridge", obj_t::bruecke);
188 /// tunnel
189 enum_slot(vm, "mo_tunnel", obj_t::tunnel);
190 /// depot: rail
191 enum_slot(vm, "mo_depot_rail", obj_t::bahndepot);
192 /// depot: road
193 enum_slot(vm, "mo_depot_road", obj_t::strassendepot);
194 /// depot: ship
195 enum_slot(vm, "mo_depot_water", obj_t::schiffdepot);
196 /// powerline
197 enum_slot(vm, "mo_powerline", obj_t::leitung);
198 /// transformer at powerplant
199 enum_slot(vm, "mo_transformer_s", obj_t::pumpe);
200 /// transformer at factory
201 enum_slot(vm, "mo_transformer_c", obj_t::senke);
202 /// road-sign
203 enum_slot(vm, "mo_roadsign", obj_t::roadsign);
204 /// bridge pillar
205 enum_slot(vm, "mo_pillar", obj_t::pillar);
206 /// depot: airplanes
207 enum_slot(vm, "mo_depot_air", obj_t::airdepot);
208 /// depot: monorail
209 enum_slot(vm, "mo_depot_monorail", obj_t::monoraildepot);
210 /// depot: tram
211 enum_slot(vm, "mo_depot_tram", obj_t::tramdepot);
212 /// depot: maglev
213 enum_slot(vm, "mo_depot_maglev", obj_t::maglevdepot);
214 /// way object (overhead wires)
215 enum_slot(vm, "mo_wayobj", obj_t::wayobj);
216 /// way
217 enum_slot(vm, "mo_way", obj_t::way );
218 /// text label
219 enum_slot(vm, "mo_label", obj_t::label);
220 /// field
221 enum_slot(vm, "mo_field", obj_t::field);
222 /// crossing
223 enum_slot(vm, "mo_crossing", obj_t::crossing);
224 /// decorative objects (rocks, lakes ...)
225 enum_slot(vm, "mo_groundobj", obj_t::groundobj);
226 /// depot: narrowgauge
227 enum_slot(vm, "mo_depot_narrowgauge", obj_t::narrowgaugedepot);
228 /// pedestrian
229 enum_slot(vm, "mo_pedestrian", obj_t::pedestrian);
230 /// city car - not player owned
231 enum_slot(vm, "mo_city_car", obj_t::road_user);
232 /// road vehicle
233 enum_slot(vm, "mo_car", obj_t::road_vehicle);
234 /// rail vehicle
235 enum_slot(vm, "mo_train", obj_t::rail_vehicle);
236 /// monorail vehicle
237 enum_slot(vm, "mo_monorail", obj_t::monorail_vehicle);
238 /// maglev vehicle
239 enum_slot(vm, "mo_maglev", obj_t::maglev_vehicle);
240 /// narrowgauge vehicle
241 enum_slot(vm, "mo_narrowgauge", obj_t::narrowgauge_vehicle);
242 /// ship
243 enum_slot(vm, "mo_ship", obj_t::water_vehicle);
244 /// airplane
245 enum_slot(vm, "mo_airplane", obj_t::air_vehicle);
246 /// moving object (sheep ...)
247 enum_slot(vm, "mo_moving_object", obj_t::movingobj);
248
249 end_enum();
250
251 /**
252 * Internal units.
253 */
254 begin_enum("units");
255 /// The length of one side of a tile in car units. @see vehicle_desc_x::get_length
256 enum_slot(vm, "CARUNITS_PER_TILE", (uint32)CARUNITS_PER_TILE);
257
258 end_enum();
259
260 /**
261 * Climate zones. Their naming may differ from the graphical representation and
262 * translation in some paksets.
263 */
264 begin_enum("climates");
265 enum_slot(vm, "cl_water", water_climate);
266 enum_slot(vm, "cl_desert", desert_climate);
267 enum_slot(vm, "cl_tropic", tropic_climate);
268 enum_slot(vm, "cl_mediterran", mediterran_climate);
269 enum_slot(vm, "cl_temperate", temperate_climate);
270 enum_slot(vm, "cl_tundra", tundra_climate);
271 enum_slot(vm, "cl_rocky", rocky_climate);
272 enum_slot(vm, "cl_arctic", arctic_climate);
273 end_enum();
274
275 }
276