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