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

OpenTTD Source 15.0-beta1

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)
31static 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
51static 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
89static 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)
100static const NICallback _nic_stations[] = {
101 NICS(CBID_STATION_AVAILABILITY, CBM_STATION_AVAIL),
102 NICS(CBID_STATION_DRAW_TILE_LAYOUT, CBM_STATION_DRAW_TILE_LAYOUT),
103 NICS(CBID_STATION_BUILD_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
111static 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.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
153static 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)
164static 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
183static 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.HasGrfFile(); }
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.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
218static 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)
229static 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
241static 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.HasGrfFile(); }
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.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
268static const NIFeature _nif_industrytile = {
269 nullptr,
270 _nic_industrytiles,
271 _niv_industrytiles,
272 new NIHIndustryTile(),
273};
274
275
276/*** NewGRF industries ***/
277#define NIP_PRODUCED_CARGO(prop, base, slot, type, name) { name, [] (const void *b) -> const void * { return std::addressof(static_cast<const base *>(b)->GetProduced(slot).cargo); }, sizeof(CargoID), prop, type }
278#define NIP_ACCEPTED_CARGO(prop, base, slot, type, name) { name, [] (const void *b) -> const void * { return std::addressof(static_cast<const base *>(b)->GetAccepted(slot).cargo); }, sizeof(CargoID), prop, type }
279
280static const NIProperty _nip_industries[] = {
281 NIP_PRODUCED_CARGO(0x25, Industry, 0, NIT_CARGO, "produced cargo 0"),
282 NIP_PRODUCED_CARGO(0x25, Industry, 1, NIT_CARGO, "produced cargo 1"),
283 NIP_PRODUCED_CARGO(0x25, Industry, 2, NIT_CARGO, "produced cargo 2"),
284 NIP_PRODUCED_CARGO(0x25, Industry, 3, NIT_CARGO, "produced cargo 3"),
285 NIP_PRODUCED_CARGO(0x25, Industry, 4, NIT_CARGO, "produced cargo 4"),
286 NIP_PRODUCED_CARGO(0x25, Industry, 5, NIT_CARGO, "produced cargo 5"),
287 NIP_PRODUCED_CARGO(0x25, Industry, 6, NIT_CARGO, "produced cargo 6"),
288 NIP_PRODUCED_CARGO(0x25, Industry, 7, NIT_CARGO, "produced cargo 7"),
289 NIP_PRODUCED_CARGO(0x25, Industry, 8, NIT_CARGO, "produced cargo 8"),
290 NIP_PRODUCED_CARGO(0x25, Industry, 9, NIT_CARGO, "produced cargo 9"),
291 NIP_PRODUCED_CARGO(0x25, Industry, 10, NIT_CARGO, "produced cargo 10"),
292 NIP_PRODUCED_CARGO(0x25, Industry, 11, NIT_CARGO, "produced cargo 11"),
293 NIP_PRODUCED_CARGO(0x25, Industry, 12, NIT_CARGO, "produced cargo 12"),
294 NIP_PRODUCED_CARGO(0x25, Industry, 13, NIT_CARGO, "produced cargo 13"),
295 NIP_PRODUCED_CARGO(0x25, Industry, 14, NIT_CARGO, "produced cargo 14"),
296 NIP_PRODUCED_CARGO(0x25, Industry, 15, NIT_CARGO, "produced cargo 15"),
297 NIP_ACCEPTED_CARGO(0x26, Industry, 0, NIT_CARGO, "accepted cargo 0"),
298 NIP_ACCEPTED_CARGO(0x26, Industry, 1, NIT_CARGO, "accepted cargo 1"),
299 NIP_ACCEPTED_CARGO(0x26, Industry, 2, NIT_CARGO, "accepted cargo 2"),
300 NIP_ACCEPTED_CARGO(0x26, Industry, 3, NIT_CARGO, "accepted cargo 3"),
301 NIP_ACCEPTED_CARGO(0x26, Industry, 4, NIT_CARGO, "accepted cargo 4"),
302 NIP_ACCEPTED_CARGO(0x26, Industry, 5, NIT_CARGO, "accepted cargo 5"),
303 NIP_ACCEPTED_CARGO(0x26, Industry, 6, NIT_CARGO, "accepted cargo 6"),
304 NIP_ACCEPTED_CARGO(0x26, Industry, 7, NIT_CARGO, "accepted cargo 7"),
305 NIP_ACCEPTED_CARGO(0x26, Industry, 8, NIT_CARGO, "accepted cargo 8"),
306 NIP_ACCEPTED_CARGO(0x26, Industry, 9, NIT_CARGO, "accepted cargo 9"),
307 NIP_ACCEPTED_CARGO(0x26, Industry, 10, NIT_CARGO, "accepted cargo 10"),
308 NIP_ACCEPTED_CARGO(0x26, Industry, 11, NIT_CARGO, "accepted cargo 11"),
309 NIP_ACCEPTED_CARGO(0x26, Industry, 12, NIT_CARGO, "accepted cargo 12"),
310 NIP_ACCEPTED_CARGO(0x26, Industry, 13, NIT_CARGO, "accepted cargo 13"),
311 NIP_ACCEPTED_CARGO(0x26, Industry, 14, NIT_CARGO, "accepted cargo 14"),
312 NIP_ACCEPTED_CARGO(0x26, Industry, 15, NIT_CARGO, "accepted cargo 15"),
313 NIP_END()
314};
315
316#undef NIP_PRODUCED_CARGO
317#undef NIP_ACCEPTED_CARGO
318
319#define NICI(cb_id, bit) NIC(cb_id, IndustrySpec, callback_mask, bit)
320static const NICallback _nic_industries[] = {
321 NICI(CBID_INDUSTRY_PROBABILITY, CBM_IND_PROBABILITY),
322 NICI(CBID_INDUSTRY_LOCATION, CBM_IND_LOCATION),
323 NICI(CBID_INDUSTRY_PRODUCTION_CHANGE, CBM_IND_PRODUCTION_CHANGE),
324 NICI(CBID_INDUSTRY_MONTHLYPROD_CHANGE, CBM_IND_MONTHLYPROD_CHANGE),
325 NICI(CBID_INDUSTRY_CARGO_SUFFIX, CBM_IND_CARGO_SUFFIX),
326 NICI(CBID_INDUSTRY_FUND_MORE_TEXT, CBM_IND_FUND_MORE_TEXT),
327 NICI(CBID_INDUSTRY_WINDOW_MORE_TEXT, CBM_IND_WINDOW_MORE_TEXT),
328 NICI(CBID_INDUSTRY_SPECIAL_EFFECT, CBM_IND_SPECIAL_EFFECT),
329 NICI(CBID_INDUSTRY_REFUSE_CARGO, CBM_IND_REFUSE_CARGO),
330 NICI(CBID_INDUSTRY_DECIDE_COLOUR, CBM_IND_DECIDE_COLOUR),
331 NICI(CBID_INDUSTRY_INPUT_CARGO_TYPES, CBM_IND_INPUT_CARGO_TYPES),
332 NICI(CBID_INDUSTRY_OUTPUT_CARGO_TYPES, CBM_IND_OUTPUT_CARGO_TYPES),
333 NICI(CBID_INDUSTRY_PROD_CHANGE_BUILD, CBM_IND_PROD_CHANGE_BUILD),
334 NIC_END()
335};
336
337static const NIVariable _niv_industries[] = {
338 NIV(0x40, "waiting cargo 0"),
339 NIV(0x41, "waiting cargo 1"),
340 NIV(0x42, "waiting cargo 2"),
341 NIV(0x43, "distance to closest dry/land tile"),
342 NIV(0x44, "layout number"),
343 NIV(0x45, "player info"),
344 NIV(0x46, "industry construction date"),
345 NIV(0x60, "get industry tile ID at offset"),
346 NIV(0x61, "get random tile bits at offset"),
347 NIV(0x62, "land info of nearby tiles"),
348 NIV(0x63, "animation stage of nearby tiles"),
349 NIV(0x64, "distance on nearest industry with given type"),
350 NIV(0x65, "get town zone and Manhattan distance of closest town"),
351 NIV(0x66, "get square of Euclidean distance of closes town"),
352 NIV(0x67, "count of industry and distance of closest instance"),
353 NIV(0x68, "count of industry and distance of closest instance with layout filter"),
354 NIV(0x69, "produced cargo waiting"),
355 NIV(0x6A, "cargo produced this month"),
356 NIV(0x6B, "cargo transported this month"),
357 NIV(0x6C, "cargo produced last month"),
358 NIV(0x6D, "cargo transported last month"),
359 NIV(0x6E, "date since cargo was delivered"),
360 NIV(0x6F, "waiting input cargo"),
361 NIV(0x70, "production rate"),
362 NIV(0x71, "percentage of cargo transported last month"),
363 NIV_END()
364};
365
366 class NIHIndustry : public NIHelper {
367 bool IsInspectable(uint index) const override { return GetIndustrySpec(Industry::Get(index)->type)->grf_prop.HasGrfFile(); }
368 uint GetParent(uint index) const override { return GetInspectWindowNumber(GSF_FAKE_TOWNS, Industry::Get(index)->town->index); }
369 const void *GetInstance(uint index)const override { return Industry::Get(index); }
370 const void *GetSpec(uint index) const override { return GetIndustrySpec(Industry::Get(index)->type); }
371 void SetStringParameters(uint index) const override { this->SetSimpleStringParameters(STR_INDUSTRY_NAME, index); }
372 uint32_t GetGRFID(uint index) const override { return (this->IsInspectable(index)) ? GetIndustrySpec(Industry::Get(index)->type)->grf_prop.grfid : 0; }
373
374 uint Resolve(uint index, uint var, uint param, bool &avail) const override
375 {
376 Industry *i = Industry::Get(index);
377 IndustriesResolverObject ro(i->location.tile, i, i->type);
378 return ro.GetScope(VSG_SCOPE_SELF)->GetVariable(var, param, avail);
379 }
380
381 const std::span<int32_t> GetPSA(uint index, uint32_t) const override
382 {
383 const Industry *i = (const Industry *)this->GetInstance(index);
384 if (i->psa == nullptr) return {};
385 return i->psa->storage;
386 }
387};
388
389static const NIFeature _nif_industry = {
390 _nip_industries,
391 _nic_industries,
392 _niv_industries,
393 new NIHIndustry(),
394};
395
396
397/*** NewGRF objects ***/
398
399#define NICO(cb_id, bit) NIC(cb_id, ObjectSpec, callback_mask, bit)
400static const NICallback _nic_objects[] = {
401 NICO(CBID_OBJECT_LAND_SLOPE_CHECK, CBM_OBJ_SLOPE_CHECK),
402 NICO(CBID_OBJECT_ANIMATION_NEXT_FRAME, CBM_OBJ_ANIMATION_NEXT_FRAME),
403 NICO(CBID_OBJECT_ANIMATION_START_STOP, CBM_NO_BIT),
404 NICO(CBID_OBJECT_ANIMATION_SPEED, CBM_OBJ_ANIMATION_SPEED),
405 NICO(CBID_OBJECT_COLOUR, CBM_OBJ_COLOUR),
406 NICO(CBID_OBJECT_FUND_MORE_TEXT, CBM_OBJ_FUND_MORE_TEXT),
407 NICO(CBID_OBJECT_AUTOSLOPE, CBM_OBJ_AUTOSLOPE),
408 NIC_END()
409};
410
411static const NIVariable _niv_objects[] = {
412 NIV(0x40, "relative position"),
413 NIV(0x41, "tile information"),
414 NIV(0x42, "construction date"),
415 NIV(0x43, "animation counter"),
416 NIV(0x44, "object founder"),
417 NIV(0x45, "get town zone and Manhattan distance of closest town"),
418 NIV(0x46, "get square of Euclidean distance of closes town"),
419 NIV(0x47, "colour"),
420 NIV(0x48, "view"),
421 NIV(0x60, "get object ID at offset"),
422 NIV(0x61, "get random tile bits at offset"),
423 NIV(0x62, "land info of nearby tiles"),
424 NIV(0x63, "animation stage of nearby tiles"),
425 NIV(0x64, "distance on nearest object with given type"),
426 NIV_END()
427};
428
429 class NIHObject : public NIHelper {
430 bool IsInspectable(uint index) const override { return ObjectSpec::GetByTile(index)->grf_prop.HasGrfFile(); }
431 uint GetParent(uint index) const override { return GetInspectWindowNumber(GSF_FAKE_TOWNS, Object::GetByTile(index)->town->index); }
432 const void *GetInstance(uint index)const override { return Object::GetByTile(index); }
433 const void *GetSpec(uint index) const override { return ObjectSpec::GetByTile(index); }
434 void SetStringParameters(uint index) const override { this->SetObjectAtStringParameters(STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT, INVALID_STRING_ID, index); }
435 uint32_t GetGRFID(uint index) const override { return (this->IsInspectable(index)) ? ObjectSpec::GetByTile(index)->grf_prop.grfid : 0; }
436
437 uint Resolve(uint index, uint var, uint param, bool &avail) const override
438 {
439 ObjectResolverObject ro(ObjectSpec::GetByTile(index), Object::GetByTile(index), index);
440 return ro.GetScope(VSG_SCOPE_SELF)->GetVariable(var, param, avail);
441 }
442};
443
444static const NIFeature _nif_object = {
445 nullptr,
446 _nic_objects,
447 _niv_objects,
448 new NIHObject(),
449};
450
451
452/*** NewGRF rail types ***/
453
454static const NIVariable _niv_railtypes[] = {
455 NIV(0x40, "terrain type"),
456 NIV(0x41, "enhanced tunnels"),
457 NIV(0x42, "level crossing status"),
458 NIV(0x43, "construction date"),
459 NIV(0x44, "town zone"),
460 NIV_END()
461};
462
463 class NIHRailType : public NIHelper {
464 bool IsInspectable(uint) const override { return true; }
465 uint GetParent(uint) const override { return UINT32_MAX; }
466 const void *GetInstance(uint) const override { return nullptr; }
467 const void *GetSpec(uint) const override { return nullptr; }
468 void SetStringParameters(uint index) const override { this->SetObjectAtStringParameters(STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE, INVALID_STRING_ID, index); }
469 uint32_t GetGRFID(uint) const override { return 0; }
470
471 uint Resolve(uint index, uint var, uint param, bool &avail) const override
472 {
473 /* There is no unique GRFFile for the tile. Multiple GRFs can define different parts of the railtype.
474 * However, currently the NewGRF Debug GUI does not display variables depending on the GRF (like 0x7F) anyway. */
475 RailTypeResolverObject ro(nullptr, index, TCX_NORMAL, RTSG_END);
476 return ro.GetScope(VSG_SCOPE_SELF)->GetVariable(var, param, avail);
477 }
478};
479
480static const NIFeature _nif_railtype = {
481 nullptr,
482 nullptr,
483 _niv_railtypes,
484 new NIHRailType(),
485};
486
487
488/*** NewGRF airport tiles ***/
489
490#define NICAT(cb_id, bit) NIC(cb_id, AirportTileSpec, callback_mask, bit)
491static const NICallback _nic_airporttiles[] = {
492 NICAT(CBID_AIRPTILE_DRAW_FOUNDATIONS, CBM_AIRT_DRAW_FOUNDATIONS),
493 NICAT(CBID_AIRPTILE_ANIM_START_STOP, CBM_NO_BIT),
494 NICAT(CBID_AIRPTILE_ANIM_NEXT_FRAME, CBM_AIRT_ANIM_NEXT_FRAME),
495 NICAT(CBID_AIRPTILE_ANIMATION_SPEED, CBM_AIRT_ANIM_SPEED),
496 NIC_END()
497};
498
499 class NIHAirportTile : public NIHelper {
500 bool IsInspectable(uint index) const override { return AirportTileSpec::Get(GetAirportGfx(index))->grf_prop.HasGrfFile(); }
501 uint GetParent(uint index) const override { return GetInspectWindowNumber(GSF_AIRPORTS, GetStationIndex(index)); }
502 const void *GetInstance(uint)const override { return nullptr; }
503 const void *GetSpec(uint index) const override { return AirportTileSpec::Get(GetAirportGfx(index)); }
504 void SetStringParameters(uint index) const override { this->SetObjectAtStringParameters(STR_STATION_NAME, GetStationIndex(index), index); }
505 uint32_t GetGRFID(uint index) const override { return (this->IsInspectable(index)) ? AirportTileSpec::Get(GetAirportGfx(index))->grf_prop.grfid : 0; }
506
507 uint Resolve(uint index, uint var, uint param, bool &avail) const override
508 {
509 AirportTileResolverObject ro(AirportTileSpec::GetByTile(index), index, Station::GetByTile(index));
510 return ro.GetScope(VSG_SCOPE_SELF)->GetVariable(var, param, avail);
511 }
512};
513
514static const NIFeature _nif_airporttile = {
515 nullptr,
516 _nic_airporttiles,
517 _niv_industrytiles, // Yes, they share this (at least now)
518 new NIHAirportTile(),
519};
520
521
522/*** NewGRF airports ***/
523
524static const NIVariable _niv_airports[] = {
525 NIV(0x40, "Layout number"),
526 NIV(0x48, "bitmask of accepted cargoes"),
527 NIV(0x60, "amount of cargo waiting"),
528 NIV(0x61, "time since last cargo pickup"),
529 NIV(0x62, "rating of cargo"),
530 NIV(0x63, "time spent on route"),
531 NIV(0x64, "information about last vehicle picking cargo up"),
532 NIV(0x65, "amount of cargo acceptance"),
533 NIV(0x69, "information about cargo accepted in the past"),
534 NIV(0xF1, "type of the airport"),
535 NIV(0xF6, "airport block status"),
536 NIV(0xFA, "built date"),
537 NIV_END()
538};
539
540 class NIHAirport : public NIHelper {
541 bool IsInspectable(uint index) const override { return AirportSpec::Get(Station::Get(index)->airport.type)->grf_prop.HasGrfFile(); }
542 uint GetParent(uint index) const override { return GetInspectWindowNumber(GSF_FAKE_TOWNS, Station::Get(index)->town->index); }
543 const void *GetInstance(uint index)const override { return Station::Get(index); }
544 const void *GetSpec(uint index) const override { return AirportSpec::Get(Station::Get(index)->airport.type); }
545 void SetStringParameters(uint index) const override { this->SetObjectAtStringParameters(STR_STATION_NAME, index, Station::Get(index)->airport.tile); }
546 uint32_t GetGRFID(uint index) const override { return (this->IsInspectable(index)) ? AirportSpec::Get(Station::Get(index)->airport.type)->grf_prop.grfid : 0; }
547
548 uint Resolve(uint index, uint var, uint param, bool &avail) const override
549 {
550 Station *st = Station::Get(index);
551 AirportResolverObject ro(st->airport.tile, st, AirportSpec::Get(st->airport.type), st->airport.layout);
552 return ro.GetScope(VSG_SCOPE_SELF)->GetVariable(var, param, avail);
553 }
554
555 const std::span<int32_t> GetPSA(uint index, uint32_t) const override
556 {
557 const Station *st = (const Station *)this->GetInstance(index);
558 if (st->airport.psa == nullptr) return {};
559 return st->airport.psa->storage;
560 }
561};
562
563static const NIFeature _nif_airport = {
564 nullptr,
565 nullptr,
566 _niv_airports,
567 new NIHAirport(),
568};
569
570
571/*** NewGRF towns ***/
572
573static const NIVariable _niv_towns[] = {
574 NIV(0x40, "larger town effect on this town"),
575 NIV(0x41, "town index"),
576 NIV(0x82, "population"),
577 NIV(0x94, "zone radius 0"),
578 NIV(0x96, "zone radius 1"),
579 NIV(0x98, "zone radius 2"),
580 NIV(0x9A, "zone radius 3"),
581 NIV(0x9C, "zone radius 4"),
582 NIV(0xB6, "number of buildings"),
583 NIV_END()
584};
585
586 class NIHTown : public NIHelper {
587 bool IsInspectable(uint index) const override { return Town::IsValidID(index); }
588 uint GetParent(uint) const override { return UINT32_MAX; }
589 const void *GetInstance(uint index)const override { return Town::Get(index); }
590 const void *GetSpec(uint) const override { return nullptr; }
591 void SetStringParameters(uint index) const override { this->SetSimpleStringParameters(STR_TOWN_NAME, index); }
592 uint32_t GetGRFID(uint) const override { return 0; }
593 bool PSAWithParameter() const override { return true; }
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 std::span<int32_t> GetPSA(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;
607 }
608
609 return {};
610 }
611};
612
613static const NIFeature _nif_town = {
614 nullptr,
615 nullptr,
616 _niv_towns,
617 new NIHTown(),
618};
619
620/*** NewGRF road types ***/
621
622static 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
648static const NIFeature _nif_roadtype = {
649 nullptr,
650 nullptr,
651 _niv_roadtypes,
652 new NIHRoadType(),
653};
654
655static 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)
663static 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
671static 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.grfid : 0; }
704
705 uint Resolve(uint index, uint var, uint32_t param, bool &avail) const override
706 {
707 StationGfx view = GetStationGfx(index);
708 RoadStopResolverObject ro(GetRoadStopSpec(index), BaseStation::GetByTile(index), index, INVALID_ROADTYPE, GetStationType(index), view);
709 return ro.GetScope(VSG_SCOPE_SELF)->GetVariable(var, param, avail);
710 }
711};
712
713static const NIFeature _nif_roadstop = {
714 nullptr,
715 _nic_roadstops,
716 _nif_roadstops,
717 new NIHRoadStop(),
718};
719
721 static const NIFeature * const _nifeatures[] = {
722 &_nif_vehicle, // GSF_TRAINS
723 &_nif_vehicle, // GSF_ROADVEHICLES
724 &_nif_vehicle, // GSF_SHIPS
725 &_nif_vehicle, // GSF_AIRCRAFT
726 &_nif_station, // GSF_STATIONS
727 nullptr, // GSF_CANALS (no callbacks/action2 implemented)
728 nullptr, // GSF_BRIDGES (no callbacks/action2)
729 &_nif_house, // GSF_HOUSES
730 nullptr, // GSF_GLOBALVAR (has no "physical" objects)
731 &_nif_industrytile, // GSF_INDUSTRYTILES
732 &_nif_industry, // GSF_INDUSTRIES
733 nullptr, // GSF_CARGOES (has no "physical" objects)
734 nullptr, // GSF_SOUNDFX (has no "physical" objects)
735 &_nif_airport, // GSF_AIRPORTS
736 nullptr, // GSF_SIGNALS (feature not implemented)
737 &_nif_object, // GSF_OBJECTS
738 &_nif_railtype, // GSF_RAILTYPES
739 &_nif_airporttile, // GSF_AIRPORTTILES
740 &_nif_roadtype, // GSF_ROADTYPES
741 &_nif_tramtype, // GSF_TRAMTYPES
742 &_nif_roadstop, // GSF_ROADSTOPS
743 &_nif_town, // GSF_FAKE_TOWNS
744};
745static_assert(lengthof(_nifeatures) == GSF_FAKE_END);
NIHAirportTile
Definition newgrf_debug_data.h:499
NIHAirportTile::GetParent
uint GetParent(uint index) const override
Get the parent "window_number" of a given instance.
Definition newgrf_debug_data.h:501
NIHAirportTile::GetInstance
const void * GetInstance(uint) const override
Get the instance given an index.
Definition newgrf_debug_data.h:502
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:507
NIHAirportTile::GetGRFID
uint32_t GetGRFID(uint index) const override
Get the GRFID of the file that includes this item.
Definition newgrf_debug_data.h:505
NIHAirportTile::GetSpec
const void * GetSpec(uint index) const override
Get (NewGRF) specs given an index.
Definition newgrf_debug_data.h:503
NIHAirportTile::IsInspectable
bool IsInspectable(uint index) const override
Is the item with the given index inspectable?
Definition newgrf_debug_data.h:500
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:504
NIHAirport
Definition newgrf_debug_data.h:540
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:545
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:548
NIHAirport::GetInstance
const void * GetInstance(uint index) const override
Get the instance given an index.
Definition newgrf_debug_data.h:543
NIHAirport::IsInspectable
bool IsInspectable(uint index) const override
Is the item with the given index inspectable?
Definition newgrf_debug_data.h:541
NIHAirport::GetParent
uint GetParent(uint index) const override
Get the parent "window_number" of a given instance.
Definition newgrf_debug_data.h:542
NIHAirport::GetSpec
const void * GetSpec(uint index) const override
Get (NewGRF) specs given an index.
Definition newgrf_debug_data.h:544
NIHAirport::GetGRFID
uint32_t GetGRFID(uint index) const override
Get the GRFID of the file that includes this item.
Definition newgrf_debug_data.h:546
NIHAirport::GetPSA
const std::span< int32_t > GetPSA(uint index, uint32_t) const override
Gets the span containing the persistent storage.
Definition newgrf_debug_data.h:555
NIHHouse
Definition newgrf_debug_data.h:203
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
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
NIHHouse::GetSpec
const void * GetSpec(uint index) const override
Get (NewGRF) specs given an index.
Definition newgrf_debug_data.h:207
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
NIHHouse::GetParent
uint GetParent(uint index) const override
Get the parent "window_number" of a given instance.
Definition newgrf_debug_data.h:205
NIHHouse::GetInstance
const void * GetInstance(uint) const override
Get the instance given an index.
Definition newgrf_debug_data.h:206
NIHHouse::IsInspectable
bool IsInspectable(uint index) const override
Is the item with the given index inspectable?
Definition newgrf_debug_data.h:204
NIHIndustryTile
Definition newgrf_debug_data.h:253
NIHIndustryTile::GetSpec
const void * GetSpec(uint index) const override
Get (NewGRF) specs given an index.
Definition newgrf_debug_data.h:257
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
NIHIndustryTile::IsInspectable
bool IsInspectable(uint index) const override
Is the item with the given index inspectable?
Definition newgrf_debug_data.h:254
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
NIHIndustryTile::GetParent
uint GetParent(uint index) const override
Get the parent "window_number" of a given instance.
Definition newgrf_debug_data.h:255
NIHIndustryTile::GetInstance
const void * GetInstance(uint) const override
Get the instance given an index.
Definition newgrf_debug_data.h:256
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
NIHIndustry
Definition newgrf_debug_data.h:366
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:374
NIHIndustry::GetSpec
const void * GetSpec(uint index) const override
Get (NewGRF) specs given an index.
Definition newgrf_debug_data.h:370
NIHIndustry::GetParent
uint GetParent(uint index) const override
Get the parent "window_number" of a given instance.
Definition newgrf_debug_data.h:368
NIHIndustry::IsInspectable
bool IsInspectable(uint index) const override
Is the item with the given index inspectable?
Definition newgrf_debug_data.h:367
NIHIndustry::GetPSA
const std::span< int32_t > GetPSA(uint index, uint32_t) const override
Gets the span containing the persistent storage.
Definition newgrf_debug_data.h:381
NIHIndustry::GetGRFID
uint32_t GetGRFID(uint index) const override
Get the GRFID of the file that includes this item.
Definition newgrf_debug_data.h:372
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:371
NIHIndustry::GetInstance
const void * GetInstance(uint index) const override
Get the instance given an index.
Definition newgrf_debug_data.h:369
NIHObject
Definition newgrf_debug_data.h:429
NIHObject::GetSpec
const void * GetSpec(uint index) const override
Get (NewGRF) specs given an index.
Definition newgrf_debug_data.h:433
NIHObject::IsInspectable
bool IsInspectable(uint index) const override
Is the item with the given index inspectable?
Definition newgrf_debug_data.h:430
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:434
NIHObject::GetInstance
const void * GetInstance(uint index) const override
Get the instance given an index.
Definition newgrf_debug_data.h:432
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:437
NIHObject::GetGRFID
uint32_t GetGRFID(uint index) const override
Get the GRFID of the file that includes this item.
Definition newgrf_debug_data.h:435
NIHObject::GetParent
uint GetParent(uint index) const override
Get the parent "window_number" of a given instance.
Definition newgrf_debug_data.h:431
NIHRailType
Definition newgrf_debug_data.h:463
NIHRailType::IsInspectable
bool IsInspectable(uint) const override
Is the item with the given index inspectable?
Definition newgrf_debug_data.h:464
NIHRailType::GetGRFID
uint32_t GetGRFID(uint) const override
Get the GRFID of the file that includes this item.
Definition newgrf_debug_data.h:469
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:471
NIHRailType::GetInstance
const void * GetInstance(uint) const override
Get the instance given an index.
Definition newgrf_debug_data.h:466
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:468
NIHRailType::GetParent
uint GetParent(uint) const override
Get the parent "window_number" of a given instance.
Definition newgrf_debug_data.h:465
NIHRailType::GetSpec
const void * GetSpec(uint) const override
Get (NewGRF) specs given an index.
Definition newgrf_debug_data.h:467
NIHRoadStop
Definition newgrf_debug_data.h:697
NIHRoadStop::GetParent
uint GetParent(uint index) const override
Get the parent "window_number" of a given instance.
Definition newgrf_debug_data.h:699
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
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
NIHRoadStop::IsInspectable
bool IsInspectable(uint index) const override
Is the item with the given index inspectable?
Definition newgrf_debug_data.h:698
NIHRoadStop::GetSpec
const void * GetSpec(uint index) const override
Get (NewGRF) specs given an index.
Definition newgrf_debug_data.h:701
NIHRoadStop::GetInstance
const void * GetInstance(uint) const override
Get the instance given an index.
Definition newgrf_debug_data.h:700
NIHRoadType
Definition newgrf_debug_data.h:631
NIHRoadType::GetSpec
const void * GetSpec(uint) const override
Get (NewGRF) specs given an index.
Definition newgrf_debug_data.h:635
NIHRoadType::GetParent
uint GetParent(uint) const override
Get the parent "window_number" of a given instance.
Definition newgrf_debug_data.h:633
NIHRoadType::GetInstance
const void * GetInstance(uint) const override
Get the instance given an index.
Definition newgrf_debug_data.h:634
NIHRoadType::IsInspectable
bool IsInspectable(uint) const override
Is the item with the given index inspectable?
Definition newgrf_debug_data.h:632
NIHRoadType::GetGRFID
uint32_t GetGRFID(uint) const override
Get the GRFID of the file that includes this item.
Definition newgrf_debug_data.h:637
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
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
NIHStation
Definition newgrf_debug_data.h:138
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
NIHStation::GetSpec
const void * GetSpec(uint index) const override
Get (NewGRF) specs given an index.
Definition newgrf_debug_data.h:142
NIHStation::GetInstance
const void * GetInstance(uint) const override
Get the instance given an index.
Definition newgrf_debug_data.h:141
NIHStation::GetParent
uint GetParent(uint index) const override
Get the parent "window_number" of a given instance.
Definition newgrf_debug_data.h:140
NIHStation::IsInspectable
bool IsInspectable(uint index) const override
Is the item with the given index inspectable?
Definition newgrf_debug_data.h:139
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
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
NIHTown
Definition newgrf_debug_data.h:586
NIHTown::GetGRFID
uint32_t GetGRFID(uint) const override
Get the GRFID of the file that includes this item.
Definition newgrf_debug_data.h:592
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
NIHTown::PSAWithParameter
bool PSAWithParameter() const override
Used to decide if the PSA needs a parameter or not.
Definition newgrf_debug_data.h:593
NIHTown::GetSpec
const void * GetSpec(uint) const override
Get (NewGRF) specs given an index.
Definition newgrf_debug_data.h:590
NIHTown::GetInstance
const void * GetInstance(uint index) const override
Get the instance given an index.
Definition newgrf_debug_data.h:589
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:591
NIHTown::GetParent
uint GetParent(uint) const override
Get the parent "window_number" of a given instance.
Definition newgrf_debug_data.h:588
NIHTown::GetPSA
const std::span< int32_t > GetPSA(uint index, uint32_t grfid) const override
Gets the span containing the persistent storage.
Definition newgrf_debug_data.h:601
NIHTown::IsInspectable
bool IsInspectable(uint index) const override
Is the item with the given index inspectable?
Definition newgrf_debug_data.h:587
NIHVehicle
Definition newgrf_debug_data.h:73
NIHVehicle::GetParent
uint GetParent(uint index) const override
Get the parent "window_number" of a given instance.
Definition newgrf_debug_data.h:75
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
NIHVehicle::GetSpec
const void * GetSpec(uint index) const override
Get (NewGRF) specs given an index.
Definition newgrf_debug_data.h:77
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
NIHVehicle::IsInspectable
bool IsInspectable(uint index) const override
Is the item with the given index inspectable?
Definition newgrf_debug_data.h:74
NIHVehicle::GetInstance
const void * GetInstance(uint index) const override
Get the instance given an index.
Definition newgrf_debug_data.h:76
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
NIHelper
Helper class to wrap some functionality/queries in.
Definition newgrf_debug_gui.cpp:118
NIHelper::SetSimpleStringParameters
void SetSimpleStringParameters(StringID string, uint32_t index) const
Helper to make setting the strings easier.
Definition newgrf_debug_gui.cpp:200
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:213
GetIndustrySpec
const IndustrySpec * GetIndustrySpec(IndustryType thistype)
Accessor for array _industry_specs.
Definition industry_cmd.cpp:123
GetIndustryTileSpec
const IndustryTileSpec * GetIndustryTileSpec(IndustryGfx gfx)
Accessor for array _industry_tile_specs.
Definition industry_cmd.cpp:137
GetIndustryGfx
IndustryGfx GetIndustryGfx(Tile t)
Get the industry graphics ID for the given industry tile.
Definition industry_map.h:137
GetIndustryIndex
IndustryID GetIndustryIndex(Tile t)
Get the industry ID of the given tile.
Definition industry_map.h:63
GSF_FAKE_TOWNS
@ GSF_FAKE_TOWNS
Fake town GrfSpecFeature for NewGRF debugging (parent scope)
Definition newgrf.h:91
GSF_FAKE_END
@ GSF_FAKE_END
End of the fake features.
Definition newgrf.h:92
StationGfx
uint8_t StationGfx
Copy from station_map.h.
Definition newgrf_airport.h:22
CBM_STATION_DRAW_TILE_LAYOUT
@ CBM_STATION_DRAW_TILE_LAYOUT
Use callback to select a tile layout to use when drawing.
Definition newgrf_callbacks.h:318
CBM_STATION_ANIMATION_SPEED
@ CBM_STATION_ANIMATION_SPEED
Customize the animation speed of the station.
Definition newgrf_callbacks.h:320
CBM_STATION_SLOPE_CHECK
@ CBM_STATION_SLOPE_CHECK
Check slope of new station tiles.
Definition newgrf_callbacks.h:321
CBM_STATION_AVAIL
@ CBM_STATION_AVAIL
Availability of station in construction window.
Definition newgrf_callbacks.h:317
CBM_STATION_ANIMATION_NEXT_FRAME
@ CBM_STATION_ANIMATION_NEXT_FRAME
Use a custom next frame callback.
Definition newgrf_callbacks.h:319
CBM_INDT_ANIM_SPEED
@ CBM_INDT_ANIM_SPEED
decides animation speed
Definition newgrf_callbacks.h:393
CBM_INDT_ACCEPT_CARGO
@ CBM_INDT_ACCEPT_CARGO
decides accepted types
Definition newgrf_callbacks.h:395
CBM_INDT_AUTOSLOPE
@ CBM_INDT_AUTOSLOPE
decides allowance of autosloping
Definition newgrf_callbacks.h:398
CBM_INDT_CARGO_ACCEPTANCE
@ CBM_INDT_CARGO_ACCEPTANCE
decides amount of cargo acceptance
Definition newgrf_callbacks.h:394
CBM_INDT_ANIM_NEXT_FRAME
@ CBM_INDT_ANIM_NEXT_FRAME
decides next animation frame
Definition newgrf_callbacks.h:392
CBM_INDT_SHAPE_CHECK
@ CBM_INDT_SHAPE_CHECK
decides slope suitability
Definition newgrf_callbacks.h:396
CBM_INDT_DRAW_FOUNDATIONS
@ CBM_INDT_DRAW_FOUNDATIONS
decides if default foundations need to be drawn
Definition newgrf_callbacks.h:397
CBM_AIRT_ANIM_SPEED
@ CBM_AIRT_ANIM_SPEED
decides animation speed
Definition newgrf_callbacks.h:418
CBM_AIRT_DRAW_FOUNDATIONS
@ CBM_AIRT_DRAW_FOUNDATIONS
decides if default foundations need to be drawn
Definition newgrf_callbacks.h:420
CBM_AIRT_ANIM_NEXT_FRAME
@ CBM_AIRT_ANIM_NEXT_FRAME
decides next animation frame
Definition newgrf_callbacks.h:417
CBM_IND_PROD_CHANGE_BUILD
@ CBM_IND_PROD_CHANGE_BUILD
initialise production level on construction
Definition newgrf_callbacks.h:385
CBM_IND_PRODUCTION_CHANGE
@ CBM_IND_PRODUCTION_CHANGE
controls random production change
Definition newgrf_callbacks.h:375
CBM_IND_LOCATION
@ CBM_IND_LOCATION
check industry construction on given area
Definition newgrf_callbacks.h:374
CBM_IND_DECIDE_COLOUR
@ CBM_IND_DECIDE_COLOUR
give a custom colour to newly build industries
Definition newgrf_callbacks.h:382
CBM_IND_FUND_MORE_TEXT
@ CBM_IND_FUND_MORE_TEXT
additional text in fund window
Definition newgrf_callbacks.h:378
CBM_IND_PROBABILITY
@ CBM_IND_PROBABILITY
industry availability/probability callback
Definition newgrf_callbacks.h:371
CBM_IND_SPECIAL_EFFECT
@ CBM_IND_SPECIAL_EFFECT
control special effects
Definition newgrf_callbacks.h:380
CBM_IND_INPUT_CARGO_TYPES
@ CBM_IND_INPUT_CARGO_TYPES
customize the cargoes the industry requires
Definition newgrf_callbacks.h:383
CBM_IND_REFUSE_CARGO
@ CBM_IND_REFUSE_CARGO
option out of accepting cargo
Definition newgrf_callbacks.h:381
CBM_IND_WINDOW_MORE_TEXT
@ CBM_IND_WINDOW_MORE_TEXT
additional text in industry window
Definition newgrf_callbacks.h:379
CBM_IND_MONTHLYPROD_CHANGE
@ CBM_IND_MONTHLYPROD_CHANGE
controls monthly random production change
Definition newgrf_callbacks.h:376
CBM_IND_CARGO_SUFFIX
@ CBM_IND_CARGO_SUFFIX
cargo sub-type display
Definition newgrf_callbacks.h:377
CBM_IND_OUTPUT_CARGO_TYPES
@ CBM_IND_OUTPUT_CARGO_TYPES
customize the cargoes the industry produces
Definition newgrf_callbacks.h:384
CBID_HOUSE_ANIMATION_START_STOP
@ CBID_HOUSE_ANIMATION_START_STOP
Called for periodically starting or stopping the animation.
Definition newgrf_callbacks.h:66
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_VEHICLE_SOUND_EFFECT
@ CBID_VEHICLE_SOUND_EFFECT
Called to play a special sound effect.
Definition newgrf_callbacks.h:147
CBID_INDTILE_ANIMATION_SPEED
@ CBID_INDTILE_ANIMATION_SPEED
Called to indicate how long the current animation frame should last.
Definition newgrf_callbacks.h:105
CBID_INDTILE_ANIM_START_STOP
@ CBID_INDTILE_ANIM_START_STOP
Called for periodically starting or stopping the animation.
Definition newgrf_callbacks.h:99
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
CBID_INDUSTRY_SPECIAL_EFFECT
@ CBID_INDUSTRY_SPECIAL_EFFECT
Called to determine industry special effects.
Definition newgrf_callbacks.h:174
CBID_INDTILE_ANIM_NEXT_FRAME
@ CBID_INDTILE_ANIM_NEXT_FRAME
Called to determine industry tile next animation frame.
Definition newgrf_callbacks.h:102
CBID_INDUSTRY_PROBABILITY
@ CBID_INDUSTRY_PROBABILITY
Called to determine if the given industry type is available.
Definition newgrf_callbacks.h:87
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
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
CBID_INDTILE_AUTOSLOPE
@ CBID_INDTILE_AUTOSLOPE
Called to determine if industry can alter the ground below industry tile.
Definition newgrf_callbacks.h:177
CBID_VEHICLE_AUTOREPLACE_SELECTION
@ CBID_VEHICLE_AUTOREPLACE_SELECTION
Return the vehicles this given vehicle can be "upgraded" to.
Definition newgrf_callbacks.h:150
CBID_STATION_BUILD_TILE_LAYOUT
@ CBID_STATION_BUILD_TILE_LAYOUT
Called when building a station to customize the tile layout.
Definition newgrf_callbacks.h:96
CBID_HOUSE_CONSTRUCTION_STATE_CHANGE
@ CBID_HOUSE_CONSTRUCTION_STATE_CHANGE
Called whenever the construction state of a house changes.
Definition newgrf_callbacks.h:69
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
CBID_INDUSTRY_DECIDE_COLOUR
@ CBID_INDUSTRY_DECIDE_COLOUR
Called to determine the colour of an industry.
Definition newgrf_callbacks.h:215
CBID_INDUSTRY_WINDOW_MORE_TEXT
@ CBID_INDUSTRY_WINDOW_MORE_TEXT
Called to determine more text in the industry window.
Definition newgrf_callbacks.h:171
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
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_VEHICLE_NAME
@ CBID_VEHICLE_NAME
Called to determine the engine name to show.
Definition newgrf_callbacks.h:284
CBID_STATION_DRAW_TILE_LAYOUT
@ CBID_STATION_DRAW_TILE_LAYOUT
Choose a tile layout to draw, instead of the standard range.
Definition newgrf_callbacks.h:42
CBID_VEHICLE_CARGO_SUFFIX
@ CBID_VEHICLE_CARGO_SUFFIX
Determine the cargo "suffixes" for each refit possibility of a cargo.
Definition newgrf_callbacks.h:60
CBID_HOUSE_COLOUR
@ CBID_HOUSE_COLOUR
Called to determine the colour of a town building.
Definition newgrf_callbacks.h:75
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_AIRPTILE_ANIM_START_STOP
@ CBID_AIRPTILE_ANIM_START_STOP
Called for periodically starting or stopping the animation.
Definition newgrf_callbacks.h:236
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
CBID_INDUSTRY_PRODUCTION_CHANGE
@ CBID_INDUSTRY_PRODUCTION_CHANGE
Called on production changes, so it can be adjusted.
Definition newgrf_callbacks.h:111
CBID_INDUSTRY_CARGO_SUFFIX
@ CBID_INDUSTRY_CARGO_SUFFIX
Called to determine text to display after cargo name.
Definition newgrf_callbacks.h:162
CBID_OBJECT_AUTOSLOPE
@ CBID_OBJECT_AUTOSLOPE
Called to determine if one can alter the ground below an object tile.
Definition newgrf_callbacks.h:272
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_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
CBID_HOUSE_ANIMATION_SPEED
@ CBID_HOUSE_ANIMATION_SPEED
Called to indicate how long the current animation frame should last.
Definition newgrf_callbacks.h:81
CBID_HOUSE_AUTOSLOPE
@ CBID_HOUSE_AUTOSLOPE
Called to determine if one can alter the ground below a house tile.
Definition newgrf_callbacks.h:230
CBID_AIRPTILE_ANIMATION_SPEED
@ CBID_AIRPTILE_ANIMATION_SPEED
Called to indicate how long the current animation frame should last.
Definition newgrf_callbacks.h:242
CBID_OBJECT_ANIMATION_START_STOP
@ CBID_OBJECT_ANIMATION_START_STOP
Called for periodically starting or stopping the animation.
Definition newgrf_callbacks.h:260
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
CBID_STATION_AVAILABILITY
@ CBID_STATION_AVAILABILITY
Determine whether a newstation should be made available to build.
Definition newgrf_callbacks.h:39
CBID_HOUSE_ANIMATION_NEXT_FRAME
@ CBID_HOUSE_ANIMATION_NEXT_FRAME
Determine the next animation frame for a house.
Definition newgrf_callbacks.h:63
CBID_HOUSE_CUSTOM_NAME
@ CBID_HOUSE_CUSTOM_NAME
Called on the Get Tile Description for an house tile.
Definition newgrf_callbacks.h:224
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
CBID_HOUSE_DENY_DESTRUCTION
@ CBID_HOUSE_DENY_DESTRUCTION
Called to determine whether a town building can be destroyed.
Definition newgrf_callbacks.h:194
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
CBID_STATION_ANIMATION_SPEED
@ CBID_STATION_ANIMATION_SPEED
Called to indicate how long the current animation frame should last.
Definition newgrf_callbacks.h:191
CBID_HOUSE_ALLOW_CONSTRUCTION
@ CBID_HOUSE_ALLOW_CONSTRUCTION
Determine whether the house can be built on the specified tile.
Definition newgrf_callbacks.h:54
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
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
CBID_HOUSE_ACCEPT_CARGO
@ CBID_HOUSE_ACCEPT_CARGO
Called to determine which cargoes a town building should accept.
Definition newgrf_callbacks.h:114
CBID_OBJECT_ANIMATION_NEXT_FRAME
@ CBID_OBJECT_ANIMATION_NEXT_FRAME
Determine the next animation frame for a house.
Definition newgrf_callbacks.h:257
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_HOUSE_PRODUCE_CARGO
@ CBID_HOUSE_PRODUCE_CARGO
Called to determine how much cargo a town building produces.
Definition newgrf_callbacks.h:129
CBID_VEHICLE_MODIFY_PROPERTY
@ CBID_VEHICLE_MODIFY_PROPERTY
Called to modify various vehicle properties.
Definition newgrf_callbacks.h:159
CBID_OBJECT_COLOUR
@ CBID_OBJECT_COLOUR
Called to determine the colour of a town building.
Definition newgrf_callbacks.h:266
CBID_STATION_ANIM_START_STOP
@ CBID_STATION_ANIM_START_STOP
Called for periodically starting or stopping the animation.
Definition newgrf_callbacks.h:185
CBID_VEHICLE_ADDITIONAL_TEXT
@ CBID_VEHICLE_ADDITIONAL_TEXT
This callback is called from vehicle purchase lists.
Definition newgrf_callbacks.h:93
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_OBJECT_ANIMATION_SPEED
@ CBID_OBJECT_ANIMATION_SPEED
Called to indicate how long the current animation frame should last.
Definition newgrf_callbacks.h:263
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
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
CBID_HOUSE_DESTRUCTION
@ CBID_HOUSE_DESTRUCTION
Called periodically to determine if a house should be destroyed.
Definition newgrf_callbacks.h:84
CBID_VEHICLE_VISUAL_EFFECT
@ CBID_VEHICLE_VISUAL_EFFECT
Visual effects and wagon power.
Definition newgrf_callbacks.h:30
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
CBID_INDTILE_CARGO_ACCEPTANCE
@ CBID_INDTILE_CARGO_ACCEPTANCE
Called to query the cargo acceptance of the industry tile.
Definition newgrf_callbacks.h:117
CBID_INDUSTRY_LOCATION
@ CBID_INDUSTRY_LOCATION
Called to determine if the given industry can be built on specific area.
Definition newgrf_callbacks.h:108
CBID_INDTILE_ACCEPT_CARGO
@ CBID_INDTILE_ACCEPT_CARGO
Called to determine which cargoes an industry should accept.
Definition newgrf_callbacks.h:120
CBID_STATION_ANIM_NEXT_FRAME
@ CBID_STATION_ANIM_NEXT_FRAME
Called to determine station tile next animation frame.
Definition newgrf_callbacks.h:188
CBID_VEHICLE_ARTIC_ENGINE
@ CBID_VEHICLE_ARTIC_ENGINE
Builds articulated engines for trains and RVs.
Definition newgrf_callbacks.h:51
CBID_AIRPTILE_ANIM_NEXT_FRAME
@ CBID_AIRPTILE_ANIM_NEXT_FRAME
Called to determine airport tile next animation frame.
Definition newgrf_callbacks.h:239
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
CBM_VEHICLE_CARGO_SUFFIX
@ CBM_VEHICLE_CARGO_SUFFIX
Show suffix after cargo name.
Definition newgrf_callbacks.h:306
CBM_VEHICLE_NAME
@ CBM_VEHICLE_NAME
Engine name.
Definition newgrf_callbacks.h:309
CBM_VEHICLE_COLOUR_REMAP
@ CBM_VEHICLE_COLOUR_REMAP
Change colour mapping of vehicle.
Definition newgrf_callbacks.h:307
CBM_VEHICLE_SOUND_EFFECT
@ CBM_VEHICLE_SOUND_EFFECT
Vehicle uses custom sound effects.
Definition newgrf_callbacks.h:308
CBM_VEHICLE_LENGTH
@ CBM_VEHICLE_LENGTH
Vehicle length (trains and road vehicles)
Definition newgrf_callbacks.h:302
CBM_VEHICLE_VISUAL_EFFECT
@ CBM_VEHICLE_VISUAL_EFFECT
Visual effects and wagon power (trains, road vehicles and ships)
Definition newgrf_callbacks.h:301
CBM_VEHICLE_LOAD_AMOUNT
@ CBM_VEHICLE_LOAD_AMOUNT
Load amount.
Definition newgrf_callbacks.h:303
CBM_VEHICLE_REFIT_CAPACITY
@ CBM_VEHICLE_REFIT_CAPACITY
Cargo capacity after refit.
Definition newgrf_callbacks.h:304
CBM_VEHICLE_ARTIC_ENGINE
@ CBM_VEHICLE_ARTIC_ENGINE
Add articulated engines (trains and road vehicles)
Definition newgrf_callbacks.h:305
CBM_ROAD_STOP_AVAIL
@ CBM_ROAD_STOP_AVAIL
Availability of road stop in construction window.
Definition newgrf_callbacks.h:328
CBM_ROAD_STOP_ANIMATION_SPEED
@ CBM_ROAD_STOP_ANIMATION_SPEED
Customize the animation speed of the road stop.
Definition newgrf_callbacks.h:330
CBM_ROAD_STOP_ANIMATION_NEXT_FRAME
@ CBM_ROAD_STOP_ANIMATION_NEXT_FRAME
Use a custom next frame callback.
Definition newgrf_callbacks.h:329
CBM_OBJ_COLOUR
@ CBM_OBJ_COLOUR
decide the colour of the building
Definition newgrf_callbacks.h:408
CBM_OBJ_ANIMATION_NEXT_FRAME
@ CBM_OBJ_ANIMATION_NEXT_FRAME
decides next animation frame
Definition newgrf_callbacks.h:406
CBM_OBJ_ANIMATION_SPEED
@ CBM_OBJ_ANIMATION_SPEED
decides animation speed
Definition newgrf_callbacks.h:407
CBM_OBJ_FUND_MORE_TEXT
@ CBM_OBJ_FUND_MORE_TEXT
additional text in fund window
Definition newgrf_callbacks.h:409
CBM_OBJ_SLOPE_CHECK
@ CBM_OBJ_SLOPE_CHECK
decides slope suitability
Definition newgrf_callbacks.h:405
CBM_OBJ_AUTOSLOPE
@ CBM_OBJ_AUTOSLOPE
decides allowance of autosloping
Definition newgrf_callbacks.h:410
CBM_HOUSE_COLOUR
@ CBM_HOUSE_COLOUR
decide the colour of the building
Definition newgrf_callbacks.h:341
CBM_HOUSE_ANIMATION_SPEED
@ CBM_HOUSE_ANIMATION_SPEED
decides animation speed
Definition newgrf_callbacks.h:343
CBM_HOUSE_PRODUCE_CARGO
@ CBM_HOUSE_PRODUCE_CARGO
custom cargo production
Definition newgrf_callbacks.h:346
CBM_HOUSE_ALLOW_CONSTRUCTION
@ CBM_HOUSE_ALLOW_CONSTRUCTION
decide whether the house can be built on a given tile
Definition newgrf_callbacks.h:337
CBM_HOUSE_ANIMATION_NEXT_FRAME
@ CBM_HOUSE_ANIMATION_NEXT_FRAME
decides next animation frame
Definition newgrf_callbacks.h:338
CBM_HOUSE_ANIMATION_START_STOP
@ CBM_HOUSE_ANIMATION_START_STOP
periodically start/stop the animation
Definition newgrf_callbacks.h:339
CBM_HOUSE_CONSTRUCTION_STATE_CHANGE
@ CBM_HOUSE_CONSTRUCTION_STATE_CHANGE
change animation when construction state changes
Definition newgrf_callbacks.h:340
CBM_HOUSE_CARGO_ACCEPTANCE
@ CBM_HOUSE_CARGO_ACCEPTANCE
decides amount of cargo acceptance
Definition newgrf_callbacks.h:342
CBM_HOUSE_AUTOSLOPE
@ CBM_HOUSE_AUTOSLOPE
decides allowance of autosloping
Definition newgrf_callbacks.h:349
CBM_HOUSE_DESTRUCTION
@ CBM_HOUSE_DESTRUCTION
trigger destruction of building
Definition newgrf_callbacks.h:344
CBM_HOUSE_ACCEPT_CARGO
@ CBM_HOUSE_ACCEPT_CARGO
decides accepted types
Definition newgrf_callbacks.h:345
CBM_HOUSE_DRAW_FOUNDATIONS
@ CBM_HOUSE_DRAW_FOUNDATIONS
decides if default foundations need to be drawn
Definition newgrf_callbacks.h:348
CBM_HOUSE_DENY_DESTRUCTION
@ CBM_HOUSE_DENY_DESTRUCTION
conditional protection
Definition newgrf_callbacks.h:347
TCX_NORMAL
@ TCX_NORMAL
Nothing special.
Definition newgrf_commons.h:24
GetGrfSpecFeature
GrfSpecFeature GetGrfSpecFeature(TileIndex tile)
Get the GrfSpecFeature associated with the tile.
Definition newgrf_debug_gui.cpp:763
_nifeatures
static const NIFeature *const _nifeatures[]
Table with all NIFeatures.
Definition newgrf_debug_data.h:721
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:70
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:109
NIT_CARGO
@ NIT_CARGO
The property is a cargo.
Definition newgrf_debug_gui.cpp:82
VSG_SCOPE_SELF
@ VSG_SCOPE_SELF
Resolved object itself.
Definition newgrf_spritegroup.h:100
INVALID_ROADTYPE
@ INVALID_ROADTYPE
flag for invalid roadtype
Definition road_type.h:30
GetStationType
StationType GetStationType(Tile t)
Get the station type of this tile.
Definition station_map.h:44
GetStationGfx
StationGfx GetStationGfx(Tile t)
Get the station graphics of this tile.
Definition station_map.h:68
GetStationIndex
StationID GetStationIndex(Tile t)
Get StationID from a tile.
Definition station_map.h:28
GetAirportGfx
StationGfx GetAirportGfx(Tile t)
Get the station graphics of this airport tile.
Definition station_map.h:332
lengthof
#define lengthof(array)
Return the length of an fixed size array.
Definition stdafx.h:280
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
AirportResolverObject
Resolver object for airports.
Definition newgrf_airport.h:176
AirportResolverObject::GetScope
ScopeResolver * GetScope(VarSpriteGroupScope scope=VSG_SCOPE_SELF, uint8_t relative=0) override
Get a resolver for the scope.
Definition newgrf_airport.h:185
AirportSpec::grf_prop
struct GRFFileProps grf_prop
Properties related to the grf file.
Definition newgrf_airport.h:121
AirportSpec::Get
static const AirportSpec * Get(uint8_t type)
Retrieve airport spec for the given airport.
Definition newgrf_airport.cpp:55
AirportTileResolverObject
Resolver for tiles of an airport.
Definition newgrf_airporttiles.h:45
AirportTileResolverObject::GetScope
ScopeResolver * GetScope(VarSpriteGroupScope scope=VSG_SCOPE_SELF, uint8_t relative=0) override
Get a resolver for the scope.
Definition newgrf_airporttiles.h:52
AirportTileSpec::Get
static const AirportTileSpec * Get(StationGfx gfx)
Retrieve airport tile spec for the given airport tile.
Definition newgrf_airporttiles.cpp:37
AirportTileSpec::GetByTile
static const AirportTileSpec * GetByTile(TileIndex tile)
Retrieve airport tile spec for the given airport tile.
Definition newgrf_airporttiles.cpp:50
AirportTileSpec::grf_prop
GRFFileProps grf_prop
properties related the the grf file
Definition newgrf_airporttiles.h:74
Airport::type
uint8_t type
Type of this airport,.
Definition station_base.h:294
Airport::psa
PersistentStorage * psa
Persistent storage for NewGRF airports.
Definition station_base.h:298
Airport::layout
uint8_t layout
Airport layout number.
Definition station_base.h:295
BaseStation::GetByTile
static BaseStation * GetByTile(TileIndex tile)
Get the base station belonging to a specific tile.
Definition base_station_base.h:166
BaseVehicle::type
VehicleType type
Type of vehicle.
Definition vehicle_type.h:51
GRFFilePropsBase::HasGrfFile
bool HasGrfFile() const
Test if this entity was introduced by NewGRF.
Definition newgrf_commons.h:320
GRFFilePropsBase::grfid
uint32_t grfid
grfid that introduced this entity.
Definition newgrf_commons.h:312
HouseResolverObject
Resolver object to be used for houses (feature 07 spritegroups).
Definition newgrf_house.h:52
HouseResolverObject::GetScope
ScopeResolver * GetScope(VarSpriteGroupScope scope=VSG_SCOPE_SELF, uint8_t relative=0) override
Get a resolver for the scope.
Definition newgrf_house.h:60
HouseSpec::Get
static HouseSpec * Get(size_t house_id)
Get the spec for a house ID.
Definition newgrf_house.cpp:69
HouseSpec::grf_prop
GRFFileProps grf_prop
Properties related the the grf file.
Definition house.h:109
IndustriesResolverObject
Resolver for industries.
Definition newgrf_industries.h:42
IndustriesResolverObject::GetScope
ScopeResolver * GetScope(VarSpriteGroupScope scope=VSG_SCOPE_SELF, uint8_t relative=0) override
Get a resolver for the scope.
Definition newgrf_industries.h:51
IndustrySpec::grf_prop
GRFFileProps grf_prop
properties related to the grf file
Definition industrytype.h:132
IndustryTileResolverObject
Resolver for industry tiles.
Definition newgrf_industrytiles.h:39
IndustryTileResolverObject::GetScope
ScopeResolver * GetScope(VarSpriteGroupScope scope=VSG_SCOPE_SELF, uint8_t relative=0) override
Get a resolver for the scope.
Definition newgrf_industrytiles.h:47
IndustryTileSpec::grf_prop
GRFFileProps grf_prop
properties related to the grf file
Definition industrytype.h:165
Industry
Defines the internal data of a functional industry.
Definition industry.h:66
Industry::type
IndustryType type
type of industry.
Definition industry.h:102
Industry::psa
PersistentStorage * psa
Persistent storage for NewGRF industries.
Definition industry.h:123
Industry::GetByTile
static Industry * GetByTile(TileIndex tile)
Get the industry of the given tile.
Definition industry.h:238
Industry::location
TileArea location
Location of the industry.
Definition industry.h:94
NICallback
Representation of the available callbacks with information on when they actually apply.
Definition newgrf_debug_gui.cpp:101
NIFeature
Container for all information for a given feature.
Definition newgrf_debug_gui.cpp:224
NIProperty
Representation of the data from a NewGRF property.
Definition newgrf_debug_gui.cpp:88
NIVariable
Representation on the NewGRF variables.
Definition newgrf_debug_gui.cpp:112
ObjectResolverObject
A resolver object to be used with feature 0F spritegroups.
Definition newgrf_object.h:133
ObjectResolverObject::GetScope
ScopeResolver * GetScope(VarSpriteGroupScope scope=VSG_SCOPE_SELF, uint8_t relative=0) override
Get a resolver for the scope.
Definition newgrf_object.h:140
ObjectSpec::GetByTile
static const ObjectSpec * GetByTile(TileIndex tile)
Get the specification associated with a tile.
Definition newgrf_object.cpp:65
ObjectSpec::grf_prop
GRFFilePropsBase< 2 > grf_prop
Properties related the the grf file.
Definition newgrf_object.h:62
Object::GetByTile
static Object * GetByTile(TileIndex tile)
Get the object associated with a tile.
Definition object_cmd.cpp:55
OrthogonalTileArea::tile
TileIndex tile
The base tile of the area.
Definition tilearea_type.h:19
PersistentStorageArray::storage
StorageType storage
Memory for the storage array.
Definition newgrf_storage.h:70
Pool::PoolItem::index
Tindex index
Index of this pool item.
Definition pool_type.hpp:238
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
Pool::PoolItem<&_vehicle_pool >::Get
static Titem * Get(size_t index)
Returns Titem with given index.
Definition pool_type.hpp:339
RailTypeResolverObject
Resolver object for rail types.
Definition newgrf_railtype.h:39
RailTypeResolverObject::GetScope
ScopeResolver * GetScope(VarSpriteGroupScope scope=VSG_SCOPE_SELF, uint8_t relative=0) override
Get a resolver for the scope.
Definition newgrf_railtype.h:44
RoadStopResolverObject
Road stop resolver.
Definition newgrf_roadstop.h:110
RoadStopSpec::grf_prop
GRFFilePropsBase< NUM_CARGO+3 > grf_prop
Properties related the the grf file.
Definition newgrf_roadstop.h:142
RoadTypeResolverObject
Resolver object for road types.
Definition newgrf_roadtype.h:40
RoadTypeResolverObject::GetScope
ScopeResolver * GetScope(VarSpriteGroupScope scope=VSG_SCOPE_SELF, uint8_t relative=0) override
Get a resolver for the scope.
Definition newgrf_roadtype.h:45
ScopeResolver::GetVariable
virtual uint32_t GetVariable(uint8_t variable, uint32_t parameter, bool &available) const
Get a variable value.
Definition newgrf_spritegroup.cpp:106
SpecializedStation< Station, false >::Get
static Station * Get(size_t index)
Gets station with given index.
Definition base_station_base.h:254
StationResolverObject
Station resolver.
Definition newgrf_station.h:51
StationResolverObject::GetScope
ScopeResolver * GetScope(VarSpriteGroupScope scope=VSG_SCOPE_SELF, uint8_t relative=0) override
Get a resolver for the scope.
Definition newgrf_station.h:60
StationSpec::grf_prop
GRFFilePropsBase< NUM_CARGO+3 > grf_prop
Properties related the the grf file.
Definition newgrf_station.h:127
Station
Station data structure.
Definition station_base.h:439
Station::airport
Airport airport
Tile area the airport covers.
Definition station_base.h:453
TownResolverObject
Resolver of town properties.
Definition newgrf_town.h:42
TownResolverObject::GetScope
ScopeResolver * GetScope(VarSpriteGroupScope scope=VSG_SCOPE_SELF, uint8_t relative=0) override
Get a resolver for the scope.
Definition newgrf_town.h:47
Town
Town data structure.
Definition town.h:54
VehicleResolverObject
Resolver for a vehicle (chain)
Definition newgrf_engine.h:47
VehicleResolverObject::GetScope
ScopeResolver * GetScope(VarSpriteGroupScope scope=VSG_SCOPE_SELF, uint8_t relative=0) override
Get a resolver for the scope.
Definition newgrf_engine.cpp:319
VehicleResolverObject::WO_CACHED
@ WO_CACHED
Resolve wagon overrides using TrainCache::cached_override.
Definition newgrf_engine.h:52
Vehicle
Vehicle data structure.
Definition vehicle_base.h:244
Vehicle::engine_type
EngineID engine_type
The type of engine used for this vehicle.
Definition vehicle_base.h:323
Vehicle::First
Vehicle * First() const
Get the first vehicle of this vehicle chain.
Definition vehicle_base.h:645
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
GetTownIndex
TownID GetTownIndex(Tile t)
Get the index of which town this house/street is attached to.
Definition town_map.h:23