Changeset - r8598:ad76237b6806
[Not reviewed]
master
0 5 0
smatz - 16 years ago 2008-02-18 18:35:36
smatz@openttd.org
(svn r12179) -Codechange: use GetCrossingRailTrack() and GetCrossingRailAxis() to improve code readability
5 files changed with 16 insertions and 5 deletions:
0 comments (0 inline, 0 general)
src/openttd.cpp
Show inline comments
 
@@ -2384,25 +2384,25 @@ bool AfterLoadGame()
 
			} else if (IsTileType(t, MP_ROAD)) {
 
				/* works for all RoadTileType */
 
				for (RoadType rt = ROADTYPE_ROAD; rt < ROADTYPE_END; rt++) {
 
					/* update even non-existing road types to update tile owner too */
 
					Owner o = GetRoadOwner(t, rt);
 
					if (IsValidPlayer(o) && !GetPlayer(o)->is_active) SetRoadOwner(t, rt, OWNER_NONE);
 
				}
 
				if (IsLevelCrossing(t)) {
 
					Owner o = GetTileOwner(t);
 
					if (!GetPlayer(o)->is_active) {
 
						/* remove leftover rail piece from crossing (from very old savegames) */
 
						_current_player = o;
 
						DoCommand(t, 0, AxisToTrack(OtherAxis(GetCrossingRoadAxis(t))), DC_EXEC | DC_BANKRUPT, CMD_REMOVE_SINGLE_RAIL);
 
						DoCommand(t, 0, GetCrossingRailTrack(t), DC_EXEC | DC_BANKRUPT, CMD_REMOVE_SINGLE_RAIL);
 
					}
 
				}
 
			}
 
		}
 

	
 
		/* Convert old PF settings to new */
 
		if (_patches.yapf.rail_use_yapf) {
 
			_patches.pathfinder_for_trains = VPF_YAPF;
 
		} else {
 
			_patches.pathfinder_for_trains = (_patches.new_pathfinding_all ? VPF_NPF : VPF_NTP);
 
		}
 

	
src/rail_cmd.cpp
Show inline comments
 
@@ -1304,25 +1304,25 @@ CommandCost CmdConvertRail(TileIndex til
 
						if (IsBridge(tile)) {
 
							TileIndexDiff delta = TileOffsByDiagDir(GetTunnelBridgeDirection(tile));
 
							TileIndex t = tile + delta;
 
							for (; t != endtile; t += delta) MarkTileDirtyByTile(t); // TODO encapsulate this into a function
 
						}
 
					}
 

	
 
					cost.AddCost((GetTunnelBridgeLength(tile, endtile) + 2) * RailConvertCost(type, totype));
 
				} break;
 

	
 
				default: // MP_STATION, MP_ROAD
 
					if (flags & DC_EXEC) {
 
						Track track = (tt == MP_STATION) ? GetRailStationTrack(tile) : AxisToTrack(OtherAxis(GetCrossingRoadAxis(tile)));
 
						Track track = ((tt == MP_STATION) ? GetRailStationTrack(tile) : GetCrossingRailTrack(tile));
 
						YapfNotifyTrackLayoutChange(tile, track);
 
					}
 

	
 
					cost.AddCost(RailConvertCost(type, totype));
 
					break;
 
			}
 
		}
 
	}
 

	
 
	return (cost.GetCost() == 0) ? CMD_ERROR : cost;
 
}
 

	
src/road_cmd.cpp
Show inline comments
 
@@ -1439,25 +1439,25 @@ static void ChangeTileOwner_Road(TileInd
 
	for (RoadType rt = ROADTYPE_ROAD; rt < ROADTYPE_END; rt++) {
 
		/* ROADTYPE_ROAD denotes the tile owner, so update it too */
 
		if (rt != ROADTYPE_ROAD && !HasTileRoadType(tile, rt)) continue;
 

	
 
		if (GetRoadOwner(tile, rt) == old_player) {
 
			SetRoadOwner(tile, rt, new_player == PLAYER_SPECTATOR ? OWNER_NONE : new_player);
 
		}
 
	}
 

	
 
	if (IsLevelCrossing(tile)) {
 
		if (GetTileOwner(tile) == old_player) {
 
			if (new_player == PLAYER_SPECTATOR) {
 
				DoCommand(tile, 0, AxisToTrack(OtherAxis(GetCrossingRoadAxis(tile))), DC_EXEC | DC_BANKRUPT, CMD_REMOVE_SINGLE_RAIL);
 
				DoCommand(tile, 0, GetCrossingRailTrack(tile), DC_EXEC | DC_BANKRUPT, CMD_REMOVE_SINGLE_RAIL);
 
			} else {
 
				SetTileOwner(tile, new_player);
 
			}
 
		}
 
	}
 
}
 

	
 
