OpenTTD

newgrf_debug_data.h
Go to the documentation of this file.
1 /* $Id: newgrf_debug_data.h 27654 2016-09-05 19:11:01Z frosch $ */
2
3 /*
4 * This file is part of OpenTTD.
5 * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
6 * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
7 * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
8 */
9
12 #include "../newgrf_house.h"
13 #include "../newgrf_engine.h"
14
15 /* Helper for filling property tables */
16 #define NIP(prop, base, variable, type, name) { name, (ptrdiff_t)cpp_offsetof(base, variable), cpp_sizeof(base, variable), prop, type }
17 #define NIP_END() { NULL, 0, 0, 0, 0 }
18
19 /* Helper for filling callback tables */
20 #define NIC(cb_id, base, variable, bit) { #cb_id, (ptrdiff_t)cpp_offsetof(base, variable), cpp_sizeof(base, variable), bit, cb_id }
21 #define NIC_END() { NULL, 0, 0, 0, 0 }
22
23 /* Helper for filling variable tables */
24 #define NIV(var, name) { name, var }
25 #define NIV_END() { NULL, 0 }
26
27
28 /*** NewGRF Vehicles ***/
29
30 #define NICV(cb_id, bit) NIC(cb_id, Engine, info.callback_mask, bit)
31 static const NICallback _nic_vehicles[] = {
32 NICV(CBID_VEHICLE_VISUAL_EFFECT, CBM_VEHICLE_VISUAL_EFFECT),
33 NICV(CBID_VEHICLE_LENGTH, CBM_VEHICLE_LENGTH),
34 NICV(CBID_VEHICLE_LOAD_AMOUNT, CBM_VEHICLE_LOAD_AMOUNT),
35 NICV(CBID_VEHICLE_REFIT_CAPACITY, CBM_VEHICLE_REFIT_CAPACITY),
36 NICV(CBID_VEHICLE_ARTIC_ENGINE, CBM_VEHICLE_ARTIC_ENGINE),
37 NICV(CBID_VEHICLE_CARGO_SUFFIX, CBM_VEHICLE_CARGO_SUFFIX),
38 NICV(CBID_TRAIN_ALLOW_WAGON_ATTACH, CBM_NO_BIT),
39 NICV(CBID_VEHICLE_ADDITIONAL_TEXT, CBM_NO_BIT),
40 NICV(CBID_VEHICLE_COLOUR_MAPPING, CBM_VEHICLE_COLOUR_REMAP),
41 NICV(CBID_VEHICLE_START_STOP_CHECK, CBM_NO_BIT),
42 NICV(CBID_VEHICLE_32DAY_CALLBACK, CBM_NO_BIT),
43 NICV(CBID_VEHICLE_SOUND_EFFECT, CBM_VEHICLE_SOUND_EFFECT),
44 NICV(CBID_VEHICLE_AUTOREPLACE_SELECTION, CBM_NO_BIT),
45 NICV(CBID_VEHICLE_MODIFY_PROPERTY, CBM_NO_BIT),
46 NIC_END()
47 };
48
49
50 static const NIVariable _niv_vehicles[] = {
51 NIV(0x40, "position in consist and length"),
52 NIV(0x41, "position and length of chain of same vehicles"),
53 NIV(0x42, "transported cargo types"),
54 NIV(0x43, "player info"),
55 NIV(0x44, "aircraft info"),
56 NIV(0x45, "curvature info"),
57 NIV(0x46, "motion counter"),
58 NIV(0x47, "vehicle cargo info"),
59 NIV(0x48, "vehicle type info"),
60 NIV(0x49, "year of construction"),
61 NIV(0x4A, "current rail type info"),
62 NIV(0x4B, "long date of last service"),
63 NIV(0x4C, "current max speed"),
64 NIV(0x4D, "position in articulated vehicle"),
65 NIV(0x60, "count vehicle id occurrences"),
66 // 0x61 not useful, since it requires register 0x10F
67 NIV(0x62, "Curvature/position difference to other vehicle"),
68 NIV_END()
69 };
70
71 class NIHVehicle : public NIHelper {
72 bool IsInspectable(uint index) const { return Vehicle::Get(index)->GetGRF() != NULL; }
73 uint GetParent(uint index) const { const Vehicle *first = Vehicle::Get(index)->First(); return GetInspectWindowNumber(GetGrfSpecFeature(first->type), first->index); }
74 const void *GetInstance(uint index)const { return Vehicle::Get(index); }
75 const void *GetSpec(uint index) const { return Vehicle::Get(index)->GetEngine(); }
76 void SetStringParameters(uint index) const { this->SetSimpleStringParameters(STR_VEHICLE_NAME, index); }
77 uint32 GetGRFID(uint index) const { return Vehicle::Get(index)->GetGRFID(); }
78
79 /* virtual */ uint Resolve(uint index, uint var, uint param, bool *avail) const
80 {
81 Vehicle *v = Vehicle::Get(index);
82 VehicleResolverObject ro(v->engine_type, v, VehicleResolverObject::WO_CACHED);
83 return ro.GetScope(VSG_SCOPE_SELF)->GetVariable(var, param, avail);
84 }
85 };
86
87 static const NIFeature _nif_vehicle = {
88 NULL,
89 _nic_vehicles,
90 _niv_vehicles,
91 new NIHVehicle(),
92 };
93
94
95 /*** NewGRF station (tiles) ***/
96
97 #define NICS(cb_id, bit) NIC(cb_id, StationSpec, callback_mask, bit)
98 static const NICallback _nic_stations[] = {
99 NICS(CBID_STATION_AVAILABILITY, CBM_STATION_AVAIL),
100 NICS(CBID_STATION_SPRITE_LAYOUT, CBM_STATION_SPRITE_LAYOUT),
101 NICS(CBID_STATION_TILE_LAYOUT, CBM_NO_BIT),
102 NICS(CBID_STATION_ANIM_START_STOP, CBM_NO_BIT),
103 NICS(CBID_STATION_ANIM_NEXT_FRAME, CBM_STATION_ANIMATION_NEXT_FRAME),
104 NICS(CBID_STATION_ANIMATION_SPEED, CBM_STATION_ANIMATION_SPEED),
105 NICS(CBID_STATION_LAND_SLOPE_CHECK, CBM_STATION_SLOPE_CHECK),
106 NIC_END()
107 };
108
109 static const NIVariable _niv_stations[] = {
110 NIV(0x40, "platform info and relative position"),
111 NIV(0x41, "platform info and relative position for individually built sections"),
112 NIV(0x42, "terrain and track type"),
113 NIV(0x43, "player info"),
114 NIV(0x44, "path signalling info"),
115 NIV(0x45, "rail continuation info"),
116 NIV(0x46, "platform info and relative position from middle"),
117 NIV(0x47, "platform info and relative position from middle for individually built sections"),
118 NIV(0x48, "bitmask of accepted cargoes"),
119 NIV(0x49, "platform info and relative position of same-direction section"),
120 NIV(0x4A, "current animation frame"),
121 NIV(0x60, "amount of cargo waiting"),
122 NIV(0x61, "time since last cargo pickup"),
123 NIV(0x62, "rating of cargo"),
124 NIV(0x63, "time spent on route"),
125 NIV(0x64, "information about last vehicle picking cargo up"),
126 NIV(0x65, "amount of cargo acceptance"),
127 NIV(0x66, "animation frame of nearby tile"),
128 NIV(0x67, "land info of nearby tiles"),
129 NIV(0x68, "station info of nearby tiles"),
130 NIV(0x69, "information about cargo accepted in the past"),
131 NIV_END()
132 };
133
134 class NIHStation : public NIHelper {
135 bool IsInspectable(uint index) const { return GetStationSpec(index) != NULL; }
136 uint GetParent(uint index) const { return GetInspectWindowNumber(GSF_FAKE_TOWNS, Station::GetByTile(index)->town->index); }
137 const void *GetInstance(uint index)const { return NULL; }
138 const void *GetSpec(uint index) const { return GetStationSpec(index); }
139 void SetStringParameters(uint index) const { this->SetObjectAtStringParameters(STR_STATION_NAME, GetStationIndex(index), index); }
140 uint32 GetGRFID(uint index) const { return (this->IsInspectable(index)) ? GetStationSpec(index)->grf_prop.grffile->grfid : 0; }
141
142 /* virtual */ uint Resolve(uint index, uint var, uint param, bool *avail) const
143 {
144 StationResolverObject ro(GetStationSpec(index), Station::GetByTile(index), index);
145 return ro.GetScope(VSG_SCOPE_SELF)->GetVariable(var, param, avail);
146 }
147 };
148
149 static const NIFeature _nif_station = {
150 NULL,
151 _nic_stations,
152 _niv_stations,
153 new NIHStation(),
154 };
155
156
157 /*** NewGRF house tiles ***/
158
159 #define NICH(cb_id, bit) NIC(cb_id, HouseSpec, callback_mask, bit)
160 static const NICallback _nic_house[] = {
161 NICH(CBID_HOUSE_ALLOW_CONSTRUCTION, CBM_HOUSE_ALLOW_CONSTRUCTION),
162 NICH(CBID_HOUSE_ANIMATION_NEXT_FRAME, CBM_HOUSE_ANIMATION_NEXT_FRAME),
163 NICH(CBID_HOUSE_ANIMATION_START_STOP, CBM_HOUSE_ANIMATION_START_STOP),
164 NICH(CBID_HOUSE_CONSTRUCTION_STATE_CHANGE, CBM_HOUSE_CONSTRUCTION_STATE_CHANGE),
165 NICH(CBID_HOUSE_COLOUR, CBM_HOUSE_COLOUR),
166 NICH(CBID_HOUSE_CARGO_ACCEPTANCE, CBM_HOUSE_CARGO_ACCEPTANCE),
167 NICH(CBID_HOUSE_ANIMATION_SPEED, CBM_HOUSE_ANIMATION_SPEED),
168 NICH(CBID_HOUSE_DESTRUCTION, CBM_HOUSE_DESTRUCTION),
169 NICH(CBID_HOUSE_ACCEPT_CARGO, CBM_HOUSE_ACCEPT_CARGO),
170 NICH(CBID_HOUSE_PRODUCE_CARGO, CBM_HOUSE_PRODUCE_CARGO),
171 NICH(CBID_HOUSE_DENY_DESTRUCTION, CBM_HOUSE_DENY_DESTRUCTION),
172 NICH(CBID_HOUSE_WATCHED_CARGO_ACCEPTED, CBM_NO_BIT),
173 NICH(CBID_HOUSE_CUSTOM_NAME, CBM_NO_BIT),
174 NICH(CBID_HOUSE_DRAW_FOUNDATIONS, CBM_HOUSE_DRAW_FOUNDATIONS),
175 NICH(CBID_HOUSE_AUTOSLOPE, CBM_HOUSE_AUTOSLOPE),
176 NIC_END()
177 };
178
179 static const NIVariable _niv_house[] = {
180 NIV(0x40, "construction state of tile and pseudo-random value"),
181 NIV(0x41, "age of building in years"),
182 NIV(0x42, "town zone"),
183 NIV(0x43, "terrain type"),
184 NIV(0x44, "building counts"),
185 NIV(0x45, "town expansion bits"),
186 NIV(0x46, "current animation frame"),
187 NIV(0x47, "xy coordinate of the building"),
188 NIV(0x60, "other building counts (old house type)"),
189 NIV(0x61, "other building counts (new house type)"),
190 NIV(0x62, "land info of nearby tiles"),
191 NIV(0x63, "current animation frame of nearby house tile"),
192 NIV(0x64, "cargo acceptance history of nearby stations"),
193 NIV(0x65, "distance of nearest house matching a given criterion"),
194 NIV(0x66, "class and ID of nearby house tile"),
195 NIV(0x67, "GRFID of nearby house tile"),
196 NIV_END()
197 };
198
199 class NIHHouse : public NIHelper {
200 bool IsInspectable(uint index) const { return HouseSpec::Get(GetHouseType(index))->grf_prop.grffile != NULL; }
201 uint GetParent(uint index) const { return GetInspectWindowNumber(GSF_FAKE_TOWNS, GetTownIndex(index)); }
202 const void *GetInstance(uint index)const { return NULL; }
203 const void *GetSpec(uint index) const { return HouseSpec::Get(GetHouseType(index)); }
204 void SetStringParameters(uint index) const { this->SetObjectAtStringParameters(STR_TOWN_NAME, GetTownIndex(index), index); }
205 uint32 GetGRFID(uint index) const { return (this->IsInspectable(index)) ? HouseSpec::Get(GetHouseType(index))->grf_prop.grffile->grfid : 0; }
206
207 /* virtual */ uint Resolve(uint index, uint var, uint param, bool *avail) const
208 {
209 HouseResolverObject ro(GetHouseType(index), index, Town::GetByTile(index));
210 return ro.GetScope(VSG_SCOPE_SELF)->GetVariable(var, param, avail);
211 }
212 };
213
214 static const NIFeature _nif_house = {
215 NULL,
216 _nic_house,
217 _niv_house,
218 new NIHHouse(),
219 };
220
221
222 /*** NewGRF industry tiles ***/
223
224 #define NICIT(cb_id, bit) NIC(cb_id, IndustryTileSpec, callback_mask, bit)
225 static const NICallback _nic_industrytiles[] = {
226 NICIT(CBID_INDTILE_ANIM_START_STOP, CBM_NO_BIT),
227 NICIT(CBID_INDTILE_ANIM_NEXT_FRAME, CBM_INDT_ANIM_NEXT_FRAME),
228 NICIT(CBID_INDTILE_ANIMATION_SPEED, CBM_INDT_ANIM_SPEED),
229 NICIT(CBID_INDTILE_CARGO_ACCEPTANCE, CBM_INDT_CARGO_ACCEPTANCE),
230 NICIT(CBID_INDTILE_ACCEPT_CARGO, CBM_INDT_ACCEPT_CARGO),
231 NICIT(CBID_INDTILE_SHAPE_CHECK, CBM_INDT_SHAPE_CHECK),
232 NICIT(CBID_INDTILE_DRAW_FOUNDATIONS, CBM_INDT_DRAW_FOUNDATIONS),
233 NICIT(CBID_INDTILE_AUTOSLOPE, CBM_INDT_AUTOSLOPE),
234 NIC_END()
235 };
236
237 static const NIVariable _niv_industrytiles[] = {
238 NIV(0x40, "construction state of tile"),
239 NIV(0x41, "ground type"),
240 NIV(0x42, "current town zone in nearest town"),
241 NIV(0x43, "relative position"),
242 NIV(0x44, "animation frame"),
243 NIV(0x60, "land info of nearby tiles"),
244 NIV(0x61, "animation stage of nearby tiles"),
245 NIV(0x62, "get industry or airport tile ID at offset"),
246 NIV_END()
247 };
248
249 class NIHIndustryTile : public NIHelper {
250 bool IsInspectable(uint index) const { return GetIndustryTileSpec(GetIndustryGfx(index))->grf_prop.grffile != NULL; }
251 uint GetParent(uint index) const { return GetInspectWindowNumber(GSF_INDUSTRIES, GetIndustryIndex(index)); }
252 const void *GetInstance(uint index)const { return NULL; }
253 const void *GetSpec(uint index) const { return GetIndustryTileSpec(GetIndustryGfx(index)); }
254 void SetStringParameters(uint index) const { this->SetObjectAtStringParameters(STR_INDUSTRY_NAME, GetIndustryIndex(index), index); }
255 uint32 GetGRFID(uint index) const { return (this->IsInspectable(index)) ? GetIndustryTileSpec(GetIndustryGfx(index))->grf_prop.grffile->grfid : 0; }
256
257 /* virtual */ uint Resolve(uint index, uint var, uint param, bool *avail) const
258 {
259 IndustryTileResolverObject ro(GetIndustryGfx(index), index, Industry::GetByTile(index));
260 return ro.GetScope(VSG_SCOPE_SELF)->GetVariable(var, param, avail);
261 }
262 };
263
264 static const NIFeature _nif_industrytile = {
265 NULL,
266 _nic_industrytiles,
267 _niv_industrytiles,
268 new NIHIndustryTile(),
269 };
270
271
272 /*** NewGRF industries ***/
273
274 static const NIProperty _nip_industries[] = {
275 NIP(0x10, Industry, produced_cargo[0], NIT_CARGO, "produced cargo 0"),
276 NIP(0x10, Industry, produced_cargo[1], NIT_CARGO, "produced cargo 1"),
277 NIP(0x11, Industry, accepts_cargo[0], NIT_CARGO, "accepted cargo 0"),
278 NIP(0x11, Industry, accepts_cargo[1], NIT_CARGO, "accepted cargo 1"),
279 NIP(0x11, Industry, accepts_cargo[2], NIT_CARGO, "accepted cargo 2"),
280 NIP_END()
281 };
282
283 #define NICI(cb_id, bit) NIC(cb_id, IndustrySpec, callback_mask, bit)
284 static const NICallback _nic_industries[] = {
285 NICI(CBID_INDUSTRY_PROBABILITY, CBM_IND_PROBABILITY),
286 NICI(CBID_INDUSTRY_LOCATION, CBM_IND_LOCATION),
287 NICI(CBID_INDUSTRY_PRODUCTION_CHANGE, CBM_IND_PRODUCTION_CHANGE),
288 NICI(CBID_INDUSTRY_MONTHLYPROD_CHANGE, CBM_IND_MONTHLYPROD_CHANGE),
289 NICI(CBID_INDUSTRY_CARGO_SUFFIX, CBM_IND_CARGO_SUFFIX),
290 NICI(CBID_INDUSTRY_FUND_MORE_TEXT, CBM_IND_FUND_MORE_TEXT),
291 NICI(CBID_INDUSTRY_WINDOW_MORE_TEXT, CBM_IND_WINDOW_MORE_TEXT),
292 NICI(CBID_INDUSTRY_SPECIAL_EFFECT, CBM_IND_SPECIAL_EFFECT),
293 NICI(CBID_INDUSTRY_REFUSE_CARGO, CBM_IND_REFUSE_CARGO),
294 NICI(CBID_INDUSTRY_DECIDE_COLOUR, CBM_IND_DECIDE_COLOUR),
295 NICI(CBID_INDUSTRY_INPUT_CARGO_TYPES, CBM_IND_INPUT_CARGO_TYPES),
296 NICI(CBID_INDUSTRY_OUTPUT_CARGO_TYPES, CBM_IND_OUTPUT_CARGO_TYPES),
297 NICI(CBID_INDUSTRY_PROD_CHANGE_BUILD, CBM_IND_PROD_CHANGE_BUILD),
298 NIC_END()
299 };
300
301 static const NIVariable _niv_industries[] = {
302 NIV(0x40, "waiting cargo 0"),
303 NIV(0x41, "waiting cargo 1"),
304 NIV(0x42, "waiting cargo 2"),
305 NIV(0x43, "distance to closest dry/land tile"),
306 NIV(0x44, "layout number"),
307 NIV(0x45, "player info"),
308 NIV(0x46, "industry construction date"),
309 NIV(0x60, "get industry tile ID at offset"),
310 NIV(0x61, "get random tile bits at offset"),
311 NIV(0x62, "land info of nearby tiles"),
312 NIV(0x63, "animation stage of nearby tiles"),
313 NIV(0x64, "distance on nearest industry with given type"),
314 NIV(0x65, "get town zone and Manhattan distance of closest town"),
315 NIV(0x66, "get square of Euclidean distance of closes town"),
316 NIV(0x67, "count of industry and distance of closest instance"),
317 NIV(0x68, "count of industry and distance of closest instance with layout filter"),
318 NIV_END()
319 };
320
321 class NIHIndustry : public NIHelper {
322 bool IsInspectable(uint index) const { return GetIndustrySpec(Industry::Get(index)->type)->grf_prop.grffile != NULL; }
323 uint GetParent(uint index) const { return GetInspectWindowNumber(GSF_FAKE_TOWNS, Industry::Get(index)->town->index); }
324 const void *GetInstance(uint index)const { return Industry::Get(index); }
325 const void *GetSpec(uint index) const { return GetIndustrySpec(Industry::Get(index)->type); }
326 void SetStringParameters(uint index) const { this->SetSimpleStringParameters(STR_INDUSTRY_NAME, index); }
327 uint32 GetGRFID(uint index) const { return (this->IsInspectable(index)) ? GetIndustrySpec(Industry::Get(index)->type)->grf_prop.grffile->grfid : 0; }
328
329 /* virtual */ uint Resolve(uint index, uint var, uint param, bool *avail) const
330 {
331 Industry *i = Industry::Get(index);
332 IndustriesResolverObject ro(i->location.tile, i, i->type);
333 return ro.GetScope(VSG_SCOPE_SELF)->GetVariable(var, param, avail);
334 }
335
336 uint GetPSASize(uint index, uint32 grfid) const { return cpp_lengthof(PersistentStorage, storage); }
337
338 const int32 *GetPSAFirstPosition(uint index, uint32 grfid) const
339 {
340 const Industry *i = (const Industry *)this->GetInstance(index);
341 if (i->psa == NULL) return NULL;
342 return (int32 *)(&i->psa->storage);
343 }
344 };
345
346 static const NIFeature _nif_industry = {
347 _nip_industries,
348 _nic_industries,
349 _niv_industries,
350 new NIHIndustry(),
351 };
352
353
354 /*** NewGRF objects ***/
355
356 #define NICO(cb_id, bit) NIC(cb_id, ObjectSpec, callback_mask, bit)
357 static const NICallback _nic_objects[] = {
358 NICO(CBID_OBJECT_LAND_SLOPE_CHECK, CBM_OBJ_SLOPE_CHECK),
359 NICO(CBID_OBJECT_ANIMATION_NEXT_FRAME, CBM_OBJ_ANIMATION_NEXT_FRAME),
360 NICO(CBID_OBJECT_ANIMATION_START_STOP, CBM_NO_BIT),
361 NICO(CBID_OBJECT_ANIMATION_SPEED, CBM_OBJ_ANIMATION_SPEED),
362 NICO(CBID_OBJECT_COLOUR, CBM_OBJ_COLOUR),
363 NICO(CBID_OBJECT_FUND_MORE_TEXT, CBM_OBJ_FUND_MORE_TEXT),
364 NICO(CBID_OBJECT_AUTOSLOPE, CBM_OBJ_AUTOSLOPE),
365 NIC_END()
366 };
367
368 static const NIVariable _niv_objects[] = {
369 NIV(0x40, "relative position"),
370 NIV(0x41, "tile information"),
371 NIV(0x42, "construction date"),
372 NIV(0x43, "animation counter"),
373 NIV(0x44, "object founder"),
374 NIV(0x45, "get town zone and Manhattan distance of closest town"),
375 NIV(0x46, "get square of Euclidean distance of closes town"),
376 NIV(0x47, "colour"),
377 NIV(0x48, "view"),
378 NIV(0x60, "get object ID at offset"),
379 NIV(0x61, "get random tile bits at offset"),
380 NIV(0x62, "land info of nearby tiles"),
381 NIV(0x63, "animation stage of nearby tiles"),
382 NIV(0x64, "distance on nearest object with given type"),
383 NIV_END()
384 };
385
386 class NIHObject : public NIHelper {
387 bool IsInspectable(uint index) const { return ObjectSpec::GetByTile(index)->grf_prop.grffile != NULL; }
388 uint GetParent(uint index) const { return GetInspectWindowNumber(GSF_FAKE_TOWNS, Object::GetByTile(index)->town->index); }
389 const void *GetInstance(uint index)const { return Object::GetByTile(index); }
390 const void *GetSpec(uint index) const { return ObjectSpec::GetByTile(index); }
391 void SetStringParameters(uint index) const { this->SetObjectAtStringParameters(STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT, INVALID_STRING_ID, index); }
392 uint32 GetGRFID(uint index) const { return (this->IsInspectable(index)) ? ObjectSpec::GetByTile(index)->grf_prop.grffile->grfid : 0; }
393
394 /* virtual */ uint Resolve(uint index, uint var, uint param, bool *avail) const
395 {
396 ObjectResolverObject ro(ObjectSpec::GetByTile(index), Object::GetByTile(index), index);
397 return ro.GetScope(VSG_SCOPE_SELF)->GetVariable(var, param, avail);
398 }
399 };
400
401 static const NIFeature _nif_object = {
402 NULL,
403 _nic_objects,
404 _niv_objects,
405 new NIHObject(),
406 };
407
408
409 /*** NewGRF rail types ***/
410
411 static const NIVariable _niv_railtypes[] = {
412 NIV(0x40, "terrain type"),
413 NIV(0x41, "enhanced tunnels"),
414 NIV(0x42, "level crossing status"),
415 NIV(0x43, "construction date"),
416 NIV(0x44, "town zone"),
417 NIV_END()
418 };
419
420 class NIHRailType : public NIHelper {
421 bool IsInspectable(uint index) const { return true; }
422 uint GetParent(uint index) const { return UINT32_MAX; }
423 const void *GetInstance(uint index)const { return NULL; }
424 const void *GetSpec(uint index) const { return NULL; }
425 void SetStringParameters(uint index) const { this->SetObjectAtStringParameters(STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE, INVALID_STRING_ID, index); }
426 uint32 GetGRFID(uint index) const { return 0; }
427
428 /* virtual */ uint Resolve(uint index, uint var, uint param, bool *avail) const
429 {
430 /* There is no unique GRFFile for the tile. Multiple GRFs can define different parts of the railtype.
431 * However, currently the NewGRF Debug GUI does not display variables depending on the GRF (like 0x7F) anyway. */
432 RailTypeResolverObject ro(NULL, index, TCX_NORMAL, RTSG_END);
433 return ro.GetScope(VSG_SCOPE_SELF)->GetVariable(var, param, avail);
434 }
435 };
436
437 static const NIFeature _nif_railtype = {
438 NULL,
439 NULL,
440 _niv_railtypes,
441 new NIHRailType(),
442 };
443
444
445 /*** NewGRF airport tiles ***/
446
447 #define NICAT(cb_id, bit) NIC(cb_id, AirportTileSpec, callback_mask, bit)
448 static const NICallback _nic_airporttiles[] = {
449 NICAT(CBID_AIRPTILE_DRAW_FOUNDATIONS, CBM_AIRT_DRAW_FOUNDATIONS),
450 NICAT(CBID_AIRPTILE_ANIM_START_STOP, CBM_NO_BIT),
451 NICAT(CBID_AIRPTILE_ANIM_NEXT_FRAME, CBM_AIRT_ANIM_NEXT_FRAME),
452 NICAT(CBID_AIRPTILE_ANIMATION_SPEED, CBM_AIRT_ANIM_SPEED),
453 NIC_END()
454 };
455
456 class NIHAirportTile : public NIHelper {
457 bool IsInspectable(uint index) const { return AirportTileSpec::Get(GetAirportGfx(index))->grf_prop.grffile != NULL; }
458 uint GetParent(uint index) const { return GetInspectWindowNumber(GSF_FAKE_TOWNS, Station::GetByTile(index)->town->index); }
459 const void *GetInstance(uint index)const { return NULL; }
460 const void *GetSpec(uint index) const { return AirportTileSpec::Get(GetAirportGfx(index)); }
461 void SetStringParameters(uint index) const { this->SetObjectAtStringParameters(STR_STATION_NAME, GetStationIndex(index), index); }
462 uint32 GetGRFID(uint index) const { return (this->IsInspectable(index)) ? AirportTileSpec::Get(GetAirportGfx(index))->grf_prop.grffile->grfid : 0; }
463
464 /* virtual */ uint Resolve(uint index, uint var, uint param, bool *avail) const
465 {
466 AirportTileResolverObject ro(AirportTileSpec::GetByTile(index), index, Station::GetByTile(index));
467 return ro.GetScope(VSG_SCOPE_SELF)->GetVariable(var, param, avail);
468 }
469 };
470
471 static const NIFeature _nif_airporttile = {
472 NULL,
473 _nic_airporttiles,
474 _niv_industrytiles, // Yes, they share this (at least now)
475 new NIHAirportTile(),
476 };
477
478
479 /*** NewGRF towns ***/
480
481 static const NIVariable _niv_towns[] = {
482 NIV(0x40, "larger town effect on this town"),
483 NIV(0x41, "town index"),
484 NIV(0x82, "population"),
485 NIV(0x94, "zone radius 0"),
486 NIV(0x96, "zone radius 1"),
487 NIV(0x98, "zone radius 2"),
488 NIV(0x9A, "zone radius 3"),
489 NIV(0x9C, "zone radius 4"),
490 NIV(0xB6, "number of buildings"),
491 NIV_END()
492 };
493
494 class NIHTown : public NIHelper {
495 bool IsInspectable(uint index) const { return Town::IsValidID(index); }
496 uint GetParent(uint index) const { return UINT32_MAX; }
497 const void *GetInstance(uint index)const { return Town::Get(index); }
498 const void *GetSpec(uint index) const { return NULL; }
499 void SetStringParameters(uint index) const { this->SetSimpleStringParameters(STR_TOWN_NAME, index); }
500 uint32 GetGRFID(uint index) const { return 0; }
501 bool PSAWithParameter() const { return true; }
502 uint GetPSASize(uint index, uint32 grfid) const { return cpp_lengthof(PersistentStorage, storage); }
503
504 /* virtual */ uint Resolve(uint index, uint var, uint param, bool *avail) const
505 {
506 TownResolverObject ro(NULL, Town::Get(index), true);
507 return ro.GetScope(VSG_SCOPE_SELF)->GetVariable(var, param, avail);
508 }
509
510 const int32 *GetPSAFirstPosition(uint index, uint32 grfid) const
511 {
512 Town *t = Town::Get(index);
513
514 std::list<PersistentStorage *>::iterator iter;
515 for (iter = t->psa_list.begin(); iter != t->psa_list.end(); iter++) {
516 if ((*iter)->grfid == grfid) return (int32 *)(&(*iter)->storage[0]);
517 }
518
519 return NULL;
520 }
521 };
522
523 static const NIFeature _nif_town = {
524 NULL,
525 NULL,
526 _niv_towns,
527 new NIHTown(),
528 };
529
531 static const NIFeature * const _nifeatures[] = {
532 &_nif_vehicle, // GSF_TRAINS
533 &_nif_vehicle, // GSF_ROADVEHICLES
534 &_nif_vehicle, // GSF_SHIPS
535 &_nif_vehicle, // GSF_AIRCRAFT
536 &_nif_station, // GSF_STATIONS
537 NULL, // GSF_CANALS (no callbacks/action2 implemented)
538 NULL, // GSF_BRIDGES (no callbacks/action2)
539 &_nif_house, // GSF_HOUSES
540 NULL, // GSF_GLOBALVAR (has no "physical" objects)
541 &_nif_industrytile, // GSF_INDUSTRYTILES
542 &_nif_industry, // GSF_INDUSTRIES
543 NULL, // GSF_CARGOES (has no "physical" objects)
544 NULL, // GSF_SOUNDFX (has no "physical" objects)
545 NULL, // GSF_AIRPORTS (feature not implemented)
546 NULL, // GSF_SIGNALS (feature not implemented)
547 &_nif_object, // GSF_OBJECTS
548 &_nif_railtype, // GSF_RAILTYPES
549 &_nif_airporttile, // GSF_AIRPORTTILES
550 &_nif_town, // GSF_FAKE_TOWNS
551 };
552 assert_compile(lengthof(_nifeatures) == GSF_FAKE_END);
NIHIndustry::SetStringParameters
void SetStringParameters(uint index) const
Set the string parameters to write the right data for a STRINGn.
Definition: newgrf_debug_data.h:326
TownResolverObject
Resolver of town properties.
Definition: newgrf_town.h:44
CBM_IND_OUTPUT_CARGO_TYPES
customize the cargoes the industry produces
Definition: newgrf_callbacks.h:363
NIHIndustry::GetGRFID
uint32 GetGRFID(uint index) const
Get the GRFID of the file that includes this item.
Definition: newgrf_debug_data.h:327
NIHAirportTile::GetInstance
const void * GetInstance(uint index) const
Get the instance given an index.
Definition: newgrf_debug_data.h:459
CBM_IND_PROD_CHANGE_BUILD
initialise production level on construction
Definition: newgrf_callbacks.h:364
NIHObject
Definition: newgrf_debug_data.h:386
NIHRailType
Definition: newgrf_debug_data.h:420
CBID_INDUSTRY_LOCATION
Called to determine if the given industry can be built on specific area.
Definition: newgrf_callbacks.h:110
NIHHouse::Resolve
uint Resolve(uint index, uint var, uint param, bool *avail) const
Resolve (action2) variable for a given index.
Definition: newgrf_debug_data.h:207
CBM_STATION_SPRITE_LAYOUT
Use callback to select a sprite layout to use.
Definition: newgrf_callbacks.h:306
RailTypeResolverObject
Resolver object for rail types.
Definition: newgrf_railtype.h:40
NIHRailType::GetParent
uint GetParent(uint index) const
Get the parent "window_number" of a given instance.
Definition: newgrf_debug_data.h:422
NIHAirportTile::GetParent
uint GetParent(uint index) const
Get the parent "window_number" of a given instance.
Definition: newgrf_debug_data.h:458
NIHHouse::IsInspectable
bool IsInspectable(uint index) const
Is the item with the given index inspectable?
Definition: newgrf_debug_data.h:200
NIHRailType::IsInspectable
bool IsInspectable(uint index) const
Is the item with the given index inspectable?
Definition: newgrf_debug_data.h:421
CBM_OBJ_ANIMATION_NEXT_FRAME
decides next animation frame
Definition: newgrf_callbacks.h:385
CBM_HOUSE_ACCEPT_CARGO
decides accepted types
Definition: newgrf_callbacks.h:324
NIHHouse::SetStringParameters
void SetStringParameters(uint index) const
Set the string parameters to write the right data for a STRINGn.
Definition: newgrf_debug_data.h:204
NIHAirportTile::GetSpec
const void * GetSpec(uint index) const
Get (NewGRF) specs given an index.
Definition: newgrf_debug_data.h:460
CBM_OBJ_ANIMATION_SPEED
decides animation speed
Definition: newgrf_callbacks.h:386
NIHObject::SetStringParameters
void SetStringParameters(uint index) const
Set the string parameters to write the right data for a STRINGn.
Definition: newgrf_debug_data.h:391
CBID_AIRPTILE_ANIM_NEXT_FRAME
Called to determine airport tile next animation frame.
Definition: newgrf_callbacks.h:241
CBID_OBJECT_FUND_MORE_TEXT
Called to determine more text in the fund object window.
Definition: newgrf_callbacks.h:271
IndustryTileResolverObject::GetScope
ScopeResolver * GetScope(VarSpriteGroupScope scope=VSG_SCOPE_SELF, byte relative=0)
Get a resolver for the scope.
Definition: newgrf_industrytiles.h:48
Pool::PoolItem<&_vehicle_pool >::Get
static Titem * Get(size_t index)
Returns Titem with given index.
Definition: pool_type.hpp:246
NIHAirportTile::Resolve
uint Resolve(uint index, uint var, uint param, bool *avail) const
Resolve (action2) variable for a given index.
Definition: newgrf_debug_data.h:464
CBM_AIRT_ANIM_SPEED
decides animation speed
Definition: newgrf_callbacks.h:397
AirportTileSpec::GetByTile
static const AirportTileSpec * GetByTile(TileIndex tile)
Retrieve airport tile spec for the given airport tile.
Definition: newgrf_airporttiles.cpp:51
NIHStation::GetParent
uint GetParent(uint index) const
Get the parent "window_number" of a given instance.
Definition: newgrf_debug_data.h:136
CBID_HOUSE_AUTOSLOPE
Called to determine if one can alter the ground below a house tile.
Definition: newgrf_callbacks.h:232
NIHIndustryTile::IsInspectable
bool IsInspectable(uint index) const
Is the item with the given index inspectable?
Definition: newgrf_debug_data.h:250
CBID_INDTILE_SHAPE_CHECK
Called to determine if the given industry tile can be built on specific tile.
Definition: newgrf_callbacks.h:134
NIHelper::SetSimpleStringParameters
void SetSimpleStringParameters(StringID string, uint32 index) const
Helper to make setting the strings easier.
Definition: newgrf_debug_gui.cpp:208
NIHObject::GetInstance
const void * GetInstance(uint index) const
Get the instance given an index.
Definition: newgrf_debug_data.h:389
CBID_INDUSTRY_INPUT_CARGO_TYPES
Customize the input cargo types of a newly build industry.
Definition: newgrf_callbacks.h:220
GetIndustryGfx
static IndustryGfx GetIndustryGfx(TileIndex t)
Get the industry graphics ID for the given industry tile.
Definition: industry_map.h:139
ObjectSpec::grf_prop
GRFFilePropsBase< 2 > grf_prop
Properties related the the grf file.
Definition: newgrf_object.h:62
CBID_VEHICLE_ARTIC_ENGINE
Builds articulated engines for trains and RVs.
Definition: newgrf_callbacks.h:53
NIVariable
Representation on the NewGRF variables.
Definition: newgrf_debug_gui.cpp:109
CBID_HOUSE_DESTRUCTION
Called periodically to determine if a house should be destroyed.
Definition: newgrf_callbacks.h:86
CBID_HOUSE_ANIMATION_SPEED
Called to indicate how long the current animation frame should last.
Definition: newgrf_callbacks.h:83
CBID_VEHICLE_AUTOREPLACE_SELECTION
Return the vehicles this given vehicle can be "upgraded" to.
Definition: newgrf_callbacks.h:152
CBID_INDUSTRY_MONTHLYPROD_CHANGE
Called monthly on production changes, so it can be adjusted more frequently.
Definition: newgrf_callbacks.h:155
NIHTown::Resolve
uint Resolve(uint index, uint var, uint param, bool *avail) const
Resolve (action2) variable for a given index.
Definition: newgrf_debug_data.h:504
CBID_INDTILE_ANIM_START_STOP
Called for periodically starting or stopping the animation.
Definition: newgrf_callbacks.h:101
CBM_OBJ_FUND_MORE_TEXT
additional text in fund window
Definition: newgrf_callbacks.h:388
CBID_VEHICLE_START_STOP_CHECK
Called when the company (or AI) tries to start or stop a vehicle.
Definition: newgrf_callbacks.h:143
Vehicle
Vehicle data structure.
Definition: vehicle_base.h:212
NIHStation::GetInstance
const void * GetInstance(uint index) const
Get the instance given an index.
Definition: newgrf_debug_data.h:137
Industry
Defines the internal data of a functional industry.
Definition: industry.h:39
NIHHouse::GetParent
uint GetParent(uint index) const
Get the parent "window_number" of a given instance.
Definition: newgrf_debug_data.h:201
NIHVehicle::GetGRFID
uint32 GetGRFID(uint index) const
Get the GRFID of the file that includes this item.
Definition: newgrf_debug_data.h:77
GetInspectWindowNumber
static uint GetInspectWindowNumber(GrfSpecFeature feature, uint index)
Get the window number for the inspect window given a feature and index.
Definition: newgrf_debug_gui.cpp:69
Pool::PoolItem::index
Tindex index
Index of this pool item.
Definition: pool_type.hpp:147
GetAirportGfx
static StationGfx GetAirportGfx(TileIndex t)
Get the station graphics of this airport tile.
Definition: station_map.h:245
NIT_CARGO
The property is a cargo.
Definition: newgrf_debug_gui.cpp:81
CBID_OBJECT_ANIMATION_NEXT_FRAME
Determine the next animation frame for a house.
Definition: newgrf_callbacks.h:259
NIHIndustryTile::GetParent
uint GetParent(uint index) const
Get the parent "window_number" of a given instance.
Definition: newgrf_debug_data.h:251
CBM_VEHICLE_REFIT_CAPACITY
Cargo capacity after refit.
Definition: newgrf_callbacks.h:294
CBM_IND_LOCATION
check industry construction on given area
Definition: newgrf_callbacks.h:353
CBM_HOUSE_CONSTRUCTION_STATE_CHANGE
change animation when construction state changes
Definition: newgrf_callbacks.h:319
NIHIndustry::GetPSAFirstPosition
const int32 * GetPSAFirstPosition(uint index, uint32 grfid) const
Gets the first position of the array containing the persistent storage.
Definition: newgrf_debug_data.h:338
HouseResolverObject
Resolver object to be used for houses (feature 07 spritegroups).
Definition: newgrf_house.h:53
CBID_TRAIN_ALLOW_WAGON_ATTACH
Determine whether a wagon can be attached to an already existing train.
Definition: newgrf_callbacks.h:74
CBID_HOUSE_DENY_DESTRUCTION
Called to determine whether a town building can be destroyed.
Definition: newgrf_callbacks.h:196
CBID_HOUSE_ACCEPT_CARGO
Called to determine which cargoes a town building should accept.
Definition: newgrf_callbacks.h:116
CBID_VEHICLE_VISUAL_EFFECT
Visual effects and wagon power.
Definition: newgrf_callbacks.h:32
TCX_NORMAL
Nothing special.
Definition: newgrf_commons.h:27
CBID_INDTILE_ANIMATION_SPEED
Called to indicate how long the current animation frame should last.
Definition: newgrf_callbacks.h:107
NIHVehicle::GetParent
uint GetParent(uint index) const
Get the parent "window_number" of a given instance.
Definition: newgrf_debug_data.h:73
GetGrfSpecFeature
GrfSpecFeature GetGrfSpecFeature(TileIndex tile)
Get the GrfSpecFeature associated with the tile.
Definition: newgrf_debug_gui.cpp:768
CBID_VEHICLE_CARGO_SUFFIX
Determine the cargo "suffixes" for each refit possibility of a cargo.
Definition: newgrf_callbacks.h:62
CBID_OBJECT_LAND_SLOPE_CHECK
Callback done for each tile of an object to check the slope.
Definition: newgrf_callbacks.h:256
CBM_IND_SPECIAL_EFFECT
control special effects
Definition: newgrf_callbacks.h:359
CBM_VEHICLE_SOUND_EFFECT
Vehicle uses custom sound effects.
Definition: newgrf_callbacks.h:298
CBM_STATION_ANIMATION_NEXT_FRAME
Use a custom next frame callback.
Definition: newgrf_callbacks.h:307
CBID_STATION_AVAILABILITY
Determine whether a newstation should be made available to build.
Definition: newgrf_callbacks.h:41
CBM_HOUSE_ANIMATION_SPEED
decides animation speed
Definition: newgrf_callbacks.h:322
CBM_HOUSE_CARGO_ACCEPTANCE
decides amount of cargo acceptance
Definition: newgrf_callbacks.h:321
NIHObject::Resolve
uint Resolve(uint index, uint var, uint param, bool *avail) const
Resolve (action2) variable for a given index.
Definition: newgrf_debug_data.h:394
NIHObject::GetParent
uint GetParent(uint index) const
Get the parent "window_number" of a given instance.
Definition: newgrf_debug_data.h:388
NIHStation::SetStringParameters
void SetStringParameters(uint index) const
Set the string parameters to write the right data for a STRINGn.
Definition: newgrf_debug_data.h:139
CBID_INDUSTRY_FUND_MORE_TEXT
Called to determine more text in the fund industry window.
Definition: newgrf_callbacks.h:167
NICallback
Representation of the available callbacks with information on when they actually apply.
Definition: newgrf_debug_gui.cpp:98
NIHVehicle::GetSpec
const void * GetSpec(uint index) const
Get (NewGRF) specs given an index.
Definition: newgrf_debug_data.h:75
CBM_VEHICLE_LOAD_AMOUNT
Load amount.
Definition: newgrf_callbacks.h:293
NIHIndustryTile::SetStringParameters
void SetStringParameters(uint index) const
Set the string parameters to write the right data for a STRINGn.
Definition: newgrf_debug_data.h:254
CBID_HOUSE_DRAW_FOUNDATIONS
Called to determine the type (if any) of foundation to draw for house tile.
Definition: newgrf_callbacks.h:229
CBID_STATION_LAND_SLOPE_CHECK
Callback done for each tile of a station to check the slope.
Definition: newgrf_callbacks.h:214
NIHTown::PSAWithParameter
bool PSAWithParameter() const
Used to decide if the PSA needs a parameter or not.
Definition: newgrf_debug_data.h:501
CBM_INDT_AUTOSLOPE
decides allowance of autosloping
Definition: newgrf_callbacks.h:377
CBID_HOUSE_COLOUR
Called to determine the colour of a town building.
Definition: newgrf_callbacks.h:77
GSF_FAKE_TOWNS
Fake town GrfSpecFeature for NewGRF debugging (parent scope)
Definition: newgrf.h:88
NIHRailType::GetInstance
const void * GetInstance(uint index) const
Get the instance given an index.
Definition: newgrf_debug_data.h:423
_nifeatures
static const NIFeature *const _nifeatures[]
Table with all NIFeatures.
Definition: newgrf_debug_data.h:531
TownResolverObject::GetScope
ScopeResolver * GetScope(VarSpriteGroupScope scope=VSG_SCOPE_SELF, byte relative=0)
Get a resolver for the scope.
Definition: newgrf_town.h:49
CBID_VEHICLE_ADDITIONAL_TEXT
This callback is called from vehicle purchase lists.
Definition: newgrf_callbacks.h:95
IndustryTileResolverObject
Resolver for industry tiles.
Definition: newgrf_industrytiles.h:41
NIHHouse::GetSpec
const void * GetSpec(uint index) const
Get (NewGRF) specs given an index.
Definition: newgrf_debug_data.h:203
NIHAirportTile
Definition: newgrf_debug_data.h:456
CBID_HOUSE_CUSTOM_NAME
Called on the Get Tile Description for an house tile.
Definition: newgrf_callbacks.h:226
CBID_INDUSTRY_OUTPUT_CARGO_TYPES
Customize the output cargo types of a newly build industry.
Definition: newgrf_callbacks.h:223
CBID_HOUSE_WATCHED_CARGO_ACCEPTED
Called when a cargo type specified in property 20 is accepted.
Definition: newgrf_callbacks.h:211
CBM_AIRT_DRAW_FOUNDATIONS
decides if default foundations need to be drawn
Definition: newgrf_callbacks.h:399
NIHRailType::Resolve
uint Resolve(uint index, uint var, uint param, bool *avail) const
Resolve (action2) variable for a given index.
Definition: newgrf_debug_data.h:428
CBID_STATION_ANIMATION_SPEED
Called to indicate how long the current animation frame should last.
Definition: newgrf_callbacks.h:193
Industry::psa
PersistentStorage * psa
Persistent storage for NewGRF industries.
Definition: industry.h:71
CBM_STATION_ANIMATION_SPEED
Customize the animation speed of the station.
Definition: newgrf_callbacks.h:308
CBID_VEHICLE_SOUND_EFFECT
Called to play a special sound effect.
Definition: newgrf_callbacks.h:149
CBID_INDUSTRY_PROBABILITY
Called to determine if the given industry type is available.
Definition: newgrf_callbacks.h:89
AirportTileResolverObject
Resolver for tiles of an airport.
Definition: newgrf_airporttiles.h:46
CBM_IND_PRODUCTION_CHANGE
controls random production change
Definition: newgrf_callbacks.h:354
CBM_AIRT_ANIM_NEXT_FRAME
decides next animation frame
Definition: newgrf_callbacks.h:396
GetTownIndex
static TownID GetTownIndex(TileIndex t)
Get the index of which town this house/street is attached to.
Definition: town_map.h:24
CBM_INDT_DRAW_FOUNDATIONS
decides if default foundations need to be drawn
Definition: newgrf_callbacks.h:376
CBID_VEHICLE_MODIFY_PROPERTY
Called to modify various vehicle properties.
Definition: newgrf_callbacks.h:161
CBID_INDTILE_AUTOSLOPE
Called to determine if industry can alter the ground below industry tile.
Definition: newgrf_callbacks.h:179
CBM_HOUSE_PRODUCE_CARGO
custom cargo production
Definition: newgrf_callbacks.h:325
CBID_INDTILE_DRAW_FOUNDATIONS
Called to determine the type (if any) of foundation to draw for industry tile.
Definition: newgrf_callbacks.h:137
VehicleResolverObject
Resolver for a vehicle (chain)
Definition: newgrf_engine.h:49
NIHAirportTile::IsInspectable
bool IsInspectable(uint index) const
Is the item with the given index inspectable?
Definition: newgrf_debug_data.h:457
StationSpec::grf_prop
GRFFilePropsBase< NUM_CARGO+3 > grf_prop
Properties related the the grf file.
Definition: newgrf_station.h:124
CBM_HOUSE_DESTRUCTION
trigger destruction of building
Definition: newgrf_callbacks.h:323
NIHHouse::GetInstance
const void * GetInstance(uint index) const
Get the instance given an index.
Definition: newgrf_debug_data.h:202
GetIndustrySpec
const IndustrySpec * GetIndustrySpec(IndustryType thistype)
Accessor for array _industry_specs.
Definition: industry_cmd.cpp:116
NIHIndustryTile
Definition: newgrf_debug_data.h:249
CBM_VEHICLE_CARGO_SUFFIX
Show suffix after cargo name.
Definition: newgrf_callbacks.h:296
NIHIndustry::GetPSASize
uint GetPSASize(uint index, uint32 grfid) const
Allows to know the size of the persistent storage.
Definition: newgrf_debug_data.h:336
CBID_OBJECT_ANIMATION_SPEED
Called to indicate how long the current animation frame should last.
Definition: newgrf_callbacks.h:265
NIHStation::GetGRFID
uint32 GetGRFID(uint index) const
Get the GRFID of the file that includes this item.
Definition: newgrf_debug_data.h:140
Industry::type
IndustryType type
type of industry.
Definition: industry.h:55
CBM_VEHICLE_LENGTH
Vehicle length (trains and road vehicles)
Definition: newgrf_callbacks.h:292
CBM_HOUSE_COLOUR
decide the colour of the building
Definition: newgrf_callbacks.h:320
CBID_STATION_ANIM_START_STOP
Called for periodically starting or stopping the animation.
Definition: newgrf_callbacks.h:187
NIHStation::GetSpec
const void * GetSpec(uint index) const
Get (NewGRF) specs given an index.
Definition: newgrf_debug_data.h:138
NIHIndustryTile::GetInstance
const void * GetInstance(uint index) const
Get the instance given an index.
Definition: newgrf_debug_data.h:252
NIHIndustryTile::GetGRFID
uint32 GetGRFID(uint index) const
Get the GRFID of the file that includes this item.
Definition: newgrf_debug_data.h:255
CBM_INDT_CARGO_ACCEPTANCE
decides amount of cargo acceptance
Definition: newgrf_callbacks.h:373
NIHObject::IsInspectable
bool IsInspectable(uint index) const
Is the item with the given index inspectable?
Definition: newgrf_debug_data.h:387
NIHelper::SetObjectAtStringParameters
void SetObjectAtStringParameters(StringID string, uint32 index, TileIndex tile) const
Helper to make setting the strings easier for objects at a specific tile.
Definition: newgrf_debug_gui.cpp:221
Industry::location
TileArea location
Location of the industry.
Definition: industry.h:40
PersistentStorageArray::storage
TYPE storage[SIZE]
Memory to for the storage array.
Definition: newgrf_storage.h:69
CBM_IND_WINDOW_MORE_TEXT
additional text in industry window
Definition: newgrf_callbacks.h:358
GSF_FAKE_END
End of the fake features.
Definition: newgrf.h:89
CBM_VEHICLE_COLOUR_REMAP
Change colour mapping of vehicle.
Definition: newgrf_callbacks.h:297
PersistentStorage
Class for pooled persistent storage of data.
Definition: newgrf_storage.h:223
NIHTown::GetSpec
const void * GetSpec(uint index) const
Get (NewGRF) specs given an index.
Definition: newgrf_debug_data.h:498
NIHVehicle::GetInstance
const void * GetInstance(uint index) const
Get the instance given an index.
Definition: newgrf_debug_data.h:74
CBM_HOUSE_AUTOSLOPE
decides allowance of autosloping
Definition: newgrf_callbacks.h:328
IndustryTileSpec::grf_prop
GRFFileProps grf_prop
properties related to the grf file
Definition: industrytype.h:164
CBM_HOUSE_ANIMATION_NEXT_FRAME
decides next animation frame
Definition: newgrf_callbacks.h:317
AirportTileSpec::Get
static const AirportTileSpec * Get(StationGfx gfx)
Retrieve airport tile spec for the given airport tile.
Definition: newgrf_airporttiles.cpp:38
CBM_IND_INPUT_CARGO_TYPES
customize the cargoes the industry requires
Definition: newgrf_callbacks.h:362
CBM_IND_FUND_MORE_TEXT
additional text in fund window
Definition: newgrf_callbacks.h:357
NIHIndustry::IsInspectable
bool IsInspectable(uint index) const
Is the item with the given index inspectable?
Definition: newgrf_debug_data.h:322
ObjectResolverObject::GetScope
ScopeResolver * GetScope(VarSpriteGroupScope scope=VSG_SCOPE_SELF, byte relative=0)
Get a resolver for the scope.
Definition: newgrf_object.h:132
NIHTown::GetInstance
const void * GetInstance(uint index) const
Get the instance given an index.
Definition: newgrf_debug_data.h:497
GetIndustryTileSpec
const IndustryTileSpec * GetIndustryTileSpec(IndustryGfx gfx)
Accessor for array _industry_tile_specs.
Definition: industry_cmd.cpp:130
CBM_INDT_ANIM_SPEED
decides animation speed
Definition: newgrf_callbacks.h:372
CBID_STATION_TILE_LAYOUT
Called when building a station to customize the tile layout.
Definition: newgrf_callbacks.h:98
CBID_VEHICLE_COLOUR_MAPPING
Called to determine if a specific colour map should be used for a vehicle instead of the default live...
Definition: newgrf_callbacks.h:128
NIHObject::GetSpec
const void * GetSpec(uint index) const
Get (NewGRF) specs given an index.
Definition: newgrf_debug_data.h:390
lengthof
#define lengthof(x)
Return the length of an fixed size array.
Definition: depend.cpp:42
CBM_HOUSE_ANIMATION_START_STOP
periodically start/stop the animation
Definition: newgrf_callbacks.h:318
IndustrySpec::grf_prop
GRFFileProps grf_prop
properties related to the grf file
Definition: industrytype.h:136
VSG_SCOPE_SELF
Resolved object itself.
Definition: newgrf_spritegroup.h:103
CBM_OBJ_COLOUR
decide the colour of the building
Definition: newgrf_callbacks.h:387
CBM_INDT_ACCEPT_CARGO
decides accepted types
Definition: newgrf_callbacks.h:374
NIHIndustry::GetInstance
const void * GetInstance(uint index) const
Get the instance given an index.
Definition: newgrf_debug_data.h:324
CBID_INDUSTRY_REFUSE_CARGO
Called to determine if the industry can still accept or refuse more cargo arrival.
Definition: newgrf_callbacks.h:182
CBM_VEHICLE_ARTIC_ENGINE
Add articulated engines (trains and road vehicles)
Definition: newgrf_callbacks.h:295
NIHVehicle::Resolve
uint Resolve(uint index, uint var, uint param, bool *avail) const
Resolve (action2) variable for a given index.
Definition: newgrf_debug_data.h:79
CBID_HOUSE_CONSTRUCTION_STATE_CHANGE
Called whenever the construction state of a house changes.
Definition: newgrf_callbacks.h:71
CBM_OBJ_SLOPE_CHECK
decides slope suitability
Definition: newgrf_callbacks.h:384
NIHVehicle::IsInspectable
bool IsInspectable(uint index) const
Is the item with the given index inspectable?
Definition: newgrf_debug_data.h:72
NIHStation::Resolve
uint Resolve(uint index, uint var, uint param, bool *avail) const
Resolve (action2) variable for a given index.
Definition: newgrf_debug_data.h:142
CBID_INDUSTRY_DECIDE_COLOUR
Called to determine the colour of an industry.
Definition: newgrf_callbacks.h:217
NIHStation::IsInspectable
bool IsInspectable(uint index) const
Is the item with the given index inspectable?
Definition: newgrf_debug_data.h:135
NIHHouse
Definition: newgrf_debug_data.h:199
RailTypeResolverObject::GetScope
ScopeResolver * GetScope(VarSpriteGroupScope scope=VSG_SCOPE_SELF, byte relative=0)
Get a resolver for the scope.
Definition: newgrf_railtype.h:45
CBM_IND_PROBABILITY
industry availability/probability callback
Definition: newgrf_callbacks.h:350
CBM_IND_MONTHLYPROD_CHANGE
controls monthly random production change
Definition: newgrf_callbacks.h:355
ScopeResolver::GetVariable
virtual uint32 GetVariable(byte variable, uint32 parameter, bool *available) const
Get a variable value.
Definition: newgrf_spritegroup.cpp:112
NIHStation
Definition: newgrf_debug_data.h:134
CBID_INDTILE_ACCEPT_CARGO
Called to determine which cargoes an industry should accept.
Definition: newgrf_callbacks.h:122
CBID_HOUSE_ALLOW_CONSTRUCTION
Determine whether the house can be built on the specified tile.
Definition: newgrf_callbacks.h:56
OrthogonalTileArea::tile
TileIndex tile
The base tile of the area.
Definition: tilearea_type.h:19
CBM_NO_BIT
static const int CBM_NO_BIT
Mask to show no bit needs to be enabled for the callback.
Definition: newgrf_debug_gui.cpp:106
NIHTown::SetStringParameters
void SetStringParameters(uint index) const
Set the string parameters to write the right data for a STRINGn.
Definition: newgrf_debug_data.h:499
HouseResolverObject::GetScope
ScopeResolver * GetScope(VarSpriteGroupScope scope=VSG_SCOPE_SELF, byte relative=0)
Get a resolver for the scope.
Definition: newgrf_house.h:61
NIHIndustry::Resolve
uint Resolve(uint index, uint var, uint param, bool *avail) const
Resolve (action2) variable for a given index.
Definition: newgrf_debug_data.h:329
NIHAirportTile::SetStringParameters
void SetStringParameters(uint index) const
Set the string parameters to write the right data for a STRINGn.
Definition: newgrf_debug_data.h:461
CBID_VEHICLE_32DAY_CALLBACK
Called for every vehicle every 32 days (not all on same date though).
Definition: newgrf_callbacks.h:146
CBID_AIRPTILE_DRAW_FOUNDATIONS
Called to determine the type (if any) of foundation to draw for an airport tile.
Definition: newgrf_callbacks.h:235
GetStationIndex
static StationID GetStationIndex(TileIndex t)
Get StationID from a tile.
Definition: station_map.h:29
CBID_VEHICLE_LOAD_AMOUNT
Determine the amount of cargo to load per unit of time when using gradual loading.
Definition: newgrf_callbacks.h:38
NIHRailType::SetStringParameters
void SetStringParameters(uint index) const
Set the string parameters to write the right data for a STRINGn.
Definition: newgrf_debug_data.h:425
CBID_VEHICLE_REFIT_CAPACITY
Refit capacity, the passed vehicle needs to have its ->cargo_type set to the cargo we are refitting t...
Definition: newgrf_callbacks.h:50
NIHIndustry
Definition: newgrf_debug_data.h:321
cpp_lengthof
#define cpp_lengthof(base, variable)
Gets the length of an array variable within a class.
Definition: stdafx.h:456
AirportTileResolverObject::GetScope
ScopeResolver * GetScope(VarSpriteGroupScope scope=VSG_SCOPE_SELF, byte relative=0)
Get a resolver for the scope.
Definition: newgrf_airporttiles.h:52
CBID_INDTILE_ANIM_NEXT_FRAME
Called to determine industry tile next animation frame.
Definition: newgrf_callbacks.h:104
CBM_IND_REFUSE_CARGO
option out of accepting cargo
Definition: newgrf_callbacks.h:360
GetHouseType
static HouseID GetHouseType(TileIndex t)
Get the type of this house, which is an index into the house spec array.
Definition: town_map.h:61
CBID_HOUSE_ANIMATION_START_STOP
Called for periodically starting or stopping the animation.
Definition: newgrf_callbacks.h:68
GetIndustryIndex
static IndustryID GetIndustryIndex(TileIndex t)
Get the industry ID of the given tile.
Definition: industry_map.h:65
NIHelper
Helper class to wrap some functionality/queries in.
Definition: newgrf_debug_gui.cpp:115
StationResolverObject::GetScope
ScopeResolver * GetScope(VarSpriteGroupScope scope=VSG_SCOPE_SELF, byte relative=0)
Get a resolver for the scope.
Definition: newgrf_station.h:62
CBM_INDT_ANIM_NEXT_FRAME
decides next animation frame
Definition: newgrf_callbacks.h:371
VehicleResolverObject::GetScope
ScopeResolver * GetScope(VarSpriteGroupScope scope=VSG_SCOPE_SELF, byte relative=0)
Get a resolver for the scope.
Definition: newgrf_engine.cpp:351
CBM_STATION_AVAIL
Availability of station in construction window.
Definition: newgrf_callbacks.h:305
CBID_STATION_ANIM_NEXT_FRAME
Called to determine station tile next animation frame.
Definition: newgrf_callbacks.h:190
NIHTown::GetGRFID
uint32 GetGRFID(uint index) const
Get the GRFID of the file that includes this item.
Definition: newgrf_debug_data.h:500
NIHHouse::GetGRFID
uint32 GetGRFID(uint index) const
Get the GRFID of the file that includes this item.
Definition: newgrf_debug_data.h:205
CBID_INDTILE_CARGO_ACCEPTANCE
Called to query the cargo acceptance of the industry tile.
Definition: newgrf_callbacks.h:119
Town
Town data structure.
Definition: town.h:55
NIHIndustry::GetSpec
const void * GetSpec(uint index) const
Get (NewGRF) specs given an index.
Definition: newgrf_debug_data.h:325
SpecializedStation< Station, false >::GetByTile
static Station * GetByTile(TileIndex tile)
Get the station belonging to a specific tile.
Definition: base_station_base.h:225
IndustriesResolverObject
Resolver for industries.
Definition: newgrf_industries.h:44
CBID_AIRPTILE_ANIMATION_SPEED
Called to indicate how long the current animation frame should last.
Definition: newgrf_callbacks.h:244
NIHObject::GetGRFID
uint32 GetGRFID(uint index) const
Get the GRFID of the file that includes this item.
Definition: newgrf_debug_data.h:392
CBM_IND_CARGO_SUFFIX
cargo sub-type display
Definition: newgrf_callbacks.h:356
NIHTown::GetParent
uint GetParent(uint index) const
Get the parent "window_number" of a given instance.
Definition: newgrf_debug_data.h:496
Pool::PoolItem<&_town_pool >::IsValidID
static bool IsValidID(size_t index)
Tests whether given index can be used to get valid (non-NULL) Titem.
Definition: pool_type.hpp:235
CBM_HOUSE_DRAW_FOUNDATIONS
decides if default foundations need to be drawn
Definition: newgrf_callbacks.h:327
CBM_HOUSE_DENY_DESTRUCTION
conditional protection
Definition: newgrf_callbacks.h:326
Object::GetByTile
static Object * GetByTile(TileIndex tile)
Get the object associated with a tile.
Definition: object_cmd.cpp:52
NIHIndustryTile::GetSpec
const void * GetSpec(uint index) const
Get (NewGRF) specs given an index.
Definition: newgrf_debug_data.h:253
INVALID_STRING_ID
static const StringID INVALID_STRING_ID
Constant representing an invalid string (16bit in case it is used in savegames)
Definition: strings_type.h:19
CBID_INDUSTRY_CARGO_SUFFIX
Called to determine text to display after cargo name.
Definition: newgrf_callbacks.h:164
ObjectResolverObject
A resolver object to be used with feature 0F spritegroups.
Definition: newgrf_object.h:124
NIHVehicle
Definition: newgrf_debug_data.h:71
HouseSpec::grf_prop
GRFFileProps grf_prop
Properties related the the grf file.
Definition: house.h:114
Vehicle::engine_type
EngineID engine_type
The type of engine used for this vehicle.
Definition: vehicle_base.h:288
GRFFilePropsBase::grffile
const struct GRFFile * grffile
grf file that introduced this entity
Definition: newgrf_commons.h:320
StationResolverObject
Station resolver.
Definition: newgrf_station.h:52
NIProperty
Representation of the data from a NewGRF property.
Definition: newgrf_debug_gui.cpp:85
CBID_AIRPTILE_ANIM_START_STOP
Called for periodically starting or stopping the animation.
Definition: newgrf_callbacks.h:238
CBM_OBJ_AUTOSLOPE
decides allowance of autosloping
Definition: newgrf_callbacks.h:389
NIHTown::GetPSAFirstPosition
const int32 * GetPSAFirstPosition(uint index, uint32 grfid) const
Gets the first position of the array containing the persistent storage.
Definition: newgrf_debug_data.h:510
NIHVehicle::SetStringParameters
void SetStringParameters(uint index) const
Set the string parameters to write the right data for a STRINGn.
Definition: newgrf_debug_data.h:76
NIHRailType::GetGRFID
uint32 GetGRFID(uint index) const
Get the GRFID of the file that includes this item.
Definition: newgrf_debug_data.h:426
CBID_OBJECT_COLOUR
Called to determine the colour of a town building.
Definition: newgrf_callbacks.h:268
CBID_STATION_SPRITE_LAYOUT
Choose a sprite layout to draw, instead of the standard 0-7 range.
Definition: newgrf_callbacks.h:44
ObjectSpec::GetByTile
static const ObjectSpec * GetByTile(TileIndex tile)
Get the specification associated with a tile.
Definition: newgrf_object.cpp:52
CBID_INDUSTRY_WINDOW_MORE_TEXT
Called to determine more text in the industry window.
Definition: newgrf_callbacks.h:173
NIHAirportTile::GetGRFID
uint32 GetGRFID(uint index) const
Get the GRFID of the file that includes this item.
Definition: newgrf_debug_data.h:462
Industry::GetByTile
static Industry * GetByTile(TileIndex tile)
Get the industry of the given tile.
Definition: industry.h:94
CBM_STATION_SLOPE_CHECK
Check slope of new station tiles.
Definition: newgrf_callbacks.h:309
CBID_HOUSE_ANIMATION_NEXT_FRAME
Determine the next animation frame for a house.
Definition: newgrf_callbacks.h:65
CBID_OBJECT_AUTOSLOPE
Called to determine if one can alter the ground below an object tile.
Definition: newgrf_callbacks.h:274
CBID_HOUSE_PRODUCE_CARGO
Called to determine how much cargo a town building produces.
Definition: newgrf_callbacks.h:131
NIHTown::GetPSASize
uint GetPSASize(uint index, uint32 grfid) const
Allows to know the size of the persistent storage.
Definition: newgrf_debug_data.h:502
CBID_VEHICLE_LENGTH
Vehicle length, returns the amount of 1/8&#39;s the vehicle is shorter for trains and RVs...
Definition: newgrf_callbacks.h:35
CBM_HOUSE_ALLOW_CONSTRUCTION
decide whether the house can be built on a given tile
Definition: newgrf_callbacks.h:316
CBID_HOUSE_CARGO_ACCEPTANCE
Called to decide how much cargo a town building can accept.
Definition: newgrf_callbacks.h:80
CBID_INDUSTRY_SPECIAL_EFFECT
Called to determine industry special effects.
Definition: newgrf_callbacks.h:176
CBID_INDUSTRY_PROD_CHANGE_BUILD
Called when industry is built to set initial production level.
Definition: newgrf_callbacks.h:280
NIHIndustryTile::Resolve
uint Resolve(uint index, uint var, uint param, bool *avail) const
Resolve (action2) variable for a given index.
Definition: newgrf_debug_data.h:257
AirportTileSpec::grf_prop
GRFFileProps grf_prop
properties related the the grf file
Definition: newgrf_airporttiles.h:70
NIFeature
Container for all information for a given feature.
Definition: newgrf_debug_gui.cpp:232
NIHTown
Definition: newgrf_debug_data.h:494
NIHRailType::GetSpec
const void * GetSpec(uint index) const
Get (NewGRF) specs given an index.
Definition: newgrf_debug_data.h:424
BaseVehicle::type
VehicleTypeByte type
Type of vehicle.
Definition: vehicle_type.h:54
CBID_INDUSTRY_PRODUCTION_CHANGE
Called on production changes, so it can be adjusted.
Definition: newgrf_callbacks.h:113
NIHTown::IsInspectable
bool IsInspectable(uint index) const
Is the item with the given index inspectable?
Definition: newgrf_debug_data.h:495
NIHIndustry::GetParent
uint GetParent(uint index) const
Get the parent "window_number" of a given instance.
Definition: newgrf_debug_data.h:323
IndustriesResolverObject::GetScope
ScopeResolver * GetScope(VarSpriteGroupScope scope=VSG_SCOPE_SELF, byte relative=0)
Get a resolver for the scope.
Definition: newgrf_industries.h:54
CBM_VEHICLE_VISUAL_EFFECT
Visual effects and wagon power (trains, road vehicles and ships)
Definition: newgrf_callbacks.h:291
CBID_OBJECT_ANIMATION_START_STOP
Called for periodically starting or stopping the animation.
Definition: newgrf_callbacks.h:262
CBM_IND_DECIDE_COLOUR
give a custom colour to newly build industries
Definition: newgrf_callbacks.h:361
CBM_INDT_SHAPE_CHECK
decides slope suitability
Definition: newgrf_callbacks.h:375
VehicleResolverObject::WO_CACHED
Resolve wagon overrides using TrainCache::cached_override.
Definition: newgrf_engine.h:54