OpenTTD Source: src/table/newgrf_debug_data.h Source File

OpenTTD Source 14.1

newgrf_debug_data.h
Go to the documentation of this file.
1 /*
2 * This file is part of OpenTTD.
3 * 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.
4 * 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.
5 * 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/>.
6 */
7
10 #include "../newgrf_house.h"
11 #include "../newgrf_engine.h"
12 #include "../newgrf_roadtype.h"
13 #include "../newgrf_roadstop.h"
14
15 /* Helper for filling property tables */
16 #define NIP(prop, base, variable, type, name) { name, [] (const void *b) -> const void * { return std::addressof(static_cast<const base *>(b)->variable); }, cpp_sizeof(base, variable), prop, type }
17 #define NIP_END() { nullptr, 0, 0, 0, 0 }
18
19 /* Helper for filling callback tables */
20 #define NIC(cb_id, base, variable, bit) { #cb_id, [] (const void *b) -> const void * { return std::addressof(static_cast<const base *>(b)->variable); }, cpp_sizeof(base, variable), bit, cb_id }
21 #define NIC_END() { nullptr, 0, 0, 0, 0 }
22
23 /* Helper for filling variable tables */
24 #define NIV(var, name) { name, var }
25 #define NIV_END() { nullptr, 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 NICV(CBID_VEHICLE_NAME, CBM_VEHICLE_NAME),
47 NIC_END()
48 };
49
50
51 static const NIVariable _niv_vehicles[] = {
52 NIV(0x40, "position in consist and length"),
53 NIV(0x41, "position and length of chain of same vehicles"),
54 NIV(0x42, "transported cargo types"),
55 NIV(0x43, "player info"),
56 NIV(0x44, "aircraft info"),
57 NIV(0x45, "curvature info"),
58 NIV(0x46, "motion counter"),
59 NIV(0x47, "vehicle cargo info"),
60 NIV(0x48, "vehicle type info"),
61 NIV(0x49, "year of construction"),
62 NIV(0x4A, "current rail/road type info"),
63 NIV(0x4B, "long date of last service"),
64 NIV(0x4C, "current max speed"),
65 NIV(0x4D, "position in articulated vehicle"),
66 NIV(0x60, "count vehicle id occurrences"),
67 // 0x61 not useful, since it requires register 0x10F
68 NIV(0x62, "curvature/position difference to other vehicle"),
69 NIV(0x63, "tile compatibility wrt. track-type"),
70 NIV_END()
71 };
72
73 class NIHVehicle : public NIHelper {
74 bool IsInspectable(uint index) const override { return Vehicle::Get(index)->GetGRF() != nullptr; }
75 uint GetParent(uint index) const override { const Vehicle *first = Vehicle::Get(index)->First(); return GetInspectWindowNumber(GetGrfSpecFeature(first->type), first->index); }
76 const void *GetInstance(uint index)const override { return Vehicle::Get(index); }
77 const void *GetSpec(uint index) const override { return Vehicle::Get(index)->GetEngine(); }
78 void SetStringParameters(uint index) const override { this->SetSimpleStringParameters(STR_VEHICLE_NAME, index); }
79 uint32_t GetGRFID(uint index) const override { return Vehicle::Get(index)->GetGRFID(); }
80
81 uint Resolve(uint index, uint var, uint param, bool *avail) const override
82 {
83 Vehicle *v = Vehicle::Get(index);
84 VehicleResolverObject ro(v->engine_type, v, VehicleResolverObject::WO_CACHED);
85 return ro.GetScope(VSG_SCOPE_SELF)->GetVariable(var, param, avail);
86 }
87 };
88
89 static const NIFeature _nif_vehicle = {
90 nullptr,
91 _nic_vehicles,
92 _niv_vehicles,
93 new NIHVehicle(),
94 };
95
96
97 /*** NewGRF station (tiles) ***/
98
99 #define NICS(cb_id, bit) NIC(cb_id, StationSpec, callback_mask, bit)
100 static const NICallback _nic_stations[] = {
101 NICS(CBID_STATION_AVAILABILITY, CBM_STATION_AVAIL),
102 NICS(CBID_STATION_SPRITE_LAYOUT, CBM_STATION_SPRITE_LAYOUT),
103 NICS(CBID_STATION_TILE_LAYOUT, CBM_NO_BIT),
104 NICS(CBID_STATION_ANIM_START_STOP, CBM_NO_BIT),
105 NICS(CBID_STATION_ANIM_NEXT_FRAME, CBM_STATION_ANIMATION_NEXT_FRAME),
106 NICS(CBID_STATION_ANIMATION_SPEED, CBM_STATION_ANIMATION_SPEED),
107 NICS(CBID_STATION_LAND_SLOPE_CHECK, CBM_STATION_SLOPE_CHECK),
108 NIC_END()
109 };
110
111 static const NIVariable _niv_stations[] = {
112 NIV(0x40, "platform info and relative position"),
113 NIV(0x41, "platform info and relative position for individually built sections"),
114 NIV(0x42, "terrain and track type"),
115 NIV(0x43, "player info"),
116 NIV(0x44, "path signalling info"),
117 NIV(0x45, "rail continuation info"),
118 NIV(0x46, "platform info and relative position from middle"),
119 NIV(0x47, "platform info and relative position from middle for individually built sections"),
120 NIV(0x48, "bitmask of accepted cargoes"),
121 NIV(0x49, "platform info and relative position of same-direction section"),
122 NIV(0x4A, "current animation frame"),
123 NIV(0x60, "amount of cargo waiting"),
124 NIV(0x61, "time since last cargo pickup"),
125 NIV(0x62, "rating of cargo"),
126 NIV(0x63, "time spent on route"),
127 NIV(0x64, "information about last vehicle picking cargo up"),
128 NIV(0x65, "amount of cargo acceptance"),
129 NIV(0x66, "animation frame of nearby tile"),
130 NIV(0x67, "land info of nearby tiles"),
131 NIV(0x68, "station info of nearby tiles"),
132 NIV(0x69, "information about cargo accepted in the past"),
133 NIV(0x6A, "GRFID of nearby station tiles"),
134 NIV(0x6B, "station ID of nearby tiles"),
135 NIV_END()
136 };
137
138 class NIHStation : public NIHelper {
139 bool IsInspectable(uint index) const override { return GetStationSpec(index) != nullptr; }
140 uint GetParent(uint index) const override { return GetInspectWindowNumber(GSF_FAKE_TOWNS, Station::GetByTile(index)->town->index); }
141 const void *GetInstance(uint ) const override { return nullptr; }
142 const void *GetSpec(uint index) const override { return GetStationSpec(index); }
143 void SetStringParameters(uint index) const override { this->SetObjectAtStringParameters(STR_STATION_NAME, GetStationIndex(index), index); }
144 uint32_t GetGRFID(uint index) const override { return (this->IsInspectable(index)) ? GetStationSpec(index)->grf_prop.grffile->grfid : 0; }
145
146 uint Resolve(uint index, uint var, uint param, bool *avail) const override
147 {
148 StationResolverObject ro(GetStationSpec(index), Station::GetByTile(index), index);
149 return ro.GetScope(VSG_SCOPE_SELF)->GetVariable(var, param, avail);
150 }
151 };
152
153 static const NIFeature _nif_station = {
154 nullptr,
155 _nic_stations,
156 _niv_stations,
157 new NIHStation(),
158 };
159
160
161 /*** NewGRF house tiles ***/
162
163 #define NICH(cb_id, bit) NIC(cb_id, HouseSpec, callback_mask, bit)
164 static const NICallback _nic_house[] = {
165 NICH(CBID_HOUSE_ALLOW_CONSTRUCTION, CBM_HOUSE_ALLOW_CONSTRUCTION),
166 NICH(CBID_HOUSE_ANIMATION_NEXT_FRAME, CBM_HOUSE_ANIMATION_NEXT_FRAME),
167 NICH(CBID_HOUSE_ANIMATION_START_STOP, CBM_HOUSE_ANIMATION_START_STOP),
168 NICH(CBID_HOUSE_CONSTRUCTION_STATE_CHANGE, CBM_HOUSE_CONSTRUCTION_STATE_CHANGE),
169 NICH(CBID_HOUSE_COLOUR, CBM_HOUSE_COLOUR),
170 NICH(CBID_HOUSE_CARGO_ACCEPTANCE, CBM_HOUSE_CARGO_ACCEPTANCE),
171 NICH(CBID_HOUSE_ANIMATION_SPEED, CBM_HOUSE_ANIMATION_SPEED),
172 NICH(CBID_HOUSE_DESTRUCTION, CBM_HOUSE_DESTRUCTION),
173 NICH(CBID_HOUSE_ACCEPT_CARGO, CBM_HOUSE_ACCEPT_CARGO),
174 NICH(CBID_HOUSE_PRODUCE_CARGO, CBM_HOUSE_PRODUCE_CARGO),
175 NICH(CBID_HOUSE_DENY_DESTRUCTION, CBM_HOUSE_DENY_DESTRUCTION),
176 NICH(CBID_HOUSE_WATCHED_CARGO_ACCEPTED, CBM_NO_BIT),
177 NICH(CBID_HOUSE_CUSTOM_NAME, CBM_NO_BIT),
178 NICH(CBID_HOUSE_DRAW_FOUNDATIONS, CBM_HOUSE_DRAW_FOUNDATIONS),
179 NICH(CBID_HOUSE_AUTOSLOPE, CBM_HOUSE_AUTOSLOPE),
180 NIC_END()
181 };
182
183 static const NIVariable _niv_house[] = {
184 NIV(0x40, "construction state of tile and pseudo-random value"),
185 NIV(0x41, "age of building in years"),
186 NIV(0x42, "town zone"),
187 NIV(0x43, "terrain type"),
188 NIV(0x44, "building counts"),
189 NIV(0x45, "town expansion bits"),
190 NIV(0x46, "current animation frame"),
191 NIV(0x47, "xy coordinate of the building"),
192 NIV(0x60, "other building counts (old house type)"),
193 NIV(0x61, "other building counts (new house type)"),
194 NIV(0x62, "land info of nearby tiles"),
195 NIV(0x63, "current animation frame of nearby house tile"),
196 NIV(0x64, "cargo acceptance history of nearby stations"),
197 NIV(0x65, "distance of nearest house matching a given criterion"),
198 NIV(0x66, "class and ID of nearby house tile"),
199 NIV(0x67, "GRFID of nearby house tile"),
200 NIV_END()
201 };
202
203 class NIHHouse : public NIHelper {
204 bool IsInspectable(uint index) const override { return HouseSpec::Get(GetHouseType(index))->grf_prop.grffile != nullptr; }
205 uint GetParent(uint index) const override { return GetInspectWindowNumber(GSF_FAKE_TOWNS, GetTownIndex(index)); }
206 const void *GetInstance(uint)const override { return nullptr; }
207 const void *GetSpec(uint index) const override { return HouseSpec::Get(GetHouseType(index)); }
208 void SetStringParameters(uint index) const override { this->SetObjectAtStringParameters(STR_TOWN_NAME, GetTownIndex(index), index); }
209 uint32_t GetGRFID(uint index) const override { return (this->IsInspectable(index)) ? HouseSpec::Get(GetHouseType(index))->grf_prop.grffile->grfid : 0; }
210
211 uint Resolve(uint index, uint var, uint param, bool *avail) const override
212 {
213 HouseResolverObject ro(GetHouseType(index), index, Town::GetByTile(index));
214 return ro.GetScope(VSG_SCOPE_SELF)->GetVariable(var, param, avail);
215 }
216 };
217
218 static const NIFeature _nif_house = {
219 nullptr,
220 _nic_house,
221 _niv_house,
222 new NIHHouse(),
223 };
224
225
226 /*** NewGRF industry tiles ***/
227
228 #define NICIT(cb_id, bit) NIC(cb_id, IndustryTileSpec, callback_mask, bit)
229 static const NICallback _nic_industrytiles[] = {
230 NICIT(CBID_INDTILE_ANIM_START_STOP, CBM_NO_BIT),
231 NICIT(CBID_INDTILE_ANIM_NEXT_FRAME, CBM_INDT_ANIM_NEXT_FRAME),
232 NICIT(CBID_INDTILE_ANIMATION_SPEED, CBM_INDT_ANIM_SPEED),
233 NICIT(CBID_INDTILE_CARGO_ACCEPTANCE, CBM_INDT_CARGO_ACCEPTANCE),
234 NICIT(CBID_INDTILE_ACCEPT_CARGO, CBM_INDT_ACCEPT_CARGO),
235 NICIT(CBID_INDTILE_SHAPE_CHECK, CBM_INDT_SHAPE_CHECK),
236 NICIT(CBID_INDTILE_DRAW_FOUNDATIONS, CBM_INDT_DRAW_FOUNDATIONS),
237 NICIT(CBID_INDTILE_AUTOSLOPE, CBM_INDT_AUTOSLOPE),
238 NIC_END()
239 };
240
241 static const NIVariable _niv_industrytiles[] = {
242 NIV(0x40, "construction state of tile"),
243 NIV(0x41, "ground type"),
244 NIV(0x42, "current town zone in nearest town"),
245 NIV(0x43, "relative position"),
246 NIV(0x44, "animation frame"),
247 NIV(0x60, "land info of nearby tiles"),
248 NIV(0x61, "animation stage of nearby tiles"),
249 NIV(0x62, "get industry or airport tile ID at offset"),
250 NIV_END()
251 };
252
253 class NIHIndustryTile : public NIHelper {
254 bool IsInspectable(uint index) const override { return GetIndustryTileSpec(GetIndustryGfx(index))->grf_prop.grffile != nullptr; }
255 uint GetParent(uint index) const override { return GetInspectWindowNumber(GSF_INDUSTRIES, GetIndustryIndex(index)); }
256 const void *GetInstance(uint)const override { return nullptr; }
257 const void *GetSpec(uint index) const override { return GetIndustryTileSpec(GetIndustryGfx(index)); }
258 void SetStringParameters(uint index) const override { this->SetObjectAtStringParameters(STR_INDUSTRY_NAME, GetIndustryIndex(index), index); }
259 uint32_t GetGRFID(uint index) const override { return (this->IsInspectable(index)) ? GetIndustryTileSpec(GetIndustryGfx(index))->grf_prop.grffile->grfid : 0; }
260
261 uint Resolve(uint index, uint var, uint param, bool *avail) const override
262 {
263 IndustryTileResolverObject ro(GetIndustryGfx(index), index, Industry::GetByTile(index));
264 return ro.GetScope(VSG_SCOPE_SELF)->GetVariable(var, param, avail);
265 }
266 };
267
268 static const NIFeature _nif_industrytile = {
269 nullptr,
270 _nic_industrytiles,
271 _niv_industrytiles,
272 new NIHIndustryTile(),
273 };
274
275
276 /*** NewGRF industries ***/
277
278 static const NIProperty _nip_industries[] = {
279 NIP(0x25, Industry, produced[ 0].cargo, NIT_CARGO, "produced cargo 0"),
280 NIP(0x25, Industry, produced[ 1].cargo, NIT_CARGO, "produced cargo 1"),
281 NIP(0x25, Industry, produced[ 2].cargo, NIT_CARGO, "produced cargo 2"),
282 NIP(0x25, Industry, produced[ 3].cargo, NIT_CARGO, "produced cargo 3"),
283 NIP(0x25, Industry, produced[ 4].cargo, NIT_CARGO, "produced cargo 4"),
284 NIP(0x25, Industry, produced[ 5].cargo, NIT_CARGO, "produced cargo 5"),
285 NIP(0x25, Industry, produced[ 6].cargo, NIT_CARGO, "produced cargo 6"),
286 NIP(0x25, Industry, produced[ 7].cargo, NIT_CARGO, "produced cargo 7"),
287 NIP(0x25, Industry, produced[ 8].cargo, NIT_CARGO, "produced cargo 8"),
288 NIP(0x25, Industry, produced[ 9].cargo, NIT_CARGO, "produced cargo 9"),
289 NIP(0x25, Industry, produced[10].cargo, NIT_CARGO, "produced cargo 10"),
290 NIP(0x25, Industry, produced[11].cargo, NIT_CARGO, "produced cargo 11"),
291 NIP(0x25, Industry, produced[12].cargo, NIT_CARGO, "produced cargo 12"),
292 NIP(0x25, Industry, produced[13].cargo, NIT_CARGO, "produced cargo 13"),
293 NIP(0x25, Industry, produced[14].cargo, NIT_CARGO, "produced cargo 14"),
294 NIP(0x25, Industry, produced[15].cargo, NIT_CARGO, "produced cargo 15"),
295 NIP(0x26, Industry, accepted[ 0].cargo, NIT_CARGO, "accepted cargo 0"),
296 NIP(0x26, Industry, accepted[ 1].cargo, NIT_CARGO, "accepted cargo 1"),
297 NIP(0x26, Industry, accepted[ 2].cargo, NIT_CARGO, "accepted cargo 2"),
298 NIP(0x26, Industry, accepted[ 3].cargo, NIT_CARGO, "accepted cargo 3"),
299 NIP(0x26, Industry, accepted[ 4].cargo, NIT_CARGO, "accepted cargo 4"),
300 NIP(0x26, Industry, accepted[ 5].cargo, NIT_CARGO, "accepted cargo 5"),
301 NIP(0x26, Industry, accepted[ 6].cargo, NIT_CARGO, "accepted cargo 6"),
302 NIP(0x26, Industry, accepted[ 7].cargo, NIT_CARGO, "accepted cargo 7"),
303 NIP(0x26, Industry, accepted[ 8].cargo, NIT_CARGO, "accepted cargo 8"),
304 NIP(0x26, Industry, accepted[ 9].cargo, NIT_CARGO, "accepted cargo 9"),
305 NIP(0x26, Industry, accepted[10].cargo, NIT_CARGO, "accepted cargo 10"),
306 NIP(0x26, Industry, accepted[11].cargo, NIT_CARGO, "accepted cargo 11"),
307 NIP(0x26, Industry, accepted[12].cargo, NIT_CARGO, "accepted cargo 12"),
308 NIP(0x26, Industry, accepted[13].cargo, NIT_CARGO, "accepted cargo 13"),
309 NIP(0x26, Industry, accepted[14].cargo, NIT_CARGO, "accepted cargo 14"),
310 NIP(0x26, Industry, accepted[15].cargo, NIT_CARGO, "accepted cargo 15"),
311 NIP_END()
312 };
313
314 #define NICI(cb_id, bit) NIC(cb_id, IndustrySpec, callback_mask, bit)
315 static const NICallback _nic_industries[] = {
316 NICI(CBID_INDUSTRY_PROBABILITY, CBM_IND_PROBABILITY),
317 NICI(CBID_INDUSTRY_LOCATION, CBM_IND_LOCATION),
318 NICI(CBID_INDUSTRY_PRODUCTION_CHANGE, CBM_IND_PRODUCTION_CHANGE),
319 NICI(CBID_INDUSTRY_MONTHLYPROD_CHANGE, CBM_IND_MONTHLYPROD_CHANGE),
320 NICI(CBID_INDUSTRY_CARGO_SUFFIX, CBM_IND_CARGO_SUFFIX),
321 NICI(CBID_INDUSTRY_FUND_MORE_TEXT, CBM_IND_FUND_MORE_TEXT),
322 NICI(CBID_INDUSTRY_WINDOW_MORE_TEXT, CBM_IND_WINDOW_MORE_TEXT),
323 NICI(CBID_INDUSTRY_SPECIAL_EFFECT, CBM_IND_SPECIAL_EFFECT),
324 NICI(CBID_INDUSTRY_REFUSE_CARGO, CBM_IND_REFUSE_CARGO),
325 NICI(CBID_INDUSTRY_DECIDE_COLOUR, CBM_IND_DECIDE_COLOUR),
326 NICI(CBID_INDUSTRY_INPUT_CARGO_TYPES, CBM_IND_INPUT_CARGO_TYPES),
327 NICI(CBID_INDUSTRY_OUTPUT_CARGO_TYPES, CBM_IND_OUTPUT_CARGO_TYPES),
328 NICI(CBID_INDUSTRY_PROD_CHANGE_BUILD, CBM_IND_PROD_CHANGE_BUILD),
329 NIC_END()
330 };
331
332 static const NIVariable _niv_industries[] = {
333 NIV(0x40, "waiting cargo 0"),
334 NIV(0x41, "waiting cargo 1"),
335 NIV(0x42, "waiting cargo 2"),
336 NIV(0x43, "distance to closest dry/land tile"),
337 NIV(0x44, "layout number"),
338 NIV(0x45, "player info"),
339 NIV(0x46, "industry construction date"),
340 NIV(0x60, "get industry tile ID at offset"),
341 NIV(0x61, "get random tile bits at offset"),
342 NIV(0x62, "land info of nearby tiles"),
343 NIV(0x63, "animation stage of nearby tiles"),
344 NIV(0x64, "distance on nearest industry with given type"),
345 NIV(0x65, "get town zone and Manhattan distance of closest town"),
346 NIV(0x66, "get square of Euclidean distance of closes town"),
347 NIV(0x67, "count of industry and distance of closest instance"),
348 NIV(0x68, "count of industry and distance of closest instance with layout filter"),
349 NIV(0x69, "produced cargo waiting"),
350 NIV(0x6A, "cargo produced this month"),
351 NIV(0x6B, "cargo transported this month"),
352 NIV(0x6C, "cargo produced last month"),
353 NIV(0x6D, "cargo transported last month"),
354 NIV(0x6E, "date since cargo was delivered"),
355 NIV(0x6F, "waiting input cargo"),
356 NIV(0x70, "production rate"),
357 NIV(0x71, "percentage of cargo transported last month"),
358 NIV_END()
359 };
360
361 class NIHIndustry : public NIHelper {
362 bool IsInspectable(uint index) const override { return GetIndustrySpec(Industry::Get(index)->type)->grf_prop.grffile != nullptr; }
363 uint GetParent(uint index) const override { return GetInspectWindowNumber(GSF_FAKE_TOWNS, Industry::Get(index)->town->index); }
364 const void *GetInstance(uint index)const override { return Industry::Get(index); }
365 const void *GetSpec(uint index) const override { return GetIndustrySpec(Industry::Get(index)->type); }
366 void SetStringParameters(uint index) const override { this->SetSimpleStringParameters(STR_INDUSTRY_NAME, index); }
367 uint32_t GetGRFID(uint index) const override { return (this->IsInspectable(index)) ? GetIndustrySpec(Industry::Get(index)->type)->grf_prop.grffile->grfid : 0; }
368
369 uint Resolve(uint index, uint var, uint param, bool *avail) const override
370 {
371 Industry *i = Industry::Get(index);
372 IndustriesResolverObject ro(i->location.tile, i, i->type);
373 return ro.GetScope(VSG_SCOPE_SELF)->GetVariable(var, param, avail);
374 }
375
376 uint GetPSASize(uint, uint32_t) const override { return cpp_lengthof(PersistentStorage, storage); }
377
378 const int32_t *GetPSAFirstPosition(uint index, uint32_t) const override
379 {
380 const Industry *i = (const Industry *)this->GetInstance(index);
381 if (i->psa == nullptr) return nullptr;
382 return (int32_t *)(&i->psa->storage);
383 }
384 };
385
386 static const NIFeature _nif_industry = {
387 _nip_industries,
388 _nic_industries,
389 _niv_industries,
390 new NIHIndustry(),
391 };
392
393
394 /*** NewGRF objects ***/
395
396 #define NICO(cb_id, bit) NIC(cb_id, ObjectSpec, callback_mask, bit)
397 static const NICallback _nic_objects[] = {
398 NICO(CBID_OBJECT_LAND_SLOPE_CHECK, CBM_OBJ_SLOPE_CHECK),
399 NICO(CBID_OBJECT_ANIMATION_NEXT_FRAME, CBM_OBJ_ANIMATION_NEXT_FRAME),
400 NICO(CBID_OBJECT_ANIMATION_START_STOP, CBM_NO_BIT),
401 NICO(CBID_OBJECT_ANIMATION_SPEED, CBM_OBJ_ANIMATION_SPEED),
402 NICO(CBID_OBJECT_COLOUR, CBM_OBJ_COLOUR),
403 NICO(CBID_OBJECT_FUND_MORE_TEXT, CBM_OBJ_FUND_MORE_TEXT),
404 NICO(CBID_OBJECT_AUTOSLOPE, CBM_OBJ_AUTOSLOPE),
405 NIC_END()
406 };
407
408 static const NIVariable _niv_objects[] = {
409 NIV(0x40, "relative position"),
410 NIV(0x41, "tile information"),
411 NIV(0x42, "construction date"),
412 NIV(0x43, "animation counter"),
413 NIV(0x44, "object founder"),
414 NIV(0x45, "get town zone and Manhattan distance of closest town"),
415 NIV(0x46, "get square of Euclidean distance of closes town"),
416 NIV(0x47, "colour"),
417 NIV(0x48, "view"),
418 NIV(0x60, "get object ID at offset"),
419 NIV(0x61, "get random tile bits at offset"),
420 NIV(0x62, "land info of nearby tiles"),
421 NIV(0x63, "animation stage of nearby tiles"),
422 NIV(0x64, "distance on nearest object with given type"),
423 NIV_END()
424 };
425
426 class NIHObject : public NIHelper {
427 bool IsInspectable(uint index) const override { return ObjectSpec::GetByTile(index)->grf_prop.grffile != nullptr; }
428 uint GetParent(uint index) const override { return GetInspectWindowNumber(GSF_FAKE_TOWNS, Object::GetByTile(index)->town->index); }
429 const void *GetInstance(uint index)const override { return Object::GetByTile(index); }
430 const void *GetSpec(uint index) const override { return ObjectSpec::GetByTile(index); }
431 void SetStringParameters(uint index) const override { this->SetObjectAtStringParameters(STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT, INVALID_STRING_ID, index); }
432 uint32_t GetGRFID(uint index) const override { return (this->IsInspectable(index)) ? ObjectSpec::GetByTile(index)->grf_prop.grffile->grfid : 0; }
433
434 uint Resolve(uint index, uint var, uint param, bool *avail) const override
435 {
436 ObjectResolverObject ro(ObjectSpec::GetByTile(index), Object::GetByTile(index), index);
437 return ro.GetScope(VSG_SCOPE_SELF)->GetVariable(var, param, avail);
438 }
439 };
440
441 static const NIFeature _nif_object = {
442 nullptr,
443 _nic_objects,
444 _niv_objects,
445 new NIHObject(),
446 };
447
448
449 /*** NewGRF rail types ***/
450
451 static const NIVariable _niv_railtypes[] = {
452 NIV(0x40, "terrain type"),
453 NIV(0x41, "enhanced tunnels"),
454 NIV(0x42, "level crossing status"),
455 NIV(0x43, "construction date"),
456 NIV(0x44, "town zone"),
457 NIV_END()
458 };
459
460 class NIHRailType : public NIHelper {
461 bool IsInspectable(uint) const override { return true; }
462 uint GetParent(uint) const override { return UINT32_MAX; }
463 const void *GetInstance(uint) const override { return nullptr; }
464 const void *GetSpec(uint) const override { return nullptr; }
465 void SetStringParameters(uint index) const override { this->SetObjectAtStringParameters(STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE, INVALID_STRING_ID, index); }
466 uint32_t GetGRFID(uint) const override { return 0; }
467
468 uint Resolve(uint index, uint var, uint param, bool *avail) const override
469 {
470 /* There is no unique GRFFile for the tile. Multiple GRFs can define different parts of the railtype.
471 * However, currently the NewGRF Debug GUI does not display variables depending on the GRF (like 0x7F) anyway. */
472 RailTypeResolverObject ro(nullptr, index, TCX_NORMAL, RTSG_END);
473 return ro.GetScope(VSG_SCOPE_SELF)->GetVariable(var, param, avail);
474 }
475 };
476
477 static const NIFeature _nif_railtype = {
478 nullptr,
479 nullptr,
480 _niv_railtypes,
481 new NIHRailType(),
482 };
483
484
485 /*** NewGRF airport tiles ***/
486
487 #define NICAT(cb_id, bit) NIC(cb_id, AirportTileSpec, callback_mask, bit)
488 static const NICallback _nic_airporttiles[] = {
489 NICAT(CBID_AIRPTILE_DRAW_FOUNDATIONS, CBM_AIRT_DRAW_FOUNDATIONS),
490 NICAT(CBID_AIRPTILE_ANIM_START_STOP, CBM_NO_BIT),
491 NICAT(CBID_AIRPTILE_ANIM_NEXT_FRAME, CBM_AIRT_ANIM_NEXT_FRAME),
492 NICAT(CBID_AIRPTILE_ANIMATION_SPEED, CBM_AIRT_ANIM_SPEED),
493 NIC_END()
494 };
495
496 class NIHAirportTile : public NIHelper {
497 bool IsInspectable(uint index) const override { return AirportTileSpec::Get(GetAirportGfx(index))->grf_prop.grffile != nullptr; }
498 uint GetParent(uint index) const override { return GetInspectWindowNumber(GSF_AIRPORTS, GetStationIndex(index)); }
499 const void *GetInstance(uint)const override { return nullptr; }
500 const void *GetSpec(uint index) const override { return AirportTileSpec::Get(GetAirportGfx(index)); }
501 void SetStringParameters(uint index) const override { this->SetObjectAtStringParameters(STR_STATION_NAME, GetStationIndex(index), index); }
502 uint32_t GetGRFID(uint index) const override { return (this->IsInspectable(index)) ? AirportTileSpec::Get(GetAirportGfx(index))->grf_prop.grffile->grfid : 0; }
503
504 uint Resolve(uint index, uint var, uint param, bool *avail) const override
505 {
506 AirportTileResolverObject ro(AirportTileSpec::GetByTile(index), index, Station::GetByTile(index));
507 return ro.GetScope(VSG_SCOPE_SELF)->GetVariable(var, param, avail);
508 }
509 };
510
511 static const NIFeature _nif_airporttile = {
512 nullptr,
513 _nic_airporttiles,
514 _niv_industrytiles, // Yes, they share this (at least now)
515 new NIHAirportTile(),
516 };
517
518
519 /*** NewGRF airports ***/
520
521 static const NIVariable _niv_airports[] = {
522 NIV(0x40, "Layout number"),
523 NIV(0x48, "bitmask of accepted cargoes"),
524 NIV(0x60, "amount of cargo waiting"),
525 NIV(0x61, "time since last cargo pickup"),
526 NIV(0x62, "rating of cargo"),
527 NIV(0x63, "time spent on route"),
528 NIV(0x64, "information about last vehicle picking cargo up"),
529 NIV(0x65, "amount of cargo acceptance"),
530 NIV(0x69, "information about cargo accepted in the past"),
531 NIV(0xF1, "type of the airport"),
532 NIV(0xF6, "airport block status"),
533 NIV(0xFA, "built date"),
534 NIV_END()
535 };
536
537 class NIHAirport : public NIHelper {
538 bool IsInspectable(uint index) const override { return AirportSpec::Get(Station::Get(index)->airport.type)->grf_prop.grffile != nullptr; }
539 uint GetParent(uint index) const override { return GetInspectWindowNumber(GSF_FAKE_TOWNS, Station::Get(index)->town->index); }
540 const void *GetInstance(uint index)const override { return Station::Get(index); }
541 const void *GetSpec(uint index) const override { return AirportSpec::Get(Station::Get(index)->airport.type); }
542 void SetStringParameters(uint index) const override { this->SetObjectAtStringParameters(STR_STATION_NAME, index, Station::Get(index)->airport.tile); }
543 uint32_t GetGRFID(uint index) const override { return (this->IsInspectable(index)) ? AirportSpec::Get(Station::Get(index)->airport.type)->grf_prop.grffile->grfid : 0; }
544
545 uint Resolve(uint index, uint var, uint param, bool *avail) const override
546 {
547 Station *st = Station::Get(index);
548 AirportResolverObject ro(st->airport.tile, st, st->airport.type, st->airport.layout);
549 return ro.GetScope(VSG_SCOPE_SELF)->GetVariable(var, param, avail);
550 }
551
552 uint GetPSASize(uint, uint32_t) const override { return cpp_lengthof(PersistentStorage, storage); }
553
554 const int32_t *GetPSAFirstPosition(uint index, uint32_t) const override
555 {
556 const Station *st = (const Station *)this->GetInstance(index);
557 if (st->airport.psa == nullptr) return nullptr;
558 return (int32_t *)(&st->airport.psa->storage);
559 }
560 };
561
562 static const NIFeature _nif_airport = {
563 nullptr,
564 nullptr,
565 _niv_airports,
566 new NIHAirport(),
567 };
568
569
570 /*** NewGRF towns ***/
571
572 static const NIVariable _niv_towns[] = {
573 NIV(0x40, "larger town effect on this town"),
574 NIV(0x41, "town index"),
575 NIV(0x82, "population"),
576 NIV(0x94, "zone radius 0"),
577 NIV(0x96, "zone radius 1"),
578 NIV(0x98, "zone radius 2"),
579 NIV(0x9A, "zone radius 3"),
580 NIV(0x9C, "zone radius 4"),
581 NIV(0xB6, "number of buildings"),
582 NIV_END()
583 };
584
585 class NIHTown : public NIHelper {
586 bool IsInspectable(uint index) const override { return Town::IsValidID(index); }
587 uint GetParent(uint) const override { return UINT32_MAX; }
588 const void *GetInstance(uint index)const override { return Town::Get(index); }
589 const void *GetSpec(uint) const override { return nullptr; }
590 void SetStringParameters(uint index) const override { this->SetSimpleStringParameters(STR_TOWN_NAME, index); }
591 uint32_t GetGRFID(uint) const override { return 0; }
592 bool PSAWithParameter() const override { return true; }
593 uint GetPSASize(uint, uint32_t) const override { return cpp_lengthof(PersistentStorage, storage); }
594
595 uint Resolve(uint index, uint var, uint param, bool *avail) const override
596 {
597 TownResolverObject ro(nullptr, Town::Get(index), true);
598 return ro.GetScope(VSG_SCOPE_SELF)->GetVariable(var, param, avail);
599 }
600
601 const int32_t *GetPSAFirstPosition(uint index, uint32_t grfid) const override
602 {
603 Town *t = Town::Get(index);
604
605 for (const auto &it : t->psa_list) {
606 if (it->grfid == grfid) return &it->storage[0];
607 }
608
609 return nullptr;
610 }
611 };
612
613 static const NIFeature _nif_town = {
614 nullptr,
615 nullptr,
616 _niv_towns,
617 new NIHTown(),
618 };
619
620 /*** NewGRF road types ***/
621
622 static const NIVariable _niv_roadtypes[] = {
623 NIV(0x40, "terrain type"),
624 NIV(0x41, "enhanced tunnels"),
625 NIV(0x42, "level crossing status"),
626 NIV(0x43, "construction date"),
627 NIV(0x44, "town zone"),
628 NIV_END()
629 };
630
631 class NIHRoadType : public NIHelper {
632 bool IsInspectable(uint) const override { return true; }
633 uint GetParent(uint) const override { return UINT32_MAX; }
634 const void *GetInstance(uint) const override { return nullptr; }
635 const void *GetSpec(uint) const override { return nullptr; }
636 void SetStringParameters(uint index) const override { this->SetObjectAtStringParameters(STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE, INVALID_STRING_ID, index); }
637 uint32_t GetGRFID(uint) const override { return 0; }
638
639 uint Resolve(uint index, uint var, uint param, bool *avail) const override
640 {
641 /* There is no unique GRFFile for the tile. Multiple GRFs can define different parts of the railtype.
642 * However, currently the NewGRF Debug GUI does not display variables depending on the GRF (like 0x7F) anyway. */
643 RoadTypeResolverObject ro(nullptr, index, TCX_NORMAL, ROTSG_END);
644 return ro.GetScope(VSG_SCOPE_SELF)->GetVariable(var, param, avail);
645 }
646 };
647
648 static const NIFeature _nif_roadtype = {
649 nullptr,
650 nullptr,
651 _niv_roadtypes,
652 new NIHRoadType(),
653 };
654
655 static const NIFeature _nif_tramtype = {
656 nullptr,
657 nullptr,
658 _niv_roadtypes,
659 new NIHRoadType(),
660 };
661
662 #define NICRS(cb_id, bit) NIC(cb_id, RoadStopSpec, callback_mask, bit)
663 static const NICallback _nic_roadstops[] = {
664 NICRS(CBID_STATION_AVAILABILITY, CBM_ROAD_STOP_AVAIL),
665 NICRS(CBID_STATION_ANIM_START_STOP, CBM_NO_BIT),
666 NICRS(CBID_STATION_ANIM_NEXT_FRAME, CBM_ROAD_STOP_ANIMATION_NEXT_FRAME),
667 NICRS(CBID_STATION_ANIMATION_SPEED, CBM_ROAD_STOP_ANIMATION_SPEED),
668 NIC_END()
669 };
670
671 static const NIVariable _nif_roadstops[] = {
672 NIV(0x40, "view/rotation"),
673 NIV(0x41, "stop type"),
674 NIV(0x42, "terrain type"),
675 NIV(0x43, "road type"),
676 NIV(0x44, "tram type"),
677 NIV(0x45, "town zone and Manhattan distance of town"),
678 NIV(0x46, "square of Euclidean distance of town"),
679 NIV(0x47, "player info"),
680 NIV(0x48, "bitmask of accepted cargoes"),
681 NIV(0x49, "current animation frame"),
682 NIV(0x60, "amount of cargo waiting"),
683 NIV(0x61, "time since last cargo pickup"),
684 NIV(0x62, "rating of cargo"),
685 NIV(0x63, "time spent on route"),
686 NIV(0x64, "information about last vehicle picking cargo up"),
687 NIV(0x65, "amount of cargo acceptance"),
688 NIV(0x66, "animation frame of nearby tile"),
689 NIV(0x67, "land info of nearby tiles"),
690 NIV(0x68, "road stop info of nearby tiles"),
691 NIV(0x69, "information about cargo accepted in the past"),
692 NIV(0x6A, "GRFID of nearby road stop tiles"),
693 NIV(0x6B, "road stop ID of nearby tiles"),
694 NIV_END(),
695 };
696
697 class NIHRoadStop : public NIHelper {
698 bool IsInspectable(uint index) const override { return GetRoadStopSpec(index) != nullptr; }
699 uint GetParent(uint index) const override { return GetInspectWindowNumber(GSF_FAKE_TOWNS, BaseStation::GetByTile(index)->town->index); }
700 const void *GetInstance(uint)const override { return nullptr; }
701 const void *GetSpec(uint index) const override { return GetRoadStopSpec(index); }
702 void SetStringParameters(uint index) const override { this->SetObjectAtStringParameters(STR_STATION_NAME, GetStationIndex(index), index); }
703 uint32_t GetGRFID(uint index) const override { return (this->IsInspectable(index)) ? GetRoadStopSpec(index)->grf_prop.grffile->grfid : 0; }
704
705 uint Resolve(uint index, uint var, uint32_t param, bool *avail) const override
706 {
707 int view = GetRoadStopDir(index);
708 if (IsDriveThroughStopTile(index)) view += 4;
709 RoadStopResolverObject ro(GetRoadStopSpec(index), BaseStation::GetByTile(index), index, INVALID_ROADTYPE, GetStationType(index), view);
710 return ro.GetScope(VSG_SCOPE_SELF)->GetVariable(var, param, avail);
711 }
712 };
713
714 static const NIFeature _nif_roadstop = {
715 nullptr,
716 _nic_roadstops,
717 _nif_roadstops,
718 new NIHRoadStop(),
719 };
720
722 static const NIFeature * const _nifeatures[] = {
723 &_nif_vehicle, // GSF_TRAINS
724 &_nif_vehicle, // GSF_ROADVEHICLES
725 &_nif_vehicle, // GSF_SHIPS
726 &_nif_vehicle, // GSF_AIRCRAFT
727 &_nif_station, // GSF_STATIONS
728 nullptr, // GSF_CANALS (no callbacks/action2 implemented)
729 nullptr, // GSF_BRIDGES (no callbacks/action2)
730 &_nif_house, // GSF_HOUSES
731 nullptr, // GSF_GLOBALVAR (has no "physical" objects)
732 &_nif_industrytile, // GSF_INDUSTRYTILES
733 &_nif_industry, // GSF_INDUSTRIES
734 nullptr, // GSF_CARGOES (has no "physical" objects)
735 nullptr, // GSF_SOUNDFX (has no "physical" objects)
736 &_nif_airport, // GSF_AIRPORTS
737 nullptr, // GSF_SIGNALS (feature not implemented)
738 &_nif_object, // GSF_OBJECTS
739 &_nif_railtype, // GSF_RAILTYPES
740 &_nif_airporttile, // GSF_AIRPORTTILES
741 &_nif_roadtype, // GSF_ROADTYPES
742 &_nif_tramtype, // GSF_TRAMTYPES
743 &_nif_roadstop, // GSF_ROADSTOPS
744 &_nif_town, // GSF_FAKE_TOWNS
745 };
746 static_assert(lengthof(_nifeatures) == GSF_FAKE_END);
NIHHouse::IsInspectable
bool IsInspectable(uint index) const override
Is the item with the given index inspectable?
Definition: newgrf_debug_data.h:204
ObjectResolverObject
A resolver object to be used with feature 0F spritegroups.
Definition: newgrf_object.h:134
CBID_OBJECT_COLOUR
@ CBID_OBJECT_COLOUR
Called to determine the colour of a town building.
Definition: newgrf_callbacks.h:266
VehicleResolverObject::WO_CACHED
@ WO_CACHED
Resolve wagon overrides using TrainCache::cached_override.
Definition: newgrf_engine.h:52
NIHHouse::GetInstance
const void * GetInstance(uint) const override
Get the instance given an index.
Definition: newgrf_debug_data.h:206
CBM_OBJ_ANIMATION_SPEED
@ CBM_OBJ_ANIMATION_SPEED
decides animation speed
Definition: newgrf_callbacks.h:400
IndustryTileResolverObject::GetScope
ScopeResolver * GetScope(VarSpriteGroupScope scope=VSG_SCOPE_SELF, byte relative=0) override
Get a resolver for the scope.
Definition: newgrf_industrytiles.h:47
CBM_IND_CARGO_SUFFIX
@ CBM_IND_CARGO_SUFFIX
cargo sub-type display
Definition: newgrf_callbacks.h:370
Pool::PoolItem<&_vehicle_pool >::Get
static Titem * Get(size_t index)
Returns Titem with given index.
Definition: pool_type.hpp:339
CBM_AIRT_ANIM_NEXT_FRAME
@ CBM_AIRT_ANIM_NEXT_FRAME
decides next animation frame
Definition: newgrf_callbacks.h:410
CBID_OBJECT_LAND_SLOPE_CHECK
@ CBID_OBJECT_LAND_SLOPE_CHECK
Callback done for each tile of an object to check the slope.
Definition: newgrf_callbacks.h:254
CBID_OBJECT_ANIMATION_NEXT_FRAME
@ CBID_OBJECT_ANIMATION_NEXT_FRAME
Determine the next animation frame for a house.
Definition: newgrf_callbacks.h:257
NIHHouse
Definition: newgrf_debug_data.h:203
NIHHouse::GetParent
uint GetParent(uint index) const override
Get the parent "window_number" of a given instance.
Definition: newgrf_debug_data.h:205
CBM_HOUSE_CARGO_ACCEPTANCE
@ CBM_HOUSE_CARGO_ACCEPTANCE
decides amount of cargo acceptance
Definition: newgrf_callbacks.h:335
RailTypeResolverObject::GetScope
ScopeResolver * GetScope(VarSpriteGroupScope scope=VSG_SCOPE_SELF, byte relative=0) override
Get a resolver for the scope.
Definition: newgrf_railtype.h:44
NIHAirportTile::Resolve
uint Resolve(uint index, uint var, uint param, bool *avail) const override
Resolve (action2) variable for a given index.
Definition: newgrf_debug_data.h:504
CBID_VEHICLE_START_STOP_CHECK
@ CBID_VEHICLE_START_STOP_CHECK
Called when the company (or AI) tries to start or stop a vehicle.
Definition: newgrf_callbacks.h:141
NIHObject::Resolve
uint Resolve(uint index, uint var, uint param, bool *avail) const override
Resolve (action2) variable for a given index.
Definition: newgrf_debug_data.h:434
ObjectSpec::grf_prop
GRFFilePropsBase< 2 > grf_prop
Properties related the the grf file.
Definition: newgrf_object.h:62
NIHIndustryTile::Resolve
uint Resolve(uint index, uint var, uint param, bool *avail) const override
Resolve (action2) variable for a given index.
Definition: newgrf_debug_data.h:261
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:107
ObjectResolverObject::GetScope
ScopeResolver * GetScope(VarSpriteGroupScope scope=VSG_SCOPE_SELF, byte relative=0) override
Get a resolver for the scope.
Definition: newgrf_object.h:142
CBID_VEHICLE_VISUAL_EFFECT
@ CBID_VEHICLE_VISUAL_EFFECT
Visual effects and wagon power.
Definition: newgrf_callbacks.h:30
NIHIndustry::GetSpec
const void * GetSpec(uint index) const override
Get (NewGRF) specs given an index.
Definition: newgrf_debug_data.h:365
NIHAirportTile
Definition: newgrf_debug_data.h:496
CBID_VEHICLE_ARTIC_ENGINE
@ CBID_VEHICLE_ARTIC_ENGINE
Builds articulated engines for trains and RVs.
Definition: newgrf_callbacks.h:51
CBID_HOUSE_ANIMATION_SPEED
@ CBID_HOUSE_ANIMATION_SPEED
Called to indicate how long the current animation frame should last.
Definition: newgrf_callbacks.h:81
NIHRoadStop::IsInspectable
bool IsInspectable(uint index) const override
Is the item with the given index inspectable?
Definition: newgrf_debug_data.h:698
CBID_VEHICLE_CARGO_SUFFIX
@ CBID_VEHICLE_CARGO_SUFFIX
Determine the cargo "suffixes" for each refit possibility of a cargo.
Definition: newgrf_callbacks.h:60
CBM_OBJ_ANIMATION_NEXT_FRAME
@ CBM_OBJ_ANIMATION_NEXT_FRAME
decides next animation frame
Definition: newgrf_callbacks.h:399
CBID_INDUSTRY_PRODUCTION_CHANGE
@ CBID_INDUSTRY_PRODUCTION_CHANGE
Called on production changes, so it can be adjusted.
Definition: newgrf_callbacks.h:111
CBID_STATION_AVAILABILITY
@ CBID_STATION_AVAILABILITY
Determine whether a newstation should be made available to build.
Definition: newgrf_callbacks.h:39
Station
Station data structure.
Definition: station_base.h:442
CBID_VEHICLE_MODIFY_PROPERTY
@ CBID_VEHICLE_MODIFY_PROPERTY
Called to modify various vehicle properties.
Definition: newgrf_callbacks.h:159
BaseStation::GetByTile
static BaseStation * GetByTile(TileIndex tile)
Get the base station belonging to a specific tile.
Definition: base_station_base.h:171
CBID_INDTILE_CARGO_ACCEPTANCE
@ CBID_INDTILE_CARGO_ACCEPTANCE
Called to query the cargo acceptance of the industry tile.
Definition: newgrf_callbacks.h:117
NIHHouse::GetGRFID
uint32_t GetGRFID(uint index) const override
Get the GRFID of the file that includes this item.
Definition: newgrf_debug_data.h:209
NICallback
Representation of the available callbacks with information on when they actually apply.
Definition: newgrf_debug_gui.cpp:99
CBM_INDT_SHAPE_CHECK
@ CBM_INDT_SHAPE_CHECK
decides slope suitability
Definition: newgrf_callbacks.h:389
NIHVehicle::Resolve
uint Resolve(uint index, uint var, uint param, bool *avail) const override
Resolve (action2) variable for a given index.
Definition: newgrf_debug_data.h:81
Pool::PoolItem::index
Tindex index
Index of this pool item.
Definition: pool_type.hpp:238
Object::GetByTile
static Object * GetByTile(TileIndex tile)
Get the object associated with a tile.
Definition: object_cmd.cpp:55
HouseResolverObject
Resolver object to be used for houses (feature 07 spritegroups).
Definition: newgrf_house.h:51
CBM_VEHICLE_SOUND_EFFECT
@ CBM_VEHICLE_SOUND_EFFECT
Vehicle uses custom sound effects.
Definition: newgrf_callbacks.h:302
NIHObject
Definition: newgrf_debug_data.h:426
CBID_HOUSE_WATCHED_CARGO_ACCEPTED
@ CBID_HOUSE_WATCHED_CARGO_ACCEPTED
Called when a cargo type specified in property 20 is accepted.
Definition: newgrf_callbacks.h:209
GetIndustryGfx
IndustryGfx GetIndustryGfx(Tile t)
Get the industry graphics ID for the given industry tile.
Definition: industry_map.h:137
StationResolverObject::GetScope
ScopeResolver * GetScope(VarSpriteGroupScope scope=VSG_SCOPE_SELF, byte relative=0) override
Get a resolver for the scope.
Definition: newgrf_station.h:60
NIHRoadStop::GetSpec
const void * GetSpec(uint index) const override
Get (NewGRF) specs given an index.
Definition: newgrf_debug_data.h:701
CBID_INDUSTRY_PROBABILITY
@ CBID_INDUSTRY_PROBABILITY
Called to determine if the given industry type is available.
Definition: newgrf_callbacks.h:87
CBM_STATION_SLOPE_CHECK
@ CBM_STATION_SLOPE_CHECK
Check slope of new station tiles.
Definition: newgrf_callbacks.h:314
Airport::layout
byte layout
Airport layout number.
Definition: station_base.h:295
NIHAirport::GetParent
uint GetParent(uint index) const override
Get the parent "window_number" of a given instance.
Definition: newgrf_debug_data.h:539
CBID_HOUSE_CUSTOM_NAME
@ CBID_HOUSE_CUSTOM_NAME
Called on the Get Tile Description for an house tile.
Definition: newgrf_callbacks.h:224
CBM_INDT_ACCEPT_CARGO
@ CBM_INDT_ACCEPT_CARGO
decides accepted types
Definition: newgrf_callbacks.h:388
SpecializedStation< Station, false >::Get
static Station * Get(size_t index)
Gets station with given index.
Definition: base_station_base.h:259
CBM_STATION_ANIMATION_NEXT_FRAME
@ CBM_STATION_ANIMATION_NEXT_FRAME
Use a custom next frame callback.
Definition: newgrf_callbacks.h:312
CBID_INDTILE_ANIM_START_STOP
@ CBID_INDTILE_ANIM_START_STOP
Called for periodically starting or stopping the animation.
Definition: newgrf_callbacks.h:99
NIHIndustry::SetStringParameters
void SetStringParameters(uint index) const override
Set the string parameters to write the right data for a STRINGn.
Definition: newgrf_debug_data.h:366
GetRoadStopDir
DiagDirection GetRoadStopDir(Tile t)
Gets the direction the road stop entrance points towards.
Definition: station_map.h:258
CBID_INDTILE_DRAW_FOUNDATIONS
@ CBID_INDTILE_DRAW_FOUNDATIONS
Called to determine the type (if any) of foundation to draw for industry tile.
Definition: newgrf_callbacks.h:135
NIHAirportTile::IsInspectable
bool IsInspectable(uint index) const override
Is the item with the given index inspectable?
Definition: newgrf_debug_data.h:497
CBM_HOUSE_DESTRUCTION
@ CBM_HOUSE_DESTRUCTION
trigger destruction of building
Definition: newgrf_callbacks.h:337
CBM_VEHICLE_CARGO_SUFFIX
@ CBM_VEHICLE_CARGO_SUFFIX
Show suffix after cargo name.
Definition: newgrf_callbacks.h:300
Vehicle
Vehicle data structure.
Definition: vehicle_base.h:240
Industry
Defines the internal data of a functional industry.
Definition: industry.h:68
NIHIndustryTile::IsInspectable
bool IsInspectable(uint index) const override
Is the item with the given index inspectable?
Definition: newgrf_debug_data.h:254
NIHStation::SetStringParameters
void SetStringParameters(uint index) const override
Set the string parameters to write the right data for a STRINGn.
Definition: newgrf_debug_data.h:143
CBID_HOUSE_DRAW_FOUNDATIONS
@ CBID_HOUSE_DRAW_FOUNDATIONS
Called to determine the type (if any) of foundation to draw for house tile.
Definition: newgrf_callbacks.h:227
CBID_INDUSTRY_OUTPUT_CARGO_TYPES
@ CBID_INDUSTRY_OUTPUT_CARGO_TYPES
Customize the output cargo types of a newly build industry.
Definition: newgrf_callbacks.h:221
CBID_INDTILE_ACCEPT_CARGO
@ CBID_INDTILE_ACCEPT_CARGO
Called to determine which cargoes an industry should accept.
Definition: newgrf_callbacks.h:120
CBM_VEHICLE_ARTIC_ENGINE
@ CBM_VEHICLE_ARTIC_ENGINE
Add articulated engines (trains and road vehicles)
Definition: newgrf_callbacks.h:299
NIHelper
Helper class to wrap some functionality/queries in.
Definition: newgrf_debug_gui.cpp:116
CBID_INDUSTRY_SPECIAL_EFFECT
@ CBID_INDUSTRY_SPECIAL_EFFECT
Called to determine industry special effects.
Definition: newgrf_callbacks.h:174
CBM_INDT_AUTOSLOPE
@ CBM_INDT_AUTOSLOPE
decides allowance of autosloping
Definition: newgrf_callbacks.h:391
CBM_HOUSE_PRODUCE_CARGO
@ CBM_HOUSE_PRODUCE_CARGO
custom cargo production
Definition: newgrf_callbacks.h:339
INVALID_ROADTYPE
@ INVALID_ROADTYPE
flag for invalid roadtype
Definition: road_type.h:30
CBM_IND_FUND_MORE_TEXT
@ CBM_IND_FUND_MORE_TEXT
additional text in fund window
Definition: newgrf_callbacks.h:371
NIProperty
Representation of the data from a NewGRF property.
Definition: newgrf_debug_gui.cpp:86
CBM_HOUSE_CONSTRUCTION_STATE_CHANGE
@ CBM_HOUSE_CONSTRUCTION_STATE_CHANGE
change animation when construction state changes
Definition: newgrf_callbacks.h:333
NIHTown::PSAWithParameter
bool PSAWithParameter() const override
Used to decide if the PSA needs a parameter or not.
Definition: newgrf_debug_data.h:592
NIHAirport::GetGRFID
uint32_t GetGRFID(uint index) const override
Get the GRFID of the file that includes this item.
Definition: newgrf_debug_data.h:543
VSG_SCOPE_SELF
@ VSG_SCOPE_SELF
Resolved object itself.
Definition: newgrf_spritegroup.h:100
NIHObject::IsInspectable
bool IsInspectable(uint index) const override
Is the item with the given index inspectable?
Definition: newgrf_debug_data.h:427
NIHHouse::GetSpec
const void * GetSpec(uint index) const override
Get (NewGRF) specs given an index.
Definition: newgrf_debug_data.h:207
CBID_INDUSTRY_FUND_MORE_TEXT
@ CBID_INDUSTRY_FUND_MORE_TEXT
Called to determine more text in the fund industry window.
Definition: newgrf_callbacks.h:165
RoadTypeResolverObject::GetScope
ScopeResolver * GetScope(VarSpriteGroupScope scope=VSG_SCOPE_SELF, byte relative=0) override
Get a resolver for the scope.
Definition: newgrf_roadtype.h:45
NIHTown::SetStringParameters
void SetStringParameters(uint index) const override
Set the string parameters to write the right data for a STRINGn.
Definition: newgrf_debug_data.h:590
NIHObject::GetInstance
const void * GetInstance(uint index) const override
Get the instance given an index.
Definition: newgrf_debug_data.h:429
CBM_IND_PROBABILITY
@ CBM_IND_PROBABILITY
industry availability/probability callback
Definition: newgrf_callbacks.h:364
CBID_VEHICLE_ADDITIONAL_TEXT
@ CBID_VEHICLE_ADDITIONAL_TEXT
This callback is called from vehicle purchase lists.
Definition: newgrf_callbacks.h:93
NIHObject::GetParent
uint GetParent(uint index) const override
Get the parent "window_number" of a given instance.
Definition: newgrf_debug_data.h:428
CBM_VEHICLE_NAME
@ CBM_VEHICLE_NAME
Engine name.
Definition: newgrf_callbacks.h:303
CBM_VEHICLE_LENGTH
@ CBM_VEHICLE_LENGTH
Vehicle length (trains and road vehicles)
Definition: newgrf_callbacks.h:296
GetGrfSpecFeature
GrfSpecFeature GetGrfSpecFeature(TileIndex tile)
Get the GrfSpecFeature associated with the tile.
Definition: newgrf_debug_gui.cpp:773
NIHRoadType::GetSpec
const void * GetSpec(uint) const override
Get (NewGRF) specs given an index.
Definition: newgrf_debug_data.h:635
NIHRailType
Definition: newgrf_debug_data.h:460
CBID_INDUSTRY_LOCATION
@ CBID_INDUSTRY_LOCATION
Called to determine if the given industry can be built on specific area.
Definition: newgrf_callbacks.h:108
CBM_HOUSE_ANIMATION_NEXT_FRAME
@ CBM_HOUSE_ANIMATION_NEXT_FRAME
decides next animation frame
Definition: newgrf_callbacks.h:331
CBM_OBJ_FUND_MORE_TEXT
@ CBM_OBJ_FUND_MORE_TEXT
additional text in fund window
Definition: newgrf_callbacks.h:402
CBID_HOUSE_COLOUR
@ CBID_HOUSE_COLOUR
Called to determine the colour of a town building.
Definition: newgrf_callbacks.h:75
NIHRailType::GetSpec
const void * GetSpec(uint) const override
Get (NewGRF) specs given an index.
Definition: newgrf_debug_data.h:464
AirportResolverObject::GetScope
ScopeResolver * GetScope(VarSpriteGroupScope scope=VSG_SCOPE_SELF, byte relative=0) override
Get a resolver for the scope.
Definition: newgrf_airport.h:184
NIHAirport::GetInstance
const void * GetInstance(uint index) const override
Get the instance given an index.
Definition: newgrf_debug_data.h:540
CBM_ROAD_STOP_ANIMATION_SPEED
@ CBM_ROAD_STOP_ANIMATION_SPEED
Customize the animation speed of the road stop.
Definition: newgrf_callbacks.h:323
CBID_HOUSE_DESTRUCTION
@ CBID_HOUSE_DESTRUCTION
Called periodically to determine if a house should be destroyed.
Definition: newgrf_callbacks.h:84
NIHVehicle
Definition: newgrf_debug_data.h:73
CBM_VEHICLE_LOAD_AMOUNT
@ CBM_VEHICLE_LOAD_AMOUNT
Load amount.
Definition: newgrf_callbacks.h:297
NIHIndustry::IsInspectable
bool IsInspectable(uint index) const override
Is the item with the given index inspectable?
Definition: newgrf_debug_data.h:362
CBM_ROAD_STOP_ANIMATION_NEXT_FRAME
@ CBM_ROAD_STOP_ANIMATION_NEXT_FRAME
Use a custom next frame callback.
Definition: newgrf_callbacks.h:322
Industry::location
TileArea location
Location of the industry.
Definition: industry.h:96
CBID_STATION_LAND_SLOPE_CHECK
@ CBID_STATION_LAND_SLOPE_CHECK
Callback done for each tile of a station to check the slope.
Definition: newgrf_callbacks.h:212
AirportSpec::Get
static const AirportSpec * Get(byte type)
Retrieve airport spec for the given airport.
Definition: newgrf_airport.cpp:54
TownResolverObject::GetScope
ScopeResolver * GetScope(VarSpriteGroupScope scope=VSG_SCOPE_SELF, byte relative=0) override
Get a resolver for the scope.
Definition: newgrf_town.h:47
NIHRailType::Resolve
uint Resolve(uint index, uint var, uint param, bool *avail) const override
Resolve (action2) variable for a given index.
Definition: newgrf_debug_data.h:468
Industry::GetByTile
static Industry * GetByTile(TileIndex tile)
Get the industry of the given tile.
Definition: industry.h:207
NIHAirport
Definition: newgrf_debug_data.h:537
GSF_FAKE_TOWNS
@ GSF_FAKE_TOWNS
Fake town GrfSpecFeature for NewGRF debugging (parent scope)
Definition: newgrf.h:90
NIHRailType::GetGRFID
uint32_t GetGRFID(uint) const override
Get the GRFID of the file that includes this item.
Definition: newgrf_debug_data.h:466
NIHRoadType::GetParent
uint GetParent(uint) const override
Get the parent "window_number" of a given instance.
Definition: newgrf_debug_data.h:633
NIHIndustry::Resolve
uint Resolve(uint index, uint var, uint param, bool *avail) const override
Resolve (action2) variable for a given index.
Definition: newgrf_debug_data.h:369
CBM_STATION_ANIMATION_SPEED
@ CBM_STATION_ANIMATION_SPEED
Customize the animation speed of the station.
Definition: newgrf_callbacks.h:313
CBID_AIRPTILE_ANIM_NEXT_FRAME
@ CBID_AIRPTILE_ANIM_NEXT_FRAME
Called to determine airport tile next animation frame.
Definition: newgrf_callbacks.h:239
Industry::type
IndustryType type
type of industry.
Definition: industry.h:104
CBID_VEHICLE_SOUND_EFFECT
@ CBID_VEHICLE_SOUND_EFFECT
Called to play a special sound effect.
Definition: newgrf_callbacks.h:147
NIHAirport::GetSpec
const void * GetSpec(uint index) const override
Get (NewGRF) specs given an index.
Definition: newgrf_debug_data.h:541
IndustryTileResolverObject
Resolver for industry tiles.
Definition: newgrf_industrytiles.h:39
RoadStopResolverObject
Road stop resolver.
Definition: newgrf_roadstop.h:96
CBID_VEHICLE_AUTOREPLACE_SELECTION
@ CBID_VEHICLE_AUTOREPLACE_SELECTION
Return the vehicles this given vehicle can be "upgraded" to.
Definition: newgrf_callbacks.h:150
IndustriesResolverObject
Resolver for industries.
Definition: newgrf_industries.h:42
CBM_IND_PRODUCTION_CHANGE
@ CBM_IND_PRODUCTION_CHANGE
controls random production change
Definition: newgrf_callbacks.h:368
NIHRailType::GetParent
uint GetParent(uint) const override
Get the parent "window_number" of a given instance.
Definition: newgrf_debug_data.h:462
Vehicle::engine_type
EngineID engine_type
The type of engine used for this vehicle.
Definition: vehicle_base.h:319
_nifeatures
static const NIFeature *const _nifeatures[]
Table with all NIFeatures.
Definition: newgrf_debug_data.h:722
TownResolverObject
Resolver of town properties.
Definition: newgrf_town.h:42
NIT_CARGO
@ NIT_CARGO
The property is a cargo.
Definition: newgrf_debug_gui.cpp:80
CBID_HOUSE_ALLOW_CONSTRUCTION
@ CBID_HOUSE_ALLOW_CONSTRUCTION
Determine whether the house can be built on the specified tile.
Definition: newgrf_callbacks.h:54
CBM_HOUSE_ACCEPT_CARGO
@ CBM_HOUSE_ACCEPT_CARGO
decides accepted types
Definition: newgrf_callbacks.h:338
CBID_INDUSTRY_MONTHLYPROD_CHANGE
@ CBID_INDUSTRY_MONTHLYPROD_CHANGE
Called monthly on production changes, so it can be adjusted more frequently.
Definition: newgrf_callbacks.h:153
PersistentStorage
Class for pooled persistent storage of data.
Definition: newgrf_storage.h:199
NIHAirportTile::GetSpec
const void * GetSpec(uint index) const override
Get (NewGRF) specs given an index.
Definition: newgrf_debug_data.h:500
CBID_HOUSE_CONSTRUCTION_STATE_CHANGE
@ CBID_HOUSE_CONSTRUCTION_STATE_CHANGE
Called whenever the construction state of a house changes.
Definition: newgrf_callbacks.h:69
CBM_INDT_DRAW_FOUNDATIONS
@ CBM_INDT_DRAW_FOUNDATIONS
decides if default foundations need to be drawn
Definition: newgrf_callbacks.h:390
CBM_IND_LOCATION
@ CBM_IND_LOCATION
check industry construction on given area
Definition: newgrf_callbacks.h:367
CBM_IND_INPUT_CARGO_TYPES
@ CBM_IND_INPUT_CARGO_TYPES
customize the cargoes the industry requires
Definition: newgrf_callbacks.h:376
NIHRoadStop::GetGRFID
uint32_t GetGRFID(uint index) const override
Get the GRFID of the file that includes this item.
Definition: newgrf_debug_data.h:703
NIHTown::GetParent
uint GetParent(uint) const override
Get the parent "window_number" of a given instance.
Definition: newgrf_debug_data.h:587
GSF_FAKE_END
@ GSF_FAKE_END
End of the fake features.
Definition: newgrf.h:91
Station::airport
Airport airport
Tile area the airport covers.
Definition: station_base.h:456
NIHRoadStop::GetInstance
const void * GetInstance(uint) const override
Get the instance given an index.
Definition: newgrf_debug_data.h:700
CBID_INDUSTRY_INPUT_CARGO_TYPES
@ CBID_INDUSTRY_INPUT_CARGO_TYPES
Customize the input cargo types of a newly build industry.
Definition: newgrf_callbacks.h:218
ScopeResolver::GetVariable
virtual uint32_t GetVariable(byte variable, [[maybe_unused]] uint32_t parameter, bool *available) const
Get a variable value.
Definition: newgrf_spritegroup.cpp:106
AirportTileSpec::GetByTile
static const AirportTileSpec * GetByTile(TileIndex tile)
Retrieve airport tile spec for the given airport tile.
Definition: newgrf_airporttiles.cpp:50
NIHelper::SetObjectAtStringParameters
void SetObjectAtStringParameters(StringID string, uint32_t index, TileIndex tile) const
Helper to make setting the strings easier for objects at a specific tile.
Definition: newgrf_debug_gui.cpp:222
NIHVehicle::GetSpec
const void * GetSpec(uint index) const override
Get (NewGRF) specs given an index.
Definition: newgrf_debug_data.h:77
CBM_OBJ_COLOUR
@ CBM_OBJ_COLOUR
decide the colour of the building
Definition: newgrf_callbacks.h:401
GetIndustryIndex
IndustryID GetIndustryIndex(Tile t)
Get the industry ID of the given tile.
Definition: industry_map.h:63
CBM_HOUSE_COLOUR
@ CBM_HOUSE_COLOUR
decide the colour of the building
Definition: newgrf_callbacks.h:334
CBM_HOUSE_ANIMATION_SPEED
@ CBM_HOUSE_ANIMATION_SPEED
decides animation speed
Definition: newgrf_callbacks.h:336
lengthof
#define lengthof(array)
Return the length of an fixed size array.
Definition: stdafx.h:303
NIFeature
Container for all information for a given feature.
Definition: newgrf_debug_gui.cpp:233
TCX_NORMAL
@ TCX_NORMAL
Nothing special.
Definition: newgrf_commons.h:24
RoadStopSpec::grf_prop
GRFFilePropsBase< NUM_CARGO+3 > grf_prop
Properties related the the grf file.
Definition: newgrf_roadstop.h:129
NIHObject::SetStringParameters
void SetStringParameters(uint index) const override
Set the string parameters to write the right data for a STRINGn.
Definition: newgrf_debug_data.h:431
NIHTown::Resolve
uint Resolve(uint index, uint var, uint param, bool *avail) const override
Resolve (action2) variable for a given index.
Definition: newgrf_debug_data.h:595
AirportResolverObject
Resolver object for airports.
Definition: newgrf_airport.h:175
CBID_HOUSE_ANIMATION_START_STOP
@ CBID_HOUSE_ANIMATION_START_STOP
Called for periodically starting or stopping the animation.
Definition: newgrf_callbacks.h:66
CBM_IND_SPECIAL_EFFECT
@ CBM_IND_SPECIAL_EFFECT
control special effects
Definition: newgrf_callbacks.h:373
CBID_INDUSTRY_CARGO_SUFFIX
@ CBID_INDUSTRY_CARGO_SUFFIX
Called to determine text to display after cargo name.
Definition: newgrf_callbacks.h:162
NIHTown::GetGRFID
uint32_t GetGRFID(uint) const override
Get the GRFID of the file that includes this item.
Definition: newgrf_debug_data.h:591
GetHouseType
HouseID GetHouseType(Tile t)
Get the type of this house, which is an index into the house spec array.
Definition: town_map.h:60
NIHVehicle::SetStringParameters
void SetStringParameters(uint index) const override
Set the string parameters to write the right data for a STRINGn.
Definition: newgrf_debug_data.h:78
NIHIndustryTile::GetSpec
const void * GetSpec(uint index) const override
Get (NewGRF) specs given an index.
Definition: newgrf_debug_data.h:257
CBM_STATION_AVAIL
@ CBM_STATION_AVAIL
Availability of station in construction window.
Definition: newgrf_callbacks.h:310
CBID_STATION_ANIM_NEXT_FRAME
@ CBID_STATION_ANIM_NEXT_FRAME
Called to determine station tile next animation frame.
Definition: newgrf_callbacks.h:188
NIHRoadType::IsInspectable
bool IsInspectable(uint) const override
Is the item with the given index inspectable?
Definition: newgrf_debug_data.h:632
CBID_HOUSE_CARGO_ACCEPTANCE
@ CBID_HOUSE_CARGO_ACCEPTANCE
Called to decide how much cargo a town building can accept.
Definition: newgrf_callbacks.h:78
CBID_STATION_TILE_LAYOUT
@ CBID_STATION_TILE_LAYOUT
Called when building a station to customize the tile layout.
Definition: newgrf_callbacks.h:96
NIHAirportTile::SetStringParameters
void SetStringParameters(uint index) const override
Set the string parameters to write the right data for a STRINGn.
Definition: newgrf_debug_data.h:501
NIHStation
Definition: newgrf_debug_data.h:138
IndustryTileSpec::grf_prop
GRFFileProps grf_prop
properties related to the grf file
Definition: industrytype.h:173
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:68
CBM_HOUSE_ANIMATION_START_STOP
@ CBM_HOUSE_ANIMATION_START_STOP
periodically start/stop the animation
Definition: newgrf_callbacks.h:332
GetStationType
StationType GetStationType(Tile t)
Get the station type of this tile.
Definition: station_map.h:44
CBM_VEHICLE_REFIT_CAPACITY
@ CBM_VEHICLE_REFIT_CAPACITY
Cargo capacity after refit.
Definition: newgrf_callbacks.h:298
CBM_INDT_ANIM_NEXT_FRAME
@ CBM_INDT_ANIM_NEXT_FRAME
decides next animation frame
Definition: newgrf_callbacks.h:385
NIHStation::GetSpec
const void * GetSpec(uint index) const override
Get (NewGRF) specs given an index.
Definition: newgrf_debug_data.h:142
CBID_OBJECT_AUTOSLOPE
@ CBID_OBJECT_AUTOSLOPE
Called to determine if one can alter the ground below an object tile.
Definition: newgrf_callbacks.h:272
NIHRailType::SetStringParameters
void SetStringParameters(uint index) const override
Set the string parameters to write the right data for a STRINGn.
Definition: newgrf_debug_data.h:465
HouseResolverObject::GetScope
ScopeResolver * GetScope(VarSpriteGroupScope scope=VSG_SCOPE_SELF, byte relative=0) override
Get a resolver for the scope.
Definition: newgrf_house.h:59
NIHIndustry
Definition: newgrf_debug_data.h:361
NIHIndustryTile::SetStringParameters
void SetStringParameters(uint index) const override
Set the string parameters to write the right data for a STRINGn.
Definition: newgrf_debug_data.h:258
CBM_INDT_ANIM_SPEED
@ CBM_INDT_ANIM_SPEED
decides animation speed
Definition: newgrf_callbacks.h:386
NIHHouse::SetStringParameters
void SetStringParameters(uint index) const override
Set the string parameters to write the right data for a STRINGn.
Definition: newgrf_debug_data.h:208
NIHIndustryTile
Definition: newgrf_debug_data.h:253
CBID_INDTILE_ANIM_NEXT_FRAME
@ CBID_INDTILE_ANIM_NEXT_FRAME
Called to determine industry tile next animation frame.
Definition: newgrf_callbacks.h:102
CBID_VEHICLE_COLOUR_MAPPING
@ 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:126
CBM_IND_MONTHLYPROD_CHANGE
@ CBM_IND_MONTHLYPROD_CHANGE
controls monthly random production change
Definition: newgrf_callbacks.h:369
CBID_INDUSTRY_PROD_CHANGE_BUILD
@ CBID_INDUSTRY_PROD_CHANGE_BUILD
Called when industry is built to set initial production level.
Definition: newgrf_callbacks.h:278
NIHStation::GetParent
uint GetParent(uint index) const override
Get the parent "window_number" of a given instance.
Definition: newgrf_debug_data.h:140
NIHIndustry::GetParent
uint GetParent(uint index) const override
Get the parent "window_number" of a given instance.
Definition: newgrf_debug_data.h:363
RoadTypeResolverObject
Resolver object for road types.
Definition: newgrf_roadtype.h:40
CBID_INDUSTRY_REFUSE_CARGO
@ CBID_INDUSTRY_REFUSE_CARGO
Called to determine if the industry can still accept or refuse more cargo arrival.
Definition: newgrf_callbacks.h:180
CBM_OBJ_SLOPE_CHECK
@ CBM_OBJ_SLOPE_CHECK
decides slope suitability
Definition: newgrf_callbacks.h:398
CBM_AIRT_DRAW_FOUNDATIONS
@ CBM_AIRT_DRAW_FOUNDATIONS
decides if default foundations need to be drawn
Definition: newgrf_callbacks.h:413
CBID_AIRPTILE_ANIM_START_STOP
@ CBID_AIRPTILE_ANIM_START_STOP
Called for periodically starting or stopping the animation.
Definition: newgrf_callbacks.h:236
NIHTown::GetInstance
const void * GetInstance(uint index) const override
Get the instance given an index.
Definition: newgrf_debug_data.h:588
NIHAirport::IsInspectable
bool IsInspectable(uint index) const override
Is the item with the given index inspectable?
Definition: newgrf_debug_data.h:538
NIHHouse::Resolve
uint Resolve(uint index, uint var, uint param, bool *avail) const override
Resolve (action2) variable for a given index.
Definition: newgrf_debug_data.h:211
CBID_AIRPTILE_DRAW_FOUNDATIONS
@ CBID_AIRPTILE_DRAW_FOUNDATIONS
Called to determine the type (if any) of foundation to draw for an airport tile.
Definition: newgrf_callbacks.h:233
CBM_VEHICLE_VISUAL_EFFECT
@ CBM_VEHICLE_VISUAL_EFFECT
Visual effects and wagon power (trains, road vehicles and ships)
Definition: newgrf_callbacks.h:295
NIHIndustry::GetGRFID
uint32_t GetGRFID(uint index) const override
Get the GRFID of the file that includes this item.
Definition: newgrf_debug_data.h:367
NIHIndustry::GetInstance
const void * GetInstance(uint index) const override
Get the instance given an index.
Definition: newgrf_debug_data.h:364
CBID_STATION_ANIM_START_STOP
@ CBID_STATION_ANIM_START_STOP
Called for periodically starting or stopping the animation.
Definition: newgrf_callbacks.h:185
GetIndustryTileSpec
const IndustryTileSpec * GetIndustryTileSpec(IndustryGfx gfx)
Accessor for array _industry_tile_specs.
Definition: industry_cmd.cpp:137
GetStationIndex
StationID GetStationIndex(Tile t)
Get StationID from a tile.
Definition: station_map.h:28
OrthogonalTileArea::tile
TileIndex tile
The base tile of the area.
Definition: tilearea_type.h:19
NIHVehicle::GetParent
uint GetParent(uint index) const override
Get the parent "window_number" of a given instance.
Definition: newgrf_debug_data.h:75
CBM_INDT_CARGO_ACCEPTANCE
@ CBM_INDT_CARGO_ACCEPTANCE
decides amount of cargo acceptance
Definition: newgrf_callbacks.h:387
CBM_OBJ_AUTOSLOPE
@ CBM_OBJ_AUTOSLOPE
decides allowance of autosloping
Definition: newgrf_callbacks.h:403
AirportSpec::grf_prop
struct GRFFileProps grf_prop
Properties related to the grf file.
Definition: newgrf_airport.h:120
NIHObject::GetGRFID
uint32_t GetGRFID(uint index) const override
Get the GRFID of the file that includes this item.
Definition: newgrf_debug_data.h:432
NIHelper::SetSimpleStringParameters
void SetSimpleStringParameters(StringID string, uint32_t index) const
Helper to make setting the strings easier.
Definition: newgrf_debug_gui.cpp:209
CBM_HOUSE_DENY_DESTRUCTION
@ CBM_HOUSE_DENY_DESTRUCTION
conditional protection
Definition: newgrf_callbacks.h:340
GetAirportGfx
StationGfx GetAirportGfx(Tile t)
Get the station graphics of this airport tile.
Definition: station_map.h:246
ObjectSpec::GetByTile
static const ObjectSpec * GetByTile(TileIndex tile)
Get the specification associated with a tile.
Definition: newgrf_object.cpp:65
CBM_IND_REFUSE_CARGO
@ CBM_IND_REFUSE_CARGO
option out of accepting cargo
Definition: newgrf_callbacks.h:374
NIHStation::GetGRFID
uint32_t GetGRFID(uint index) const override
Get the GRFID of the file that includes this item.
Definition: newgrf_debug_data.h:144
IndustrySpec::grf_prop
GRFFileProps grf_prop
properties related to the grf file
Definition: industrytype.h:141
CBID_OBJECT_ANIMATION_START_STOP
@ CBID_OBJECT_ANIMATION_START_STOP
Called for periodically starting or stopping the animation.
Definition: newgrf_callbacks.h:260
SpecializedStation< Station, false >::GetByTile
static Station * GetByTile(TileIndex tile)
Get the station belonging to a specific tile.
Definition: base_station_base.h:278
NIHRoadType::Resolve
uint Resolve(uint index, uint var, uint param, bool *avail) const override
Resolve (action2) variable for a given index.
Definition: newgrf_debug_data.h:639
CBID_INDTILE_AUTOSLOPE
@ CBID_INDTILE_AUTOSLOPE
Called to determine if industry can alter the ground below industry tile.
Definition: newgrf_callbacks.h:177
NIHVehicle::GetInstance
const void * GetInstance(uint index) const override
Get the instance given an index.
Definition: newgrf_debug_data.h:76
VehicleResolverObject
Resolver for a vehicle (chain)
Definition: newgrf_engine.h:47
NIHAirport::Resolve
uint Resolve(uint index, uint var, uint param, bool *avail) const override
Resolve (action2) variable for a given index.
Definition: newgrf_debug_data.h:545
CBID_STATION_ANIMATION_SPEED
@ CBID_STATION_ANIMATION_SPEED
Called to indicate how long the current animation frame should last.
Definition: newgrf_callbacks.h:191
CBM_IND_WINDOW_MORE_TEXT
@ CBM_IND_WINDOW_MORE_TEXT
additional text in industry window
Definition: newgrf_callbacks.h:372
NIHRoadType::GetInstance
const void * GetInstance(uint) const override
Get the instance given an index.
Definition: newgrf_debug_data.h:634
NIHRoadStop::GetParent
uint GetParent(uint index) const override
Get the parent "window_number" of a given instance.
Definition: newgrf_debug_data.h:699
NIHIndustryTile::GetParent
uint GetParent(uint index) const override
Get the parent "window_number" of a given instance.
Definition: newgrf_debug_data.h:255
CBID_OBJECT_ANIMATION_SPEED
@ CBID_OBJECT_ANIMATION_SPEED
Called to indicate how long the current animation frame should last.
Definition: newgrf_callbacks.h:263
NIHRoadType::GetGRFID
uint32_t GetGRFID(uint) const override
Get the GRFID of the file that includes this item.
Definition: newgrf_debug_data.h:637
NIHStation::GetInstance
const void * GetInstance(uint) const override
Get the instance given an index.
Definition: newgrf_debug_data.h:141
CBID_HOUSE_PRODUCE_CARGO
@ CBID_HOUSE_PRODUCE_CARGO
Called to determine how much cargo a town building produces.
Definition: newgrf_callbacks.h:129
PersistentStorageArray::storage
StorageType storage
Memory for the storage array.
Definition: newgrf_storage.h:70
Town
Town data structure.
Definition: town.h:50
StationSpec::grf_prop
GRFFilePropsBase< NUM_CARGO+3 > grf_prop
Properties related the the grf file.
Definition: newgrf_station.h:124
NIHTown::GetSpec
const void * GetSpec(uint) const override
Get (NewGRF) specs given an index.
Definition: newgrf_debug_data.h:589
NIHIndustryTile::GetGRFID
uint32_t GetGRFID(uint index) const override
Get the GRFID of the file that includes this item.
Definition: newgrf_debug_data.h:259
CBID_VEHICLE_REFIT_CAPACITY
@ 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:48
CBID_INDUSTRY_DECIDE_COLOUR
@ CBID_INDUSTRY_DECIDE_COLOUR
Called to determine the colour of an industry.
Definition: newgrf_callbacks.h:215
NIHVehicle::GetGRFID
uint32_t GetGRFID(uint index) const override
Get the GRFID of the file that includes this item.
Definition: newgrf_debug_data.h:79
CBM_ROAD_STOP_AVAIL
@ CBM_ROAD_STOP_AVAIL
Availability of road stop in construction window.
Definition: newgrf_callbacks.h:321
IndustriesResolverObject::GetScope
ScopeResolver * GetScope(VarSpriteGroupScope scope=VSG_SCOPE_SELF, byte relative=0) override
Get a resolver for the scope.
Definition: newgrf_industries.h:52
NIVariable
Representation on the NewGRF variables.
Definition: newgrf_debug_gui.cpp:110
Airport::type
byte type
Type of this airport,.
Definition: station_base.h:294
NIHRoadType::SetStringParameters
void SetStringParameters(uint index) const override
Set the string parameters to write the right data for a STRINGn.
Definition: newgrf_debug_data.h:636
NIHVehicle::IsInspectable
bool IsInspectable(uint index) const override
Is the item with the given index inspectable?
Definition: newgrf_debug_data.h:74
CBID_VEHICLE_32DAY_CALLBACK
@ CBID_VEHICLE_32DAY_CALLBACK
Called for every vehicle every 32 days (not all on same date though).
Definition: newgrf_callbacks.h:144
CBM_HOUSE_AUTOSLOPE
@ CBM_HOUSE_AUTOSLOPE
decides allowance of autosloping
Definition: newgrf_callbacks.h:342
NIHAirportTile::GetInstance
const void * GetInstance(uint) const override
Get the instance given an index.
Definition: newgrf_debug_data.h:499
CBID_INDUSTRY_WINDOW_MORE_TEXT
@ CBID_INDUSTRY_WINDOW_MORE_TEXT
Called to determine more text in the industry window.
Definition: newgrf_callbacks.h:171
CBM_IND_DECIDE_COLOUR
@ CBM_IND_DECIDE_COLOUR
give a custom colour to newly build industries
Definition: newgrf_callbacks.h:375
CBID_VEHICLE_LOAD_AMOUNT
@ CBID_VEHICLE_LOAD_AMOUNT
Determine the amount of cargo to load per unit of time when using gradual loading.
Definition: newgrf_callbacks.h:36
NIHAirport::SetStringParameters
void SetStringParameters(uint index) const override
Set the string parameters to write the right data for a STRINGn.
Definition: newgrf_debug_data.h:542
StationResolverObject
Station resolver.
Definition: newgrf_station.h:50
CBID_VEHICLE_LENGTH
@ CBID_VEHICLE_LENGTH
Vehicle length, returns the amount of 1/8's the vehicle is shorter for trains and RVs.
Definition: newgrf_callbacks.h:33
AirportTileResolverObject::GetScope
ScopeResolver * GetScope(VarSpriteGroupScope scope=VSG_SCOPE_SELF, byte relative=0) override
Get a resolver for the scope.
Definition: newgrf_airporttiles.h:52
GetIndustrySpec
const IndustrySpec * GetIndustrySpec(IndustryType thistype)
Accessor for array _industry_specs.
Definition: industry_cmd.cpp:123
CBM_IND_PROD_CHANGE_BUILD
@ CBM_IND_PROD_CHANGE_BUILD
initialise production level on construction
Definition: newgrf_callbacks.h:378
AirportTileResolverObject
Resolver for tiles of an airport.
Definition: newgrf_airporttiles.h:45
RailTypeResolverObject
Resolver object for rail types.
Definition: newgrf_railtype.h:39
CBM_VEHICLE_COLOUR_REMAP
@ CBM_VEHICLE_COLOUR_REMAP
Change colour mapping of vehicle.
Definition: newgrf_callbacks.h:301
NIHObject::GetSpec
const void * GetSpec(uint index) const override
Get (NewGRF) specs given an index.
Definition: newgrf_debug_data.h:430
Pool::PoolItem<&_town_pool >::IsValidID
static bool IsValidID(size_t index)
Tests whether given index can be used to get valid (non-nullptr) Titem.
Definition: pool_type.hpp:328
CBM_HOUSE_DRAW_FOUNDATIONS
@ CBM_HOUSE_DRAW_FOUNDATIONS
decides if default foundations need to be drawn
Definition: newgrf_callbacks.h:341
NIHTown
Definition: newgrf_debug_data.h:585
BaseVehicle::type
VehicleType type
Type of vehicle.
Definition: vehicle_type.h:51
GRFFilePropsBase::grffile
const struct GRFFile * grffile
grf file that introduced this entity
Definition: newgrf_commons.h:319
CBM_STATION_SPRITE_LAYOUT
@ CBM_STATION_SPRITE_LAYOUT
Use callback to select a sprite layout to use.
Definition: newgrf_callbacks.h:311
CBID_AIRPTILE_ANIMATION_SPEED
@ CBID_AIRPTILE_ANIMATION_SPEED
Called to indicate how long the current animation frame should last.
Definition: newgrf_callbacks.h:242
Industry::psa
PersistentStorage * psa
Persistent storage for NewGRF industries.
Definition: industry.h:125
Airport::psa
PersistentStorage * psa
Persistent storage for NewGRF airports.
Definition: station_base.h:298
NIHAirportTile::GetGRFID
uint32_t GetGRFID(uint index) const override
Get the GRFID of the file that includes this item.
Definition: newgrf_debug_data.h:502
CBID_INDTILE_ANIMATION_SPEED
@ CBID_INDTILE_ANIMATION_SPEED
Called to indicate how long the current animation frame should last.
Definition: newgrf_callbacks.h:105
AirportTileSpec::Get
static const AirportTileSpec * Get(StationGfx gfx)
Retrieve airport tile spec for the given airport tile.
Definition: newgrf_airporttiles.cpp:37
CBM_HOUSE_ALLOW_CONSTRUCTION
@ CBM_HOUSE_ALLOW_CONSTRUCTION
decide whether the house can be built on a given tile
Definition: newgrf_callbacks.h:330
NIHRoadStop
Definition: newgrf_debug_data.h:697
AirportTileSpec::grf_prop
GRFFileProps grf_prop
properties related the the grf file
Definition: newgrf_airporttiles.h:74
CBID_STATION_SPRITE_LAYOUT
@ CBID_STATION_SPRITE_LAYOUT
Choose a sprite layout to draw, instead of the standard 0-7 range.
Definition: newgrf_callbacks.h:42
CBID_HOUSE_DENY_DESTRUCTION
@ CBID_HOUSE_DENY_DESTRUCTION
Called to determine whether a town building can be destroyed.
Definition: newgrf_callbacks.h:194
CBID_HOUSE_ACCEPT_CARGO
@ CBID_HOUSE_ACCEPT_CARGO
Called to determine which cargoes a town building should accept.
Definition: newgrf_callbacks.h:114
cpp_lengthof
#define cpp_lengthof(base, variable)
Gets the length of an array variable within a class.
Definition: stdafx.h:335
NIHRailType::IsInspectable
bool IsInspectable(uint) const override
Is the item with the given index inspectable?
Definition: newgrf_debug_data.h:461
VehicleResolverObject::GetScope
ScopeResolver * GetScope(VarSpriteGroupScope scope=VSG_SCOPE_SELF, byte relative=0) override
Get a resolver for the scope.
Definition: newgrf_engine.cpp:318
HouseSpec::grf_prop
GRFFileProps grf_prop
Properties related the the grf file.
Definition: house.h:115
CBID_VEHICLE_NAME
@ CBID_VEHICLE_NAME
Called to determine the engine name to show.
Definition: newgrf_callbacks.h:284
CBID_HOUSE_ANIMATION_NEXT_FRAME
@ CBID_HOUSE_ANIMATION_NEXT_FRAME
Determine the next animation frame for a house.
Definition: newgrf_callbacks.h:63
CBM_IND_OUTPUT_CARGO_TYPES
@ CBM_IND_OUTPUT_CARGO_TYPES
customize the cargoes the industry produces
Definition: newgrf_callbacks.h:377
NIHAirportTile::GetParent
uint GetParent(uint index) const override
Get the parent "window_number" of a given instance.
Definition: newgrf_debug_data.h:498
CBID_HOUSE_AUTOSLOPE
@ CBID_HOUSE_AUTOSLOPE
Called to determine if one can alter the ground below a house tile.
Definition: newgrf_callbacks.h:230
NIHRoadStop::SetStringParameters
void SetStringParameters(uint index) const override
Set the string parameters to write the right data for a STRINGn.
Definition: newgrf_debug_data.h:702
NIHRailType::GetInstance
const void * GetInstance(uint) const override
Get the instance given an index.
Definition: newgrf_debug_data.h:463
IsDriveThroughStopTile
bool IsDriveThroughStopTile(Tile t)
Is tile t a drive through road stop station?
Definition: station_map.h:233
NIHStation::IsInspectable
bool IsInspectable(uint index) const override
Is the item with the given index inspectable?
Definition: newgrf_debug_data.h:139
NIHTown::IsInspectable
bool IsInspectable(uint index) const override
Is the item with the given index inspectable?
Definition: newgrf_debug_data.h:586
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:17
NIHStation::Resolve
uint Resolve(uint index, uint var, uint param, bool *avail) const override
Resolve (action2) variable for a given index.
Definition: newgrf_debug_data.h:146
CBID_INDTILE_SHAPE_CHECK
@ CBID_INDTILE_SHAPE_CHECK
Called to determine if the given industry tile can be built on specific tile.
Definition: newgrf_callbacks.h:132
NIHIndustryTile::GetInstance
const void * GetInstance(uint) const override
Get the instance given an index.
Definition: newgrf_debug_data.h:256
CBID_TRAIN_ALLOW_WAGON_ATTACH
@ CBID_TRAIN_ALLOW_WAGON_ATTACH
Determine whether a wagon can be attached to an already existing train.
Definition: newgrf_callbacks.h:72
CBID_OBJECT_FUND_MORE_TEXT
@ CBID_OBJECT_FUND_MORE_TEXT
Called to determine more text in the fund object window.
Definition: newgrf_callbacks.h:269
GetTownIndex
TownID GetTownIndex(Tile t)
Get the index of which town this house/street is attached to.
Definition: town_map.h:23
NIHRoadType
Definition: newgrf_debug_data.h:631
CBM_AIRT_ANIM_SPEED
@ CBM_AIRT_ANIM_SPEED
decides animation speed
Definition: newgrf_callbacks.h:411