diff options
author | peter1138 <peter1138@openttd.org> | 2010-01-31 13:17:29 +0000 |
---|---|---|
committer | peter1138 <peter1138@openttd.org> | 2010-01-31 13:17:29 +0000 |
commit | 2b820780a163bf19768dc2f9254271714f25cb20 (patch) | |
tree | 18520890b9041406dda45522a8d654e1dd9baadf /src/train_cmd.cpp | |
parent | 2331ccd589cdef298659bf2ab4f29a833601bd9d (diff) | |
download | openttd-2b820780a163bf19768dc2f9254271714f25cb20.tar.xz |
(svn r18972) -Add: [NewGRF] Per-rail type speed limits.
Diffstat (limited to 'src/train_cmd.cpp')
-rw-r--r-- | src/train_cmd.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/train_cmd.cpp b/src/train_cmd.cpp index 7f903f497..3e410d552 100644 --- a/src/train_cmd.cpp +++ b/src/train_cmd.cpp @@ -99,6 +99,7 @@ void Train::PowerChanged() uint32 total_power = 0; uint32 max_te = 0; uint32 number_of_parts = 0; + uint16 max_rail_speed = this->tcache.cached_max_speed; for (const Train *u = this; u != NULL; u = u->Next()) { uint32 current_power = u->GetPower(); @@ -108,6 +109,10 @@ void Train::PowerChanged() if (current_power > 0) max_te += u->GetWeight() * u->GetTractiveEffort(); total_power += u->GetPoweredPartPower(this); number_of_parts++; + + /* Get minimum max speed for rail */ + uint16 rail_speed = GetRailTypeInfo(GetRailType(u->tile))->max_speed; + if (rail_speed > 0) max_rail_speed = min(max_rail_speed, rail_speed); } this->tcache.cached_axle_resistance = 60 * number_of_parts; @@ -124,6 +129,8 @@ void Train::PowerChanged() SetWindowDirty(WC_VEHICLE_DETAILS, this->index); SetWindowWidgetDirty(WC_VEHICLE_VIEW, this->index, VVW_WIDGET_START_STOP_VEH); } + + this->tcache.cached_max_rail_speed = max_rail_speed; } @@ -491,7 +498,7 @@ int Train::GetCurrentMaxSpeed() const } } - return min(max_speed, this->tcache.cached_max_speed); + return min(max_speed, this->tcache.cached_max_rail_speed); } /** @@ -557,7 +564,7 @@ void Train::UpdateAcceleration() { assert(this->IsFrontEngine()); - this->max_speed = this->tcache.cached_max_speed; + this->max_speed = this->tcache.cached_max_rail_speed; uint power = this->tcache.cached_power; uint weight = this->tcache.cached_weight; |