274 SetWindowWidgetLoweredState(w, BUILD_TRAIN_WIDGET_BOTH, WP(w,buildtrain_d).show_engine_wagon == 3); |
274 SetWindowWidgetLoweredState(w, BUILD_TRAIN_WIDGET_BOTH, WP(w,buildtrain_d).show_engine_wagon == 3); |
275 |
275 |
276 if (WP(w,buildtrain_d).data_invalidated) { |
276 if (WP(w,buildtrain_d).data_invalidated) { |
277 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); |
277 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); |
278 WP(w,buildtrain_d).data_invalidated = false; |
278 WP(w,buildtrain_d).data_invalidated = false; |
|
279 |
|
280 /* Make sure that the selected engine is still in the list*/ |
|
281 if (WP(w,buildtrain_d).sel_engine != INVALID_ENGINE) { |
|
282 int i; |
|
283 bool found = false; |
|
284 if (HASBIT(WP(w,buildtrain_d).show_engine_wagon, 0)) { |
|
285 for (i = 0; i < WP(w,buildtrain_d).num_engines; i++) { |
|
286 if (WP(w,buildtrain_d).sel_engine != WP(w,buildtrain_d).engines[i]) continue; |
|
287 found = true; |
|
288 break; |
|
289 } |
|
290 } |
|
291 if (!found && HASBIT(WP(w,buildtrain_d).show_engine_wagon, 1)) { |
|
292 for (i = 0; i < WP(w,buildtrain_d).num_wagons; i++) { |
|
293 if (WP(w,buildtrain_d).sel_engine != WP(w,buildtrain_d).wagons[i]) continue; |
|
294 found = true; |
|
295 break; |
|
296 } |
|
297 } |
|
298 if (!found) WP(w,buildtrain_d).sel_engine = INVALID_ENGINE; |
|
299 } |
279 } |
300 } |
280 |
301 |
281 if (HASBIT(WP(w,buildtrain_d).show_engine_wagon, 0)) scrollcount += WP(w,buildtrain_d).num_engines; |
302 if (HASBIT(WP(w,buildtrain_d).show_engine_wagon, 0)) scrollcount += WP(w,buildtrain_d).num_engines; |
282 if (HASBIT(WP(w,buildtrain_d).show_engine_wagon, 1)) scrollcount += WP(w,buildtrain_d).num_wagons; |
303 if (HASBIT(WP(w,buildtrain_d).show_engine_wagon, 1)) scrollcount += WP(w,buildtrain_d).num_wagons; |
283 |
304 |
328 WP(w,buildtrain_d).num_wagons = 0; |
349 WP(w,buildtrain_d).num_wagons = 0; |
329 WP(w,buildtrain_d).engines = NULL; |
350 WP(w,buildtrain_d).engines = NULL; |
330 WP(w,buildtrain_d).wagons = NULL; |
351 WP(w,buildtrain_d).wagons = NULL; |
331 WP(w,buildtrain_d).show_engine_wagon = 3; |
352 WP(w,buildtrain_d).show_engine_wagon = 3; |
332 WP(w,buildtrain_d).data_invalidated = true; |
353 WP(w,buildtrain_d).data_invalidated = true; |
|
354 WP(w,buildtrain_d).sel_engine = INVALID_ENGINE; |
333 break; |
355 break; |
334 |
356 |
335 case WE_INVALIDATE_DATA: |
357 case WE_INVALIDATE_DATA: |
336 WP(w,buildtrain_d).data_invalidated = true; |
358 WP(w,buildtrain_d).data_invalidated = true; |
337 break; |
359 break; |