Changeset - r7940:bb8a390f6b5f
[Not reviewed]
master
0 1 0
rubidium - 17 years ago 2007-11-22 22:34:30
rubidium@openttd.org
(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.
1 file changed with 29 insertions and 29 deletions:
0 comments (0 inline, 0 general)
src/openttd.cpp
Show inline comments
 
@@ -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;
 
}
 

	
0 comments (0 inline, 0 general)