(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.

This commit is contained in:
rubidium 2007-11-22 22:34:30 +00:00
parent 3ad488e98f
commit 64a4ac3444
1 changed files with 29 additions and 29 deletions

View File

@ -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;
}