Difference between revisions of "Callback: Industry location permissibility"
Planetmaker (talk | contribs) m (→Industry location permissibility (28): version info) |
(grf version 8) |
||
Line 22: | Line 22: | ||
|89||B||{{ottdp| | }}||Distance between the closest town and the selected position. |
|89||B||{{ottdp| | }}||Distance between the closest town and the selected position. |
||
|- |
|- |
||
− | |8A||B||{{ottdp| | }}||Height of the lowest corner of the tile |
+ | |8A||B||{{ottdp| | }}||Height of the lowest corner of the tile |
+ | * {{grf|7}} For GRF version 7 and below: Multiple of 8. |
||
+ | * {{grf|8}} For GRF version 8 and above: Multiple of 1. |
||
|- |
|- |
||
|8B||W||{{ottdp| | }}||Distance to the closest water tile if property 1A bit 2 is clear (built on land); distance to the closest empty dry land tile if property 1A bit 2 is clear (built on water) |
|8B||W||{{ottdp| | }}||Distance to the closest water tile if property 1A bit 2 is clear (built on land); distance to the closest empty dry land tile if property 1A bit 2 is clear (built on water) |
Revision as of 20:42, 8 November 2011
Industry location permissibility (28)
Called to decide if the industry can be built on a given spot. Since the industry isn't built yet, you can only use a small subset of the data: you can access the data of the nearest town via action 2/type 82 without any problems, but action 2/type 81 will access different variables than it would normally access:
Variable | Size | Version | Meaning |
---|---|---|---|
40+x | Not accessible | ||
5F | 1.1 | Random bits the industry starts with after construction. Accessible via RandomAction2 as well. | |
60+x | Only var. 62 and vars 64..68 can be used | ||
80 | W | Coordinates of the selected position | |
86 | B | Number of the selected layout, according to property 0A | |
87 | B | Ground type of the selected spot (see canal variable 81 for details) | |
88 | B | Town zone of the selected spot (see house variable 42 for details) | |
89 | B | Distance between the closest town and the selected position. | |
8A | B | Height of the lowest corner of the tile
| |
8B | W | Distance to the closest water tile if property 1A bit 2 is clear (built on land); distance to the closest empty dry land tile if property 1A bit 2 is clear (built on water) | |
8D | W | Square of the Euclidean distance between the closest town and the selected position | |
8F | D | 0.6 2.6 | 32 random bits |
Unless explicitly noted, distances are Manhattan distance, not Euclidean distance, ie. |x-x0|+|y-y0| instead of sqrt((x-x0)^2+(y-y0)^2)
Variable 8B will always be below 80h if prop 1A bit 2 is clear. If bit 2 is set, 8B will be set to its max of 200h in the pathological case of an all-water map.
1.1 During this callback, variable 18 (extra callback info 2) contains the following values for OpenTTD r20942 and later:
Variable 18 | Meaning |
---|---|
0 | TTD is generating a map. |
1 | TTD decided to build a new random industry during regular gameplay. |
2 | The user tries to build your industry via the new industry window. |
3 | The user tries to prospect for your industry via the new industry window. |
This callback must return a 15-bit value, which is interpreted as follows:
0.6 2.6 Since TTDPatch r1755, you can use the text reference stack for your error messages, similarly to callback 3A. The only difference is that only 4 registers are copied instead of 6 because error messages support 20 bytes of reference stack only, and two of those bytes may be used by TTD.