static CommandCost TerraformTile_Road(TileIndex tile, uint32 flags, uint z_new, Slope tileh_new)
 
{
 
	if (_patches.build_on_slopes && AutoslopeEnabled()) {
 
		switch (GetRoadTileType(tile)) {
 
			case ROAD_TILE_CROSSING:
src/road_map.h
Show inline comments
 
@@ -197,32 +197,43 @@ static inline void SetDisallowedRoadDire
 
{
 
	assert(IsNormalRoad(t));
 
	assert(drd < DRD_END);
 
	SB(_m[t].m5, 4, 2, drd);
 
}
 

	
 
static inline Axis GetCrossingRoadAxis(TileIndex t)
 
{
 
	assert(IsLevelCrossing(t));
 
	return (Axis)GB(_m[t].m4, 6, 1);
 
}
 

	
 
static inline Axis GetCrossingRailAxis(TileIndex t)
 
{
 
	assert(IsLevelCrossing(t));
 
	return OtherAxis((Axis)GetCrossingRoadAxis(t));
 
}
 

	
 
static inline RoadBits GetCrossingRoadBits(TileIndex tile)
 
{
 
	return GetCrossingRoadAxis(tile) == AXIS_X ? ROAD_X : ROAD_Y;
 
}
 

	
 
static inline Track GetCrossingRailTrack(TileIndex tile)
 
{
 
	return AxisToTrack(GetCrossingRailAxis(tile));
 
}
 

	
 
static inline TrackBits GetCrossingRailBits(TileIndex tile)
 
{
 
	return AxisToTrackBits(OtherAxis(GetCrossingRoadAxis(tile)));
 
	return AxisToTrackBits(GetCrossingRailAxis(tile));
 
}
 

	
 
static inline bool IsCrossingBarred(TileIndex t)
 
{
 
	assert(IsLevelCrossing(t));
 
	return HasBit(_m[t].m4, 5);
 
}
 

	
 
static inline void SetCrossingBarred(TileIndex t, bool barred)
 
{
 
	assert(IsLevelCrossing(t));
 
	SB(_m[t].m4, 5, 1, barred);
src/train_cmd.cpp
Show inline comments
 
@@ -1658,25 +1658,25 @@ static void *TrainApproachingCrossingEnu
 

	
 

	
 
/**
 
 * Finds a vehicle approaching rail-road crossing
 
 * @param tile tile to test
 
 * @return pointer to vehicle approaching the crossing
 
 * @pre tile is a rail-road crossing
 
 */
 
static Vehicle *TrainApproachingCrossing(TileIndex tile)
 
{
 
	assert(IsLevelCrossingTile(tile));
 

	
 
	DiagDirection dir = AxisToDiagDir(OtherAxis(GetCrossingRoadAxis(tile)));
 
	DiagDirection dir = AxisToDiagDir(GetCrossingRailAxis(tile));
 
	TileIndex tile_from = tile + TileOffsByDiagDir(dir);
 

	
 
	Vehicle *v = (Vehicle *)VehicleFromPos(tile_from, &tile, &TrainApproachingCrossingEnum);
 

	
 
	if (v != NULL) return v;
 

	
 
	dir = ReverseDiagDir(dir);
 
	tile_from = tile + TileOffsByDiagDir(dir);
 

	
 
	return (Vehicle *)VehicleFromPos(tile_from, &tile, &TrainApproachingCrossingEnum);
 
}
 

	
0 comments (0 inline, 0 general)