road_cmd.c
changeset 3274 555f8f5006fb
parent 3272 b3e2d8e19937
child 3277 1a013f0f1523
--- a/road_cmd.c	Sun Mar 19 17:52:02 2006 +0000
+++ b/road_cmd.c	Sun Mar 19 19:33:19 2006 +0000
@@ -34,9 +34,8 @@
 	// 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 @@
 
 	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 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 @@
 				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: