summaryrefslogtreecommitdiff
path: root/train_gui.c
diff options
context:
space:
mode:
authorbjarni <bjarni@openttd.org>2006-10-07 15:04:22 +0000
committerbjarni <bjarni@openttd.org>2006-10-07 15:04:22 +0000
commitd2cebc7e8663ca42aa0d4338607231aa7cf79079 (patch)
tree0d1aa14c349735c9f986dfc2c7e51e447c827f81 /train_gui.c
parent208e258f4ce57ade70145db297a9b62fba6964b3 (diff)
downloadopenttd-d2cebc7e8663ca42aa0d4338607231aa7cf79079.tar.xz
(svn r6681) -Fix: when vehicles never expire they will stay at peak reliability instead of the lowest to make them useful even when old
-Fix: when retiring an engine design, invalidate the build windows and invalidate the build window data -Fix: mark build windows dirty when engine reliability changes
Diffstat (limited to 'train_gui.c')
-rw-r--r--train_gui.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/train_gui.c b/train_gui.c
index d679288dd..0782e3874 100644
--- a/train_gui.c
+++ b/train_gui.c
@@ -276,6 +276,27 @@ static void DrawTrainBuildWindow(Window *w)
if (WP(w,buildtrain_d).data_invalidated) {
GenerateBuildList(&WP(w,buildtrain_d).engines, &WP(w,buildtrain_d).num_engines, &WP(w,buildtrain_d).wagons, &WP(w,buildtrain_d).num_wagons, WP(w,buildtrain_d).railtype);
WP(w,buildtrain_d).data_invalidated = false;
+
+ /* Make sure that the selected engine is still in the list*/
+ if (WP(w,buildtrain_d).sel_engine != INVALID_ENGINE) {
+ int i;
+ bool found = false;
+ if (HASBIT(WP(w,buildtrain_d).show_engine_wagon, 0)) {
+ for (i = 0; i < WP(w,buildtrain_d).num_engines; i++) {
+ if (WP(w,buildtrain_d).sel_engine != WP(w,buildtrain_d).engines[i]) continue;
+ found = true;
+ break;
+ }
+ }
+ if (!found && HASBIT(WP(w,buildtrain_d).show_engine_wagon, 1)) {
+ for (i = 0; i < WP(w,buildtrain_d).num_wagons; i++) {
+ if (WP(w,buildtrain_d).sel_engine != WP(w,buildtrain_d).wagons[i]) continue;
+ found = true;
+ break;
+ }
+ }
+ if (!found) WP(w,buildtrain_d).sel_engine = INVALID_ENGINE;
+ }
}
if (HASBIT(WP(w,buildtrain_d).show_engine_wagon, 0)) scrollcount += WP(w,buildtrain_d).num_engines;
@@ -330,6 +351,7 @@ static void NewRailVehicleWndProc(Window *w, WindowEvent *e)
WP(w,buildtrain_d).wagons = NULL;
WP(w,buildtrain_d).show_engine_wagon = 3;
WP(w,buildtrain_d).data_invalidated = true;
+ WP(w,buildtrain_d).sel_engine = INVALID_ENGINE;
break;
case WE_INVALIDATE_DATA: