Implement train speed adaptation on signalled tunnels/bridges

See: #373
This commit is contained in:
Jonathan G Rennison
2022-02-21 18:30:43 +00:00
parent cf25a0c80a
commit 909b20ee68
4 changed files with 106 additions and 58 deletions

View File

@@ -19,7 +19,7 @@
struct SignalSpeedKey
{
TileIndex signal_tile;
Track signal_track;
uint16 signal_track;
Trackdir last_passing_train_dir;
bool operator==(const SignalSpeedKey& other) const
@@ -42,7 +42,7 @@ struct SignalSpeedKeyHashFunc
{
const std::size_t h1 = std::hash<TileIndex>()(key.signal_tile);
const std::size_t h2 = std::hash<Trackdir>()(key.last_passing_train_dir);
const std::size_t h3 = std::hash<Track>()(key.signal_track);
const std::size_t h3 = std::hash<uint16>()(key.signal_track);
return (h1 ^ h2) ^ h3;
}
@@ -50,4 +50,8 @@ struct SignalSpeedKeyHashFunc
extern std::unordered_map<SignalSpeedKey, SignalSpeedValue, SignalSpeedKeyHashFunc> _signal_speeds;
struct Train;
void SetSignalTrainAdaptationSpeed(const Train *v, TileIndex tile, uint16 track);
void ApplySignalTrainAdaptationSpeed(Train *v, TileIndex tile, uint16 track);
#endif /* TRAIN_SPEED_ADAPTATION_H */