summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--rail_cmd.c15
-rw-r--r--train_cmd.c1
2 files changed, 14 insertions, 2 deletions
diff --git a/rail_cmd.c b/rail_cmd.c
index 056578601..52a3bd058 100644
--- a/rail_cmd.c
+++ b/rail_cmd.c
@@ -31,6 +31,7 @@
#include "yapf/yapf.h"
#include "newgrf_callbacks.h"
#include "newgrf_station.h"
+#include "train.h"
const byte _track_sloped_sprites[14] = {
14, 15, 22, 13,
@@ -886,13 +887,23 @@ static int32 DoConvertRail(TileIndex tile, RailType totype, bool exec)
for (tracks = GetTrackBits(tile); tracks != TRACK_BIT_NONE; tracks = KILL_FIRST_BIT(tracks))
YapfNotifyTrackLayoutChange(tile, FIND_FIRST_BIT(tracks));
- /* Update build vehicle window related to this depot */
if (IsTileDepotType(tile, TRANSPORT_RAIL)) {
- Window *w = FindWindowById(WC_BUILD_VEHICLE, tile);
+ Vehicle *v;
+ Window *w;
+
+ /* Update build vehicle window related to this depot */
+ w = FindWindowById(WC_BUILD_VEHICLE, tile);
if (w != NULL) {
WP(w,buildtrain_d).railtype = totype;
SetWindowDirty(w);
}
+
+ /* update power of trains in this depot */
+ FOR_ALL_VEHICLES(v) {
+ if (v->type == VEH_Train && IsFrontEngine(v) && v->tile == tile && v->u.rail.track == 0x80) {
+ TrainPowerChanged(v);
+ }
+ }
}
}
diff --git a/train_cmd.c b/train_cmd.c
index 70ba47499..7780faf52 100644
--- a/train_cmd.c
+++ b/train_cmd.c
@@ -113,6 +113,7 @@ void TrainPowerChanged(Vehicle* v)
if (v->u.rail.cached_power != power) {
v->u.rail.cached_power = power;
InvalidateWindow(WC_VEHICLE_DETAILS, v->index);
+ InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
}
}