Changeset - r3274:40dbd1d25717
[Not reviewed]
master
0 5 0
tron - 18 years ago 2006-03-19 19:33:19
tron@openttd.org
(svn r3986) Add [GS]etCrossingRoadOwner
5 files changed with 22 insertions and 13 deletions:
0 comments (0 inline, 0 general)
openttd.c
Show inline comments
 
@@ -1002,7 +1002,9 @@ static void ConvertTownOwner(void)
 

	
 
	for (tile = 0; tile != MapSize(); tile++) {
 
		if (IsTileType(tile, MP_STREET)) {
 
			if (IsLevelCrossing(tile) && _m[tile].m3 & 0x80) _m[tile].m3 = OWNER_TOWN;
 
			if (IsLevelCrossing(tile) && GetCrossingRoadOwner(tile) & 0x80) {
 
				SetCrossingRoadOwner(tile, OWNER_TOWN);
 
			}
 

	
 
			if (_m[tile].m1 & 0x80) SetTileOwner(tile, OWNER_TOWN);
 
		} else if (IsTileType(tile, MP_TUNNELBRIDGE)) {
rail_cmd.c
Show inline comments
 
@@ -417,7 +417,7 @@ int32 CmdRemoveSingleRail(int x, int y, 
 
			}
 

	
 
			if (flags & DC_EXEC) {
 
				MakeRoadNormal(tile, _m[tile].m3, GetCrossingRoadBits(tile), _m[tile].m2);
 
				MakeRoadNormal(tile, GetCrossingRoadOwner(tile), GetCrossingRoadBits(tile), _m[tile].m2);
 
			}
 
			break;
 
		}
road_cmd.c
Show inline comments
 
@@ -34,9 +34,8 @@ static bool CheckAllowRemoveRoad(TileInd
 
	// Only do the special processing for actual players.
 
	if (_current_player >= MAX_PLAYERS) return true;
 

	
 
	// A railway crossing has the road owner in the map3_lo byte.
 
	if (IsTileType(tile, MP_STREET) && IsLevelCrossing(tile)) {
 
		owner = _m[tile].m3;
 
		owner = GetCrossingRoadOwner(tile);
 
	} else {
 
		owner = GetTileOwner(tile);
 
	}
 
@@ -106,9 +105,7 @@ int32 CmdRemoveRoad(int x, int y, uint32
 

	
 
	if (!IsTileType(tile, MP_STREET) && !IsTileType(tile, MP_TUNNELBRIDGE)) return CMD_ERROR;
 

	
 
	// owner for railroad crossing is stored somewhere else
 
	// XXX - Fix this so for a given tiletype the owner of the type is in the same variable
 
	owner = IsLevelCrossing(tile) ? _m[tile].m3 : GetTileOwner(tile);
 
	owner = IsLevelCrossing(tile) ? GetCrossingRoadOwner(tile) : GetTileOwner(tile);
 

	
 
	if (owner == OWNER_TOWN && _game_mode != GM_EDITOR) {
 
		if (IsTileType(tile, MP_TUNNELBRIDGE)) { // index of town is not saved for bridge (no space)
 
@@ -1127,9 +1124,8 @@ static void VehicleLeave_Road(Vehicle *v
 

	
 
static void ChangeTileOwner_Road(TileIndex tile, PlayerID old_player, PlayerID new_player)
 
{
 
	// road/rail crossing where the road is owned by the current player?
 
	if (old_player == _m[tile].m3 && IsLevelCrossing(tile)) {
 
		_m[tile].m3 = (new_player == OWNER_SPECTATOR) ? OWNER_NONE : new_player;
 
	if (IsLevelCrossing(tile) && GetCrossingRoadOwner(tile) == old_player) {
 
		SetCrossingRoadOwner(tile, new_player == OWNER_SPECTATOR ? OWNER_NONE : new_player);
 
	}
 

	
 
	if (!IsTileOwner(tile, old_player)) return;
 
@@ -1143,7 +1139,7 @@ static void ChangeTileOwner_Road(TileInd
 
				break;
 

	
 
			case ROAD_CROSSING:
 
				MakeRoadNormal(tile, _m[tile].m3, GetCrossingRoadBits(tile), _m[tile].m2);
 
				MakeRoadNormal(tile, GetCrossingRoadOwner(tile), GetCrossingRoadBits(tile), _m[tile].m2);
 
				break;
 

	
 
			default:
road_map.h
Show inline comments
 
@@ -55,6 +55,18 @@ static inline TrackBits GetCrossingRailB
 
}
 

	
 

	
 
// TODO swap owner of road and rail
 
static inline Owner GetCrossingRoadOwner(TileIndex t)
 
{
 
	return (Owner)_m[t].m3;
 
}
 

	
 
static inline void SetCrossingRoadOwner(TileIndex t, Owner o)
 
{
 
	_m[t].m3 = o;
 
}
 

	
 

	
 
typedef enum RoadType {
 
	ROAD_NORMAL,
 
	ROAD_CROSSING,
town_cmd.c
Show inline comments
 
@@ -1828,10 +1828,9 @@ Town *ClosestTownFromTile(TileIndex tile
 
	uint dist, best = threshold;
 
	Town *best_town = NULL;
 

	
 
	// XXX - Fix this so for a given tiletype the owner of the type is in the same variable
 
	if (IsTileType(tile, MP_HOUSE) || (
 
				IsTileType(tile, MP_STREET) &&
 
				(IsLevelCrossing(tile) ? _m[tile].m3 : GetTileOwner(tile)) == OWNER_TOWN
 
				(IsLevelCrossing(tile) ? GetCrossingRoadOwner(tile) : GetTileOwner(tile)) == OWNER_TOWN
 
			))
 
		return GetTown(_m[tile].m2);
 

	
0 comments (0 inline, 0 general)