Changeset - r18559:ff940f072d80
[Not reviewed]
master
0 3 0
michi_cc - 13 years ago 2011-12-03 23:40:30
michi_cc@openttd.org
(svn r23414) -Add: Company infrastructure counts for stations/airports.
3 files changed with 35 insertions and 3 deletions:
0 comments (0 inline, 0 general)
src/saveload/company_sl.cpp
Show inline comments
 
@@ -18,6 +18,7 @@
 
#include "../station_map.h"
 
#include "../tunnelbridge_map.h"
 
#include "../tunnelbridge.h"
 
#include "../station_base.h"
 

	
 
#include "saveload.h"
 

	
 
@@ -98,6 +99,14 @@ void AfterLoadCompanyStats()
 
	Company *c;
 
	FOR_ALL_COMPANIES(c) MemSetT(&c->infrastructure, 0);
 

	
 
	/* Collect airport count. */
 
	Station *st;
 
	FOR_ALL_STATIONS(st) {
 
		if ((st->facilities & FACIL_AIRPORT) && Company::IsValidID(st->owner)) {
 
			Company::Get(st->owner)->infrastructure.airport++;
 
		}
 
	}
 

	
 
	for (TileIndex tile = 0; tile < MapSize(); tile++) {
 
		switch (GetTileType(tile)) {
 
			case MP_RAILWAY:
 
@@ -133,6 +142,7 @@ void AfterLoadCompanyStats()
 

	
 
			case MP_STATION:
 
				c = Company::GetIfValid(GetTileOwner(tile));
 
				if (c != NULL && GetStationType(tile) != STATION_AIRPORT) c->infrastructure.station++;
 

	
 
				switch (GetStationType(tile)) {
 
					case STATION_RAIL:
src/station_cmd.cpp
Show inline comments
 
@@ -1238,7 +1238,10 @@ CommandCost CmdBuildRailStation(TileInde
 
				}
 

	
 
				/* Railtype can change when overbuilding. */
 
				if (IsRailStationTile(tile) && !IsStationTileBlocked(tile)) c->infrastructure.rail[GetRailType(tile)]--;
 
				if (IsRailStationTile(tile)) {
 
					if (!IsStationTileBlocked(tile)) c->infrastructure.rail[GetRailType(tile)]--;
 
					c->infrastructure.station--;
 
				}
 

	
 
				/* Remove animation if overbuilding */
 
				DeleteAnimatedTile(tile);
 
@@ -1252,6 +1255,7 @@ CommandCost CmdBuildRailStation(TileInde
 
				SetAnimationFrame(tile, 0);
 

	
 
				if (!IsStationTileBlocked(tile)) c->infrastructure.rail[rt]++;
 
				c->infrastructure.station++;
 

	
 
				if (statspec != NULL) {
 
					/* Use a fixed axis for GetPlatformInfo as our platforms / numtracks are always the right way around */
 
@@ -1422,6 +1426,7 @@ CommandCost RemoveFromRailBaseStation(Ti
 
			DoClearSquare(tile);
 
			DeleteNewGRFInspectWindow(GSF_STATIONS, tile);
 
			if (build_rail) MakeRailNormal(tile, owner, TrackToTrackBits(track), rt);
 
			Company::Get(owner)->infrastructure.station--;
 
			DirtyCompanyInfrastructureWindows(owner);
 

	
 
			st->rect.AfterRemoveTile(st, tile);
 
@@ -1565,6 +1570,7 @@ CommandCost RemoveRailStation(T *st, DoC
 
				if (v != NULL) FreeTrainTrackReservation(v);
 
			}
 
			if (!IsStationTileBlocked(tile)) Company::Get(owner)->infrastructure.rail[GetRailType(tile)]--;
 
			Company::Get(owner)->infrastructure.station--;
 
			DoClearSquare(tile);
 
			DeleteNewGRFInspectWindow(GSF_STATIONS, tile);
 
			AddTrackToSignalBuffer(tile, track, owner);
 
@@ -1807,9 +1813,10 @@ CommandCost CmdBuildRoadStop(TileIndex t
 
			} else {
 
				/* Non-drive-through stop never overbuild and always count as two road bits. */
 
				Company::Get(st->owner)->infrastructure.road[FIND_FIRST_BIT(rts)] += 2;
 
				DirtyCompanyInfrastructureWindows(st->owner);
 
				MakeRoadStop(cur_tile, st->owner, st->index, rs_type, rts, ddir);
 
			}
 
			Company::Get(st->owner)->infrastructure.station++;
 
			DirtyCompanyInfrastructureWindows(st->owner);
 

	
 
			MarkTileDirtyByTile(cur_tile);
 
		}
 
@@ -1906,6 +1913,7 @@ static CommandCost RemoveRoadStop(TileIn
 
				DirtyCompanyInfrastructureWindows(c->index);
 
			}
 
		}
 
		Company::Get(st->owner)->infrastructure.station--;
 

	
 
		if (IsDriveThroughStopTile(tile)) {
 
			/* Clears the tile for us */
 
@@ -2258,6 +2266,9 @@ CommandCost CmdBuildAirport(TileIndex ti
 

	
 
		UpdateAirplanesOnNewStation(st);
 

	
 
		Company::Get(st->owner)->infrastructure.airport++;
 
		DirtyCompanyInfrastructureWindows(st->owner);
 

	
 
		st->UpdateVirtCoord();
 
		UpdateStationAcceptance(st, false);
 
		st->RecomputeIndustriesNear();
 
@@ -2342,6 +2353,9 @@ static CommandCost RemoveAirport(TileInd
 
			SetWindowDirty(WC_TOWN_VIEW, st->town->index);
 
		}
 

	
 
		Company::Get(st->owner)->infrastructure.airport--;
 
		DirtyCompanyInfrastructureWindows(st->owner);
 

	
 
		st->UpdateVirtCoord();
 
		st->RecomputeIndustriesNear();
 
		DeleteStationIfEmpty(st);
 
@@ -2486,8 +2500,9 @@ CommandCost CmdBuildDock(TileIndex tile,
 
		 * This is needed as we've unconditionally cleared that tile before. */
 
		if (wc == WATER_CLASS_CANAL) {
 
			Company::Get(st->owner)->infrastructure.water++;
 
			DirtyCompanyInfrastructureWindows(st->owner);
 
		}
 
		Company::Get(st->owner)->infrastructure.station += 2;
 
		DirtyCompanyInfrastructureWindows(st->owner);
 

	
 
		MakeDock(tile, st->owner, st->index, direction, wc);
 

	
 
@@ -2532,6 +2547,9 @@ static CommandCost RemoveDock(TileIndex 
 
		st->dock_tile = INVALID_TILE;
 
		st->facilities &= ~FACIL_DOCK;
 

	
 
		Company::Get(st->owner)->infrastructure.station -= 2;
 
		DirtyCompanyInfrastructureWindows(st->owner);
 

	
 
		SetWindowWidgetDirty(WC_STATION_VIEW, st->index, SVW_SHIPS);
 
		st->UpdateVirtCoord();
 
		st->RecomputeIndustriesNear();
src/waypoint_cmd.cpp
Show inline comments
 
@@ -28,6 +28,7 @@
 
#include "newgrf_station.h"
 
#include "company_base.h"
 
#include "water.h"
 
#include "company_gui.h"
 

	
 
#include "table/strings.h"
 

	
 
@@ -252,9 +253,11 @@ CommandCost CmdBuildRailWaypoint(TileInd
 
		}
 
		byte map_spec_index = AllocateSpecToStation(spec, wp, true);
 

	
 
		Company *c = Company::Get(wp->owner);
 
		for (int i = 0; i < count; i++) {
 
			TileIndex tile = start_tile + i * offset;
 
			byte old_specindex = HasStationTileRail(tile) ? GetCustomStationSpecIndex(tile) : 0;
 
			if (!HasStationTileRail(tile)) c->infrastructure.station++;
 
			bool reserved = IsTileType(tile, MP_RAILWAY) ?
 
					HasBit(GetRailReservationTrackBits(tile), AxisToTrack(axis)) :
 
					HasStationReservation(tile);
 
@@ -266,6 +269,7 @@ CommandCost CmdBuildRailWaypoint(TileInd
 
			DeallocateSpecFromStation(wp, old_specindex);
 
			YapfNotifyTrackLayoutChange(tile, AxisToTrack(axis));
 
		}
 
		DirtyCompanyInfrastructureWindows(wp->owner);
 
	}
 

	
 
	return CommandCost(EXPENSES_CONSTRUCTION, count * _price[PR_BUILD_WAYPOINT_RAIL]);
0 comments (0 inline, 0 general)