FS#905 - Enhancements to New Stations ...
Enhancements to new stations ... We would like to achieve the following :
a) Suppress visual effects in tunnel-like stations; i.e. the ones with a full roof cover.
b) Overcome a design flaw in station animation specifications.
c) Having landscape information available for station tiles.
d) Change the way the station built date is handled.
Possible implementations ...
Suppress Visual Effects :
One of the following :
1)enhance station property 13 (general flags) bit 3 – if set, suppress visual effects for train vehicles for this station.
2)new station property, similar to station property 15 (can train enter tile), if a bit is set, then suppress visual effects for train vehicle on the tile with matching tile type.
3)new callback (with corresponding flag in station property 0B (callback flags)); called once for every tile during construction, if return value 0x00 allow, or 0x01 disallow visual effects for train vehicle on station tile.
Station Animation :
Currently it is not possible to make any useful use of station animation trigger 'Station Part is Built' (station property 18 (animation triggers) bit 0). When checking station variable 18 during callback 140, the low byte contains 0x00. It also contains 0x00, whenever the Animation Speed Timer expires, no other triggers have been triggered, unless that coincides with other triggerable events.
Also, trigger 'Every 250 ticks' = 6.75 seconds (bit 6), could be put to better use.
1)move animation trigger 'Station Part is Built' to bit 7 and leave bit 0 unused or vacant.
2)animation trigger 'Every 250 ticks' (bit 6) should be triggered whenever the Animation Speed Timer expires and not every so often, provided the corresponding bit in station property 18 (Animation triggers) has been set.
Landscape information :
The lack of landscape information for station is really stopping set developers from designing better stations.
Implement a new var action-2 station variable, that works similar to station variable 66 and provides information similar to landscape information for houses and industries. It would need to be used during construction only. The parameter would specify which tile we seek information for and the return value to be a double word.
The following information would be helpful to have access to :
in one byte : low 4 bits, set if corresponding corner of target tile is lower than source station tile and high 4 bits, set if corresponding corner of target tile is higher than source station tile.
In another byte : station-ID (internal to station GRF) of target tile, if it is a station tile that is from the current station GRF; 0xFF if target tile is not a station tile; 0xFE if it is a station tile, but belongs to another set; and maybe a few special conditions more, like target tile is a station tile but belongs to an adjacent station.
Further the following could be of interest :
. owner of the target tile, same owner as source tile or other owner.
. town zone the target tile is in, if applicable.
. unused bits reserve for future use.
Station Built Date :
In OpenTTD, the station built date is updated whenever a station is being modified; in TTDPatch, the station built date is when the foundation stone is laid. Both situations are unsatisfactory. It is very difficult to have multiple generation stations. Some player want a station to be upgraded at a future date to a more modern one, others want to retain them in their historic look, but still being able to add new platforms or remove a few.
Change the station built date to (same as in TTDPatch) when the foundation stone is laid and then do not update it, unless requested by player.
Add a button 'Upgrade' to the station window; when clicked the station built date would be changed to the current date. Simple and effective.
First generation stations could still be modified without affecting its generation or simply be upgraded to 2nd generation by clicking on the 'Upgrade' button. This would then be handled by the GRF.
See also explanation in Canadian Stations Set User Guide for v0.3 (page 9).
This task depends upon