mirror of https://github.com/OpenTTD/OpenTTD
(svn r4085) Add GetTown{Index,ByTile}() to get the town index resp. the town from a tile
parent
bb27e9abb3
commit
88d27219b4
|
@ -11,6 +11,7 @@
|
||||||
#include "table/strings.h"
|
#include "table/strings.h"
|
||||||
#include "map.h"
|
#include "map.h"
|
||||||
#include "tile.h"
|
#include "tile.h"
|
||||||
|
#include "town_map.h"
|
||||||
#include "tunnel_map.h"
|
#include "tunnel_map.h"
|
||||||
#include "vehicle.h"
|
#include "vehicle.h"
|
||||||
#include "viewport.h"
|
#include "viewport.h"
|
||||||
|
@ -321,7 +322,7 @@ int32 CmdBuildSingleRail(int x, int y, uint32 flags, uint32 p1, uint32 p2)
|
||||||
(track == TRACK_Y && GetRoadBits(tile) == ROAD_X)
|
(track == TRACK_Y && GetRoadBits(tile) == ROAD_X)
|
||||||
)) {
|
)) {
|
||||||
if (flags & DC_EXEC) {
|
if (flags & DC_EXEC) {
|
||||||
MakeRoadCrossing(tile, GetTileOwner(tile), _current_player, (track == TRACK_X ? AXIS_Y : AXIS_X), p1, _m[tile].m2);
|
MakeRoadCrossing(tile, GetTileOwner(tile), _current_player, (track == TRACK_X ? AXIS_Y : AXIS_X), p1, GetTownIndex(tile));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -396,7 +397,7 @@ int32 CmdRemoveSingleRail(int x, int y, uint32 flags, uint32 p1, uint32 p2)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (flags & DC_EXEC) {
|
if (flags & DC_EXEC) {
|
||||||
MakeRoadNormal(tile, GetCrossingRoadOwner(tile), GetCrossingRoadBits(tile), _m[tile].m2);
|
MakeRoadNormal(tile, GetCrossingRoadOwner(tile), GetCrossingRoadBits(tile), GetTownIndex(tile));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
#include "functions.h"
|
#include "functions.h"
|
||||||
#include "map.h"
|
#include "map.h"
|
||||||
#include "tile.h"
|
#include "tile.h"
|
||||||
|
#include "town_map.h"
|
||||||
#include "vehicle.h"
|
#include "vehicle.h"
|
||||||
#include "viewport.h"
|
#include "viewport.h"
|
||||||
#include "command.h"
|
#include "command.h"
|
||||||
|
@ -109,7 +110,7 @@ int32 CmdRemoveRoad(int x, int y, uint32 flags, uint32 p1, uint32 p2)
|
||||||
if (IsTileType(tile, MP_TUNNELBRIDGE)) { // index of town is not saved for bridge (no space)
|
if (IsTileType(tile, MP_TUNNELBRIDGE)) { // index of town is not saved for bridge (no space)
|
||||||
t = ClosestTownFromTile(tile, _patches.dist_local_authority);
|
t = ClosestTownFromTile(tile, _patches.dist_local_authority);
|
||||||
} else {
|
} else {
|
||||||
t = GetTown(_m[tile].m2);
|
t = GetTownByTile(tile);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
t = NULL;
|
t = NULL;
|
||||||
|
@ -1106,7 +1107,7 @@ static void ChangeTileOwner_Road(TileIndex tile, PlayerID old_player, PlayerID n
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ROAD_CROSSING:
|
case ROAD_CROSSING:
|
||||||
MakeRoadNormal(tile, GetCrossingRoadOwner(tile), GetCrossingRoadBits(tile), _m[tile].m2);
|
MakeRoadNormal(tile, GetCrossingRoadOwner(tile), GetCrossingRoadBits(tile), GetTownIndex(tile));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
13
town_cmd.c
13
town_cmd.c
|
@ -9,6 +9,7 @@
|
||||||
#include "table/sprites.h"
|
#include "table/sprites.h"
|
||||||
#include "map.h"
|
#include "map.h"
|
||||||
#include "tile.h"
|
#include "tile.h"
|
||||||
|
#include "town_map.h"
|
||||||
#include "tunnel_map.h"
|
#include "tunnel_map.h"
|
||||||
#include "viewport.h"
|
#include "viewport.h"
|
||||||
#include "town.h"
|
#include "town.h"
|
||||||
|
@ -265,7 +266,7 @@ static void MakeSingleHouseBigger(TileIndex tile)
|
||||||
_m[tile].m3 = _m[tile].m3 + 0x40;
|
_m[tile].m3 = _m[tile].m3 + 0x40;
|
||||||
|
|
||||||
if ((_m[tile].m3 & 0xC0) == 0xC0) {
|
if ((_m[tile].m3 & 0xC0) == 0xC0) {
|
||||||
ChangePopulation(GetTown(_m[tile].m2), _housetype_population[_m[tile].m4]);
|
ChangePopulation(GetTownByTile(tile), _housetype_population[_m[tile].m4]);
|
||||||
}
|
}
|
||||||
MarkTileDirtyByTile(tile);
|
MarkTileDirtyByTile(tile);
|
||||||
}
|
}
|
||||||
|
@ -298,7 +299,7 @@ static void TileLoop_Town(TileIndex tile)
|
||||||
_m[tile].m5 = (_m[tile].m5 & 0x40) | 0x80;
|
_m[tile].m5 = (_m[tile].m5 & 0x40) | 0x80;
|
||||||
}
|
}
|
||||||
|
|
||||||
t = GetTown(_m[tile].m2);
|
t = GetTownByTile(tile);
|
||||||
|
|
||||||
r = Random();
|
r = Random();
|
||||||
|
|
||||||
|
@ -356,7 +357,7 @@ static int32 ClearTile_Town(TileIndex tile, byte flags)
|
||||||
|
|
||||||
rating = _housetype_remove_ratingmod[house];
|
rating = _housetype_remove_ratingmod[house];
|
||||||
_cleared_town_rating += rating;
|
_cleared_town_rating += rating;
|
||||||
_cleared_town = t = GetTown(_m[tile].m2);
|
_cleared_town = t = GetTownByTile(tile);
|
||||||
|
|
||||||
if (_current_player < MAX_PLAYERS) {
|
if (_current_player < MAX_PLAYERS) {
|
||||||
if (rating > t->ratings[_current_player] && !(flags & DC_NO_TOWN_RATING) && !_cheats.magic_bulldozer.value) {
|
if (rating > t->ratings[_current_player] && !(flags & DC_NO_TOWN_RATING) && !_cheats.magic_bulldozer.value) {
|
||||||
|
@ -743,7 +744,7 @@ static int GrowTownAtRoad(Town *t, TileIndex tile)
|
||||||
|
|
||||||
if (IsTileType(tile, MP_STREET)) {
|
if (IsTileType(tile, MP_STREET)) {
|
||||||
/* Don't allow building over roads of other cities */
|
/* Don't allow building over roads of other cities */
|
||||||
if (IsTileOwner(tile, OWNER_TOWN) && GetTown(_m[tile].m2) != t)
|
if (IsTileOwner(tile, OWNER_TOWN) && GetTownByTile(tile) != t)
|
||||||
_grow_town_result = -1;
|
_grow_town_result = -1;
|
||||||
else if (_game_mode == GM_EDITOR) {
|
else if (_game_mode == GM_EDITOR) {
|
||||||
/* If we are in the SE, and this road-piece has no town owner yet, it just found an
|
/* If we are in the SE, and this road-piece has no town owner yet, it just found an
|
||||||
|
@ -1483,7 +1484,7 @@ void DeleteTown(Town *t)
|
||||||
for (tile = 0; tile < MapSize(); ++tile) {
|
for (tile = 0; tile < MapSize(); ++tile) {
|
||||||
switch (GetTileType(tile)) {
|
switch (GetTileType(tile)) {
|
||||||
case MP_HOUSE:
|
case MP_HOUSE:
|
||||||
if (GetTown(_m[tile].m2) == t)
|
if (GetTownByTile(tile) == t)
|
||||||
DoCommandByTile(tile, 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR);
|
DoCommandByTile(tile, 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -1830,7 +1831,7 @@ Town *ClosestTownFromTile(TileIndex tile, uint threshold)
|
||||||
IsTileType(tile, MP_STREET) &&
|
IsTileType(tile, MP_STREET) &&
|
||||||
(IsLevelCrossing(tile) ? GetCrossingRoadOwner(tile) : GetTileOwner(tile)) == OWNER_TOWN
|
(IsLevelCrossing(tile) ? GetCrossingRoadOwner(tile) : GetTileOwner(tile)) == OWNER_TOWN
|
||||||
))
|
))
|
||||||
return GetTown(_m[tile].m2);
|
return GetTownByTile(tile);
|
||||||
|
|
||||||
FOR_ALL_TOWNS(t) {
|
FOR_ALL_TOWNS(t) {
|
||||||
if (t->xy != 0) {
|
if (t->xy != 0) {
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
/* $Id$ */
|
||||||
|
|
||||||
|
#include "town.h"
|
||||||
|
|
||||||
|
|
||||||
|
static inline uint GetTownIndex(TileIndex t)
|
||||||
|
{
|
||||||
|
return _m[t].m2;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline Town* GetTownByTile(TileIndex t)
|
||||||
|
{
|
||||||
|
return GetTown(GetTownIndex(t));
|
||||||
|
}
|
Loading…
Reference in New Issue