Changeset - r6823:c5b9c08647ba
[Not reviewed]
master
0 5 0
peter1138 - 17 years ago 2007-06-08 09:35:39
peter1138@openttd.org
(svn r10062) -Codechange: Don't redraw all station tiles when cargo is added or removed if the station has no custom graphics.
5 files changed with 16 insertions and 7 deletions:
0 comments (0 inline, 0 general)
src/economy.cpp
Show inline comments
 
@@ -1697,7 +1697,7 @@ static void LoadUnloadVehicle(Vehicle *v
 
		InvalidateWindow(v->GetVehicleListWindowClass(), v->owner);
 
		InvalidateWindow(WC_VEHICLE_DETAILS, v->index);
 

	
 
		st->MarkTilesDirty();
 
		st->MarkTilesDirty(true);
 
		v->MarkDirty();
 

	
 
		if (result & 2) InvalidateWindow(WC_STATION_VIEW, last_visited);
src/station.cpp
Show inline comments
 
@@ -133,7 +133,7 @@ void Station::MarkDirty() const
 
	}
 
}
 

	
 
void Station::MarkTilesDirty() const
 
void Station::MarkTilesDirty(bool cargo_change) const
 
{
 
	TileIndex tile = train_tile;
 
	int w, h;
 
@@ -141,6 +141,15 @@ void Station::MarkTilesDirty() const
 
	/* XXX No station is recorded as 0, not INVALID_TILE... */
 
	if (tile == 0) return;
 

	
 
	/* cargo_change is set if we're refreshing the tiles due to cargo moving
 
	 * around. */
 
	if (cargo_change) {
 
		/* Don't waste time updating if there are no custom station graphics
 
		 * that might change. Even if there are custom graphics, they might
 
		 * not change. Unfortunately we have no way of telling. */
 
		if (this->num_specs == 0) return;
 
	}
 

	
 
	for (h = 0; h < trainst_h; h++) {
 
		for (w = 0; w < trainst_w; w++) {
 
			if (TileBelongsToRailStation(tile)) {
src/station.h
Show inline comments
 
@@ -182,7 +182,7 @@ struct Station {
 

	
 
	void AddFacility(byte new_facility_bit, TileIndex facil_xy);
 
	void MarkDirty() const;
 
	void MarkTilesDirty() const;
 
	void MarkTilesDirty(bool cargo_change) const;
 
	bool TileBelongsToRailStation(TileIndex tile) const;
 
	uint GetPlatformLength(TileIndex tile, DiagDirection dir) const;
 
	uint GetPlatformLength(TileIndex tile) const;
src/station_cmd.cpp
Show inline comments
 
@@ -978,7 +978,7 @@ int32 CmdBuildRailroadStation(TileIndex 
 
			tile_org += tile_delta ^ TileDiffXY(1, 1); // perpendicular to tile_delta
 
		} while (--numtracks);
 

	
 
		st->MarkTilesDirty();
 
		st->MarkTilesDirty(false);
 
		UpdateStationVirtCoordDirty(st);
 
		UpdateStationAcceptance(st, false);
 
		RebuildStationLists();
 
@@ -1105,7 +1105,7 @@ int32 CmdRemoveFromRailroadStation(TileI
 
			// now we need to make the "spanned" area of the railway station smaller if we deleted something at the edges.
 
			// we also need to adjust train_tile.
 
			MakeRailwayStationAreaSmaller(st);
 
			st->MarkTilesDirty();
 
			st->MarkTilesDirty(false);
 
			UpdateStationSignCoord(st);
 

	
 
			// if we deleted the whole station, delete the train facility.
 
@@ -2484,7 +2484,7 @@ static void UpdateStationWaiting(Station
 
	st->goods[type].enroute_from = st->index;
 
	st->goods[type].enroute_from_xy = st->xy;
 
	InvalidateWindow(WC_STATION_VIEW, st->index);
 
	st->MarkTilesDirty();
 
	st->MarkTilesDirty(true);
 
}
 

	
 
/** Rename a station
src/vehicle.cpp
Show inline comments
 
@@ -2964,7 +2964,7 @@ void Vehicle::BeginLoading()
 
	InvalidateWindow(WC_VEHICLE_DETAILS, this->index);
 
	InvalidateWindow(WC_STATION_VIEW, this->last_station_visited);
 

	
 
	GetStation(this->last_station_visited)->MarkTilesDirty();
 
	GetStation(this->last_station_visited)->MarkTilesDirty(true);
 
	this->MarkDirty();
 
}
 

	
0 comments (0 inline, 0 general)