diff options
author | rubidium <rubidium@openttd.org> | 2007-11-22 22:34:30 +0000 |
---|---|---|
committer | rubidium <rubidium@openttd.org> | 2007-11-22 22:34:30 +0000 |
commit | 11889b6da1f75ba819b53dcbf37f34a4069e88a0 (patch) | |
tree | 426c517040795607dc872d3a63dc13338f3bf761 /src/openttd.cpp | |
parent | d50bf9b7bdd2a95a8c7d70b34fbc0b3e24ab3ac0 (diff) | |
download | openttd-11889b6da1f75ba819b53dcbf37f34a4069e88a0.tar.xz |
(svn r11493) -Fix [FS#1472]: game crashing on savegame load because it tried to render some part of the window before the savegame conversion was done.
Diffstat (limited to 'src/openttd.cpp')
-rw-r--r-- | src/openttd.cpp | 58 |
1 files changed, 29 insertions, 29 deletions
diff --git a/src/openttd.cpp b/src/openttd.cpp index 27f83900b..54580cf12 100644 --- a/src/openttd.cpp +++ b/src/openttd.cpp @@ -1331,22 +1331,6 @@ bool AfterLoadGame() return false; } - /* Initialize windows */ - ResetWindowSystem(); - SetupColorsAndInitialWindow(); - - w = FindWindowById(WC_MAIN_WINDOW, 0); - - WP(w,vp_d).scrollpos_x = _saved_scrollpos_x; - WP(w,vp_d).scrollpos_y = _saved_scrollpos_y; - WP(w,vp_d).dest_scrollpos_x = _saved_scrollpos_x; - WP(w,vp_d).dest_scrollpos_y = _saved_scrollpos_y; - - vp = w->viewport; - vp->zoom = (ZoomLevel)min(_saved_scrollpos_zoom, ZOOM_LVL_MAX); - vp->virtual_width = ScaleByZoom(vp->width, vp->zoom); - vp->virtual_height = ScaleByZoom(vp->height, vp->zoom); - /* in version 4.1 of the savegame, is_active was introduced to determine * if a player does exist, rather then checking name_1 */ if (CheckSavegameVersionOldStyle(4, 1)) CheckIsPlayerActive(); @@ -2170,19 +2154,6 @@ bool AfterLoadGame() } } - /* Recalculate */ - Group *g; - FOR_ALL_GROUPS(g) { - const Vehicle *v; - FOR_ALL_VEHICLES(v) { - if (!IsEngineCountable(v)) continue; - - if (v->group_id != g->index || v->type != g->vehicle_type || v->owner != g->owner) continue; - - g->num_engines[v->engine_type]++; - } - } - if (CheckSavegameVersion(74)) { Station *st; FOR_ALL_STATIONS(st) { @@ -2220,6 +2191,35 @@ bool AfterLoadGame() } } + /* Initialize windows */ + ResetWindowSystem(); + SetupColorsAndInitialWindow(); + + w = FindWindowById(WC_MAIN_WINDOW, 0); + + WP(w,vp_d).scrollpos_x = _saved_scrollpos_x; + WP(w,vp_d).scrollpos_y = _saved_scrollpos_y; + WP(w,vp_d).dest_scrollpos_x = _saved_scrollpos_x; + WP(w,vp_d).dest_scrollpos_y = _saved_scrollpos_y; + + vp = w->viewport; + vp->zoom = (ZoomLevel)min(_saved_scrollpos_zoom, ZOOM_LVL_MAX); + vp->virtual_width = ScaleByZoom(vp->width, vp->zoom); + vp->virtual_height = ScaleByZoom(vp->height, vp->zoom); + + /* Recalculate */ + Group *g; + FOR_ALL_GROUPS(g) { + const Vehicle *v; + FOR_ALL_VEHICLES(v) { + if (!IsEngineCountable(v)) continue; + + if (v->group_id != g->index || v->type != g->vehicle_type || v->owner != g->owner) continue; + + g->num_engines[v->engine_type]++; + } + } + return true; } |