(svn r2486) Turn TILE_FROM_XY into an inline function and rename it to TileVirtXY

This commit is contained in:
tron 2005-06-25 06:15:43 +00:00
parent cea090af09
commit 61f6f07edd
24 changed files with 65 additions and 61 deletions

View File

@ -169,7 +169,7 @@ int32 CmdBuildAircraft(int x, int y, uint32 flags, uint32 p1, uint32 p2)
int32 value; int32 value;
Vehicle *vl[3], *v, *u, *w; Vehicle *vl[3], *v, *u, *w;
UnitID unit_num; UnitID unit_num;
TileIndex tile = TILE_FROM_XY(x,y); TileIndex tile = TileVirtXY(x, y);
const AircraftVehicleInfo *avi; const AircraftVehicleInfo *avi;
Engine *e; Engine *e;

View File

@ -236,7 +236,7 @@ int32 CmdTerraformLand(int x, int y, uint32 flags, uint32 p1, uint32 p2)
ts.modheight = modheight_data; ts.modheight = modheight_data;
ts.tile_table = tile_table_data; ts.tile_table = tile_table_data;
tile = TILE_FROM_XY(x,y); tile = TileVirtXY(x, y);
/* Make an extra check for map-bounds cause we add tiles to the originating tile */ /* Make an extra check for map-bounds cause we add tiles to the originating tile */
if (tile + TILE_XY(1,1) > MapSize()) return CMD_ERROR; if (tile + TILE_XY(1,1) > MapSize()) return CMD_ERROR;
@ -394,7 +394,7 @@ int32 CmdPurchaseLandArea(int x, int y, uint32 flags, uint32 p1, uint32 p2)
SET_EXPENSES_TYPE(EXPENSES_CONSTRUCTION); SET_EXPENSES_TYPE(EXPENSES_CONSTRUCTION);
tile = TILE_FROM_XY(x,y); tile = TileVirtXY(x, y);
if (!EnsureNoVehicle(tile)) return CMD_ERROR; if (!EnsureNoVehicle(tile)) return CMD_ERROR;
@ -450,7 +450,7 @@ int32 CmdSellLandArea(int x, int y, uint32 flags, uint32 p1, uint32 p2)
SET_EXPENSES_TYPE(EXPENSES_CONSTRUCTION); SET_EXPENSES_TYPE(EXPENSES_CONSTRUCTION);
tile = TILE_FROM_XY(x,y); tile = TileVirtXY(x, y);
if (!IsTileType(tile, MP_UNMOVABLE) || _map5[tile] != 3) return CMD_ERROR; if (!IsTileType(tile, MP_UNMOVABLE) || _map5[tile] != 3) return CMD_ERROR;
if (!CheckTileOwnership(tile) && _current_player != OWNER_WATER) return CMD_ERROR; if (!CheckTileOwnership(tile) && _current_player != OWNER_WATER) return CMD_ERROR;

View File

@ -325,7 +325,7 @@ int32 DoCommand(int x, int y, uint32 p1, uint32 p2, uint32 flags, uint procc)
CommandProc *proc; CommandProc *proc;
/* Do not even think about executing out-of-bounds tile-commands */ /* Do not even think about executing out-of-bounds tile-commands */
if (TILE_FROM_XY(x,y) > MapSize()) { if (TileVirtXY(x, y) > MapSize()) {
_cmd_text = NULL; _cmd_text = NULL;
return CMD_ERROR; return CMD_ERROR;
} }
@ -336,7 +336,7 @@ int32 DoCommand(int x, int y, uint32 p1, uint32 p2, uint32 flags, uint procc)
_error_message = INVALID_STRING_ID; _error_message = INVALID_STRING_ID;
// update last build coord of player // update last build coord of player
if ( (x|y) != 0 && _current_player < MAX_PLAYERS) { if ( (x|y) != 0 && _current_player < MAX_PLAYERS) {
GetPlayer(_current_player)->last_build_coordinate = TILE_FROM_XY(x,y); GetPlayer(_current_player)->last_build_coordinate = TileVirtXY(x, y);
} }
} }

View File

@ -76,7 +76,7 @@ static void InitializeDisasterVehicle(Vehicle *v, int x, int y, byte z, byte dir
v->x_pos = x; v->x_pos = x;
v->y_pos = y; v->y_pos = y;
v->z_pos = z; v->z_pos = z;
v->tile = TILE_FROM_XY(x,y); v->tile = TileVirtXY(x, y);
v->direction = direction; v->direction = direction;
v->subtype = subtype; v->subtype = subtype;
v->x_offs = -1; v->x_offs = -1;
@ -111,7 +111,7 @@ static void SetDisasterVehiclePos(Vehicle *v, int x, int y, byte z)
v->x_pos = x; v->x_pos = x;
v->y_pos = y; v->y_pos = y;
v->z_pos = z; v->z_pos = z;
v->tile = TILE_FROM_XY(x,y); v->tile = TileVirtXY(x, y);
DisasterVehicleUpdateImage(v); DisasterVehicleUpdateImage(v);
VehiclePositionChanged(v); VehiclePositionChanged(v);
@ -398,7 +398,7 @@ static void DisasterTick_2(Vehicle *v)
if ( (uint)x > MapMaxX() * 16-1) if ( (uint)x > MapMaxX() * 16-1)
return; return;
tile = TILE_FROM_XY(x,y); tile = TileVirtXY(x, y);
if (!IsTileType(tile, MP_INDUSTRY)) if (!IsTileType(tile, MP_INDUSTRY))
return; return;
@ -469,7 +469,7 @@ static void DisasterTick_3(Vehicle *v)
if ( (uint)x > MapMaxX() * 16-1) if ( (uint)x > MapMaxX() * 16-1)
return; return;
tile = TILE_FROM_XY(x,y); tile = TileVirtXY(x, y);
if (!IsTileType(tile, MP_INDUSTRY)) if (!IsTileType(tile, MP_INDUSTRY))
return; return;

View File

@ -1206,7 +1206,7 @@ static void SignListWndProc(Window *w, WindowEvent *e)
return; return;
ss = GetSign(_sign_sort[id_v]); ss = GetSign(_sign_sort[id_v]);
ScrollMainWindowToTile(TILE_FROM_XY(ss->x, ss->y)); ScrollMainWindowToTile(TileVirtXY(ss->x, ss->y));
} break; } break;
} }
} break; } break;

View File

@ -1555,7 +1555,7 @@ int32 CmdBuildIndustry(int x, int y, uint32 flags, uint32 p1, uint32 p2)
{ {
Town *t; Town *t;
Industry *i; Industry *i;
TileIndex tile = TILE_FROM_XY(x,y); TileIndex tile = TileVirtXY(x, y);
int num; int num;
const IndustryTileTable * const *itt; const IndustryTileTable * const *itt;
const IndustryTileTable *it; const IndustryTileTable *it;

View File

@ -73,7 +73,7 @@ void FindLandscapeHeight(TileInfo *ti, uint x, uint y)
return; return;
} }
FindLandscapeHeightByTile(ti, TILE_FROM_XY(x,y)); FindLandscapeHeightByTile(ti, TileVirtXY(x, y));
} }
uint GetPartialZ(int x, int y, int corners) uint GetPartialZ(int x, int y, int corners)
@ -284,7 +284,7 @@ void GetTileDesc(TileIndex tile, TileDesc *td)
*/ */
int32 CmdLandscapeClear(int x, int y, uint32 flags, uint32 p1, uint32 p2) int32 CmdLandscapeClear(int x, int y, uint32 flags, uint32 p1, uint32 p2)
{ {
TileIndex tile = TILE_FROM_XY(x, y); TileIndex tile = TileVirtXY(x, y);
SET_EXPENSES_TYPE(EXPENSES_CONSTRUCTION); SET_EXPENSES_TYPE(EXPENSES_CONSTRUCTION);
@ -318,7 +318,7 @@ int32 CmdClearArea(int ex, int ey, uint32 flags, uint32 p1, uint32 p2)
for (x = sx; x <= ex; x += 16) { for (x = sx; x <= ex; x += 16) {
for (y = sy; y <= ey; y += 16) { for (y = sy; y <= ey; y += 16) {
ret = DoCommandByTile(TILE_FROM_XY(x,y), 0, 0, flags &~DC_EXEC, CMD_LANDSCAPE_CLEAR); ret = DoCommandByTile(TileVirtXY(x, y), 0, 0, flags & ~DC_EXEC, CMD_LANDSCAPE_CLEAR);
if (CmdFailed(ret)) continue; if (CmdFailed(ret)) continue;
cost += ret; cost += ret;
success = true; success = true;
@ -328,7 +328,7 @@ int32 CmdClearArea(int ex, int ey, uint32 flags, uint32 p1, uint32 p2)
_additional_cash_required = ret; _additional_cash_required = ret;
return cost - ret; return cost - ret;
} }
DoCommandByTile(TILE_FROM_XY(x,y), 0, 0, flags, CMD_LANDSCAPE_CLEAR); DoCommandByTile(TileVirtXY(x, y), 0, 0, flags, CMD_LANDSCAPE_CLEAR);
// draw explosion animation... // draw explosion animation...
if ((x == sx || x == ex) && (y == sy || y == ey)) { if ((x == sx || x == ex) && (y == sy || y == ey)) {

6
map.h
View File

@ -3,7 +3,6 @@
#include "stdafx.h" #include "stdafx.h"
#define TILE_FROM_XY(x,y) (TileIndex)((((y) >> 4) << MapLogX()) + ((x) >> 4))
#define TILE_XY(x,y) (((y) << MapLogX()) + (x)) #define TILE_XY(x,y) (((y) << MapLogX()) + (x))
#define TILE_MASK(x) ((x) & ((1 << (MapLogX() + MapLogY())) - 1)) #define TILE_MASK(x) ((x) & ((1 << (MapLogX() + MapLogY())) - 1))
@ -37,6 +36,11 @@ uint ScaleByMapSize1D(uint); // Scale relative to the circumference of the map
typedef uint32 TileIndex; typedef uint32 TileIndex;
static inline TileIndex TileVirtXY(uint x, uint y)
{
return (y >> 4 << MapLogX()) + (x >> 4);
}
typedef enum { typedef enum {
OWNER_TOWN = 0xf, // a town owns the tile OWNER_TOWN = 0xf, // a town owns the tile
OWNER_NONE = 0x10, // nobody owns the tile OWNER_NONE = 0x10, // nobody owns the tile

View File

@ -701,7 +701,7 @@ void DrawStationCoverageAreaText(int sx, int sy, uint mask, int rad) {
int y = _thd.pos.y; int y = _thd.pos.y;
uint accepts[NUM_CARGO]; uint accepts[NUM_CARGO];
if (x != -1) { if (x != -1) {
GetAcceptanceAroundTiles(accepts, TILE_FROM_XY(x, y), _thd.size.x /16, _thd.size.y /16 , rad); GetAcceptanceAroundTiles(accepts, TileVirtXY(x, y), _thd.size.x / 16, _thd.size.y / 16 , rad);
DrawStationCoverageText(accepts, sx, sy, mask); DrawStationCoverageText(accepts, sx, sy, mask);
} }
} }

View File

@ -230,7 +230,7 @@ FindLengthOfTunnelResult FindLengthOfTunnel(TileIndex tile, int direction)
x += _get_tunlen_inc[direction]; x += _get_tunlen_inc[direction];
y += _get_tunlen_inc[direction+1]; y += _get_tunlen_inc[direction+1];
tile = TILE_FROM_XY(x,y); tile = TileVirtXY(x, y);
if (IsTileType(tile, MP_TUNNELBRIDGE) && if (IsTileType(tile, MP_TUNNELBRIDGE) &&
(_map5[tile] & 0xF0) == 0 && // tunnel entrance/exit (_map5[tile] & 0xF0) == 0 && // tunnel entrance/exit

View File

@ -266,7 +266,7 @@ int32 CmdBuildSingleRail(int x, int y, uint32 flags, uint32 p1, uint32 p2)
if (!ValParamRailtype(p1) || !ValParamTrackOrientation(track)) return CMD_ERROR; if (!ValParamRailtype(p1) || !ValParamTrackOrientation(track)) return CMD_ERROR;
tile = TILE_FROM_XY(x, y); tile = TileVirtXY(x, y);
tileh = GetTileSlope(tile, NULL); tileh = GetTileSlope(tile, NULL);
m5 = _map5[tile]; m5 = _map5[tile];
trackbit = TrackToTrackBits(track); trackbit = TrackToTrackBits(track);
@ -410,7 +410,7 @@ int32 CmdRemoveSingleRail(int x, int y, uint32 flags, uint32 p1, uint32 p2)
SET_EXPENSES_TYPE(EXPENSES_CONSTRUCTION); SET_EXPENSES_TYPE(EXPENSES_CONSTRUCTION);
tile = TILE_FROM_XY(x, y); tile = TileVirtXY(x, y);
tileh = GetTileSlope(tile, NULL); tileh = GetTileSlope(tile, NULL);
if (!IsTileType(tile, MP_TUNNELBRIDGE) && !IsTileType(tile, MP_STREET) && !IsTileType(tile, MP_RAILWAY)) if (!IsTileType(tile, MP_TUNNELBRIDGE) && !IsTileType(tile, MP_STREET) && !IsTileType(tile, MP_RAILWAY))
@ -588,7 +588,7 @@ static int32 CmdRailTrackHelper(int x, int y, uint32 flags, uint32 p1, uint32 p2
if (CmdFailed(ValidateAutoDrag(&trackdir, x, y, ex, ey))) return CMD_ERROR; if (CmdFailed(ValidateAutoDrag(&trackdir, x, y, ex, ey))) return CMD_ERROR;
if (flags & DC_EXEC) SndPlayTileFx(SND_20_SPLAT_2, TILE_FROM_XY(x,y)); if (flags & DC_EXEC) SndPlayTileFx(SND_20_SPLAT_2, TileVirtXY(x, y));
for(;;) { for(;;) {
ret = DoCommand(x, y, p2 & 0x3, TrackdirToTrack(trackdir), flags, (mode == 0) ? CMD_BUILD_SINGLE_RAIL : CMD_REMOVE_SINGLE_RAIL); ret = DoCommand(x, y, p2 & 0x3, TrackdirToTrack(trackdir), flags, (mode == 0) ? CMD_BUILD_SINGLE_RAIL : CMD_REMOVE_SINGLE_RAIL);
@ -638,7 +638,7 @@ int32 CmdRemoveRailroadTrack(int x, int y, uint32 flags, uint32 p1, uint32 p2)
int32 CmdBuildTrainDepot(int x, int y, uint32 flags, uint32 p1, uint32 p2) int32 CmdBuildTrainDepot(int x, int y, uint32 flags, uint32 p1, uint32 p2)
{ {
Depot *d; Depot *d;
TileIndex tile = TILE_FROM_XY(x,y); TileIndex tile = TileVirtXY(x, y);
int32 cost, ret; int32 cost, ret;
uint tileh; uint tileh;
@ -694,7 +694,7 @@ int32 CmdBuildTrainDepot(int x, int y, uint32 flags, uint32 p1, uint32 p2)
*/ */
int32 CmdBuildSingleSignal(int x, int y, uint32 flags, uint32 p1, uint32 p2) int32 CmdBuildSingleSignal(int x, int y, uint32 flags, uint32 p1, uint32 p2)
{ {
TileIndex tile = TILE_FROM_XY(x, y); TileIndex tile = TileVirtXY(x, y);
bool semaphore; bool semaphore;
bool pre_signal; bool pre_signal;
Track track = (Track)(p1 & 0x7); Track track = (Track)(p1 & 0x7);
@ -819,7 +819,7 @@ static int32 CmdSignalTrackHelper(int x, int y, uint32 flags, uint32 p1, uint32
int ex, ey; int ex, ey;
int32 ret, total_cost, signal_ctr; int32 ret, total_cost, signal_ctr;
byte signals; byte signals;
TileIndex tile = TILE_FROM_XY(x, y); TileIndex tile = TileVirtXY(x, y);
bool error = true; bool error = true;
int mode = p2 & 0x1; int mode = p2 & 0x1;
@ -910,7 +910,7 @@ int32 CmdBuildSignalTrack(int x, int y, uint32 flags, uint32 p1, uint32 p2)
*/ */
int32 CmdRemoveSingleSignal(int x, int y, uint32 flags, uint32 p1, uint32 p2) int32 CmdRemoveSingleSignal(int x, int y, uint32 flags, uint32 p1, uint32 p2)
{ {
TileIndex tile = TILE_FROM_XY(x, y); TileIndex tile = TileVirtXY(x, y);
Track track = (Track)(p1 & 0x7); Track track = (Track)(p1 & 0x7);
if (!ValParamTrackOrientation(track) || !IsTileType(tile, MP_RAILWAY) || !EnsureNoVehicle(tile)) if (!ValParamTrackOrientation(track) || !IsTileType(tile, MP_RAILWAY) || !EnsureNoVehicle(tile))
@ -1003,7 +1003,7 @@ int32 CmdConvertRail(int ex, int ey, uint32 flags, uint32 p1, uint32 p2)
for (x = sx; x <= ex; x += TILE_SIZE) { for (x = sx; x <= ex; x += TILE_SIZE) {
for (y = sy; y <= ey; y += TILE_SIZE) { for (y = sy; y <= ey; y += TILE_SIZE) {
TileIndex tile = TILE_FROM_XY(x,y); TileIndex tile = TileVirtXY(x, y);
DoConvertRailProc *proc; DoConvertRailProc *proc;
if (IsTileType(tile, MP_RAILWAY)) proc = DoConvertRail; if (IsTileType(tile, MP_RAILWAY)) proc = DoConvertRail;

View File

@ -314,7 +314,7 @@ static void BuildRailClick_Landscaping(Window *w)
static void DoRailroadTrack(int mode) static void DoRailroadTrack(int mode)
{ {
DoCommandP(TILE_FROM_XY(_thd.selstart.x, _thd.selstart.y), TILE_FROM_XY(_thd.selend.x, _thd.selend.y), _cur_railtype | (mode << 4), NULL, DoCommandP(TileVirtXY(_thd.selstart.x, _thd.selstart.y), TileVirtXY(_thd.selend.x, _thd.selend.y), _cur_railtype | (mode << 4), NULL,
_remove_button_clicked ? _remove_button_clicked ?
CMD_REMOVE_RAILROAD_TRACK | CMD_AUTO | CMD_NO_WATER | CMD_MSG(STR_1012_CAN_T_REMOVE_RAILROAD_TRACK) : CMD_REMOVE_RAILROAD_TRACK | CMD_AUTO | CMD_NO_WATER | CMD_MSG(STR_1012_CAN_T_REMOVE_RAILROAD_TRACK) :
CMD_BUILD_RAILROAD_TRACK | CMD_AUTO | CMD_NO_WATER | CMD_MSG(STR_1011_CAN_T_BUILD_RAILROAD_TRACK) CMD_BUILD_RAILROAD_TRACK | CMD_AUTO | CMD_NO_WATER | CMD_MSG(STR_1011_CAN_T_BUILD_RAILROAD_TRACK)
@ -327,7 +327,7 @@ static void HandleAutodirPlacement(void)
int trackstat = thd->drawstyle & 0xF; // 0..5 int trackstat = thd->drawstyle & 0xF; // 0..5
if (thd->drawstyle & HT_RAIL) { // one tile case if (thd->drawstyle & HT_RAIL) { // one tile case
GenericPlaceRail(TILE_FROM_XY(thd->selend.x, thd->selend.y), trackstat); GenericPlaceRail(TileVirtXY(thd->selend.x, thd->selend.y), trackstat);
return; return;
} }
@ -340,13 +340,13 @@ static void HandleAutoSignalPlacement(void)
byte trackstat = thd->drawstyle & 0xF; // 0..5 byte trackstat = thd->drawstyle & 0xF; // 0..5
if (thd->drawstyle == HT_RECT) { // one tile case if (thd->drawstyle == HT_RECT) { // one tile case
GenericPlaceSignals(TILE_FROM_XY(thd->selend.x, thd->selend.y)); GenericPlaceSignals(TileVirtXY(thd->selend.x, thd->selend.y));
return; return;
} }
// _patches.drag_signals_density is given as a parameter such that each user in a network // _patches.drag_signals_density is given as a parameter such that each user in a network
// game can specify his/her own signal density // game can specify his/her own signal density
DoCommandP(TILE_FROM_XY(thd->selstart.x, thd->selstart.y), TILE_FROM_XY(thd->selend.x, thd->selend.y), DoCommandP(TileVirtXY(thd->selstart.x, thd->selstart.y), TileVirtXY(thd->selend.x, thd->selend.y),
(_ctrl_pressed ? 1 << 3 : 0) | (trackstat << 4) | (_patches.drag_signals_density << 24), (_ctrl_pressed ? 1 << 3 : 0) | (trackstat << 4) | (_patches.drag_signals_density << 24),
CcPlaySound1E, CcPlaySound1E,
(_remove_button_clicked ? CMD_REMOVE_SIGNAL_TRACK | CMD_AUTO | CMD_NO_WATER | CMD_MSG(STR_1013_CAN_T_REMOVE_SIGNALS_FROM) : (_remove_button_clicked ? CMD_REMOVE_SIGNAL_TRACK | CMD_AUTO | CMD_NO_WATER | CMD_MSG(STR_1013_CAN_T_REMOVE_SIGNALS_FROM) :

View File

@ -518,7 +518,7 @@ int32 CmdBuildLongRoad(int x, int y, uint32 flags, uint32 p1, uint32 p2)
if (p1 > MapSize()) return CMD_ERROR; if (p1 > MapSize()) return CMD_ERROR;
start_tile = p1; start_tile = p1;
end_tile = TILE_FROM_XY(x, y); end_tile = TileVirtXY(x, y);
/* Only drag in X or Y direction dictated by the direction variable */ /* Only drag in X or Y direction dictated by the direction variable */
if (!HASBIT(p2, 2) && TileY(start_tile) != TileY(end_tile)) return CMD_ERROR; // x-axis if (!HASBIT(p2, 2) && TileY(start_tile) != TileY(end_tile)) return CMD_ERROR; // x-axis
@ -572,7 +572,7 @@ int32 CmdRemoveLongRoad(int x, int y, uint32 flags, uint32 p1, uint32 p2)
if (p1 > MapSize()) return CMD_ERROR; if (p1 > MapSize()) return CMD_ERROR;
start_tile = p1; start_tile = p1;
end_tile = TILE_FROM_XY(x, y); end_tile = TileVirtXY(x, y);
/* Only drag in X or Y direction dictated by the direction variable */ /* Only drag in X or Y direction dictated by the direction variable */
if (!HASBIT(p2, 2) && TileY(start_tile) != TileY(end_tile)) return CMD_ERROR; // x-axis if (!HASBIT(p2, 2) && TileY(start_tile) != TileY(end_tile)) return CMD_ERROR; // x-axis

View File

@ -120,7 +120,7 @@ int32 CmdBuildRoadVeh(int x, int y, uint32 flags, uint32 p1, uint32 p2)
int32 cost; int32 cost;
Vehicle *v; Vehicle *v;
UnitID unit_num; UnitID unit_num;
TileIndex tile = TILE_FROM_XY(x,y); TileIndex tile = TileVirtXY(x, y);
Engine *e; Engine *e;
if (!IsEngineBuildable(p1, VEH_Road)) return CMD_ERROR; if (!IsEngineBuildable(p1, VEH_Road)) return CMD_ERROR;
@ -789,7 +789,7 @@ static Vehicle *RoadVehFindCloseTo(Vehicle *v, int x, int y, byte dir)
rvf.y = y; rvf.y = y;
rvf.dir = dir; rvf.dir = dir;
rvf.veh = v; rvf.veh = v;
u = VehicleFromPos(TILE_FROM_XY(x,y), &rvf, (VehicleFromPosProc*)EnumCheckRoadVehClose); u = VehicleFromPos(TileVirtXY(x, y), &rvf, (VehicleFromPosProc*)EnumCheckRoadVehClose);
// This code protects a roadvehicle from being blocked for ever // This code protects a roadvehicle from being blocked for ever
// If more than 1480 / 74 days a road vehicle is blocked, it will // If more than 1480 / 74 days a road vehicle is blocked, it will

View File

@ -866,7 +866,7 @@ int32 CmdBuildShip(int x, int y, uint32 flags, uint32 p1, uint32 p2)
int32 value; int32 value;
Vehicle *v; Vehicle *v;
UnitID unit_num; UnitID unit_num;
TileIndex tile = TILE_FROM_XY(x,y); TileIndex tile = TileVirtXY(x, y);
Engine *e; Engine *e;
if (!IsEngineBuildable(p1, VEH_Ship)) return CMD_ERROR; if (!IsEngineBuildable(p1, VEH_Ship)) return CMD_ERROR;

View File

@ -942,7 +942,7 @@ int32 CmdBuildRailroadStation(int x, int y, uint32 flags, uint32 p1, uint32 p2)
SET_EXPENSES_TYPE(EXPENSES_CONSTRUCTION); SET_EXPENSES_TYPE(EXPENSES_CONSTRUCTION);
tile_org = TILE_FROM_XY(x, y); tile_org = TileVirtXY(x, y);
/* Does the authority allow this? */ /* Does the authority allow this? */
if (!(flags & DC_NO_TOWN_RATING) && !CheckIfAuthorityAllows(tile_org)) return CMD_ERROR; if (!(flags & DC_NO_TOWN_RATING) && !CheckIfAuthorityAllows(tile_org)) return CMD_ERROR;
@ -1125,7 +1125,7 @@ restart:
*/ */
int32 CmdRemoveFromRailroadStation(int x, int y, uint32 flags, uint32 p1, uint32 p2) int32 CmdRemoveFromRailroadStation(int x, int y, uint32 flags, uint32 p1, uint32 p2)
{ {
TileIndex tile = TILE_FROM_XY(x, y); TileIndex tile = TileVirtXY(x, y);
Station *st; Station *st;
SET_EXPENSES_TYPE(EXPENSES_CONSTRUCTION); SET_EXPENSES_TYPE(EXPENSES_CONSTRUCTION);
@ -1451,7 +1451,7 @@ int32 CmdBuildRoadStop(int x, int y, uint32 flags, uint32 p1, uint32 p2)
SET_EXPENSES_TYPE(EXPENSES_CONSTRUCTION); SET_EXPENSES_TYPE(EXPENSES_CONSTRUCTION);
tile = TILE_FROM_XY(x,y); tile = TileVirtXY(x, y);
if (!(flags & DC_NO_TOWN_RATING) && !CheckIfAuthorityAllows(tile)) if (!(flags & DC_NO_TOWN_RATING) && !CheckIfAuthorityAllows(tile))
return CMD_ERROR; return CMD_ERROR;
@ -1675,7 +1675,7 @@ int32 CmdBuildAirport(int x, int y, uint32 flags, uint32 p1, uint32 p2)
/* Check if a valid, buildable airport was chosen for construction */ /* Check if a valid, buildable airport was chosen for construction */
if (p1 > lengthof(_airport_map5_tiles) || !HASBIT(GetValidAirports(), p1)) return CMD_ERROR; if (p1 > lengthof(_airport_map5_tiles) || !HASBIT(GetValidAirports(), p1)) return CMD_ERROR;
tile = TILE_FROM_XY(x,y); tile = TileVirtXY(x, y);
if (!(flags & DC_NO_TOWN_RATING) && !CheckIfAuthorityAllows(tile)) if (!(flags & DC_NO_TOWN_RATING) && !CheckIfAuthorityAllows(tile))
return CMD_ERROR; return CMD_ERROR;

View File

@ -1023,7 +1023,7 @@ static Town *AllocateTown(void)
*/ */
int32 CmdBuildTown(int x, int y, uint32 flags, uint32 p1, uint32 p2) int32 CmdBuildTown(int x, int y, uint32 flags, uint32 p1, uint32 p2)
{ {
TileIndex tile = TILE_FROM_XY(x,y); TileIndex tile = TileVirtXY(x, y);
TileInfo ti; TileInfo ti;
Town *t; Town *t;
uint32 townnameparts; uint32 townnameparts;

View File

@ -596,7 +596,7 @@ int32 CmdBuildRailVehicle(int x, int y, uint32 flags, uint32 p1, uint32 p2)
Vehicle *v, *u; Vehicle *v, *u;
UnitID unit_num; UnitID unit_num;
Engine *e; Engine *e;
TileIndex tile = TILE_FROM_XY(x,y); TileIndex tile = TileVirtXY(x, y);
/* Check if the engine-type is valid (for the player) */ /* Check if the engine-type is valid (for the player) */
if (!IsEngineBuildable(p1, VEH_Train)) return CMD_ERROR; if (!IsEngineBuildable(p1, VEH_Train)) return CMD_ERROR;
@ -2366,7 +2366,7 @@ static byte AfterSetTrainPos(Vehicle *v, bool new_tile)
CLRBIT(v->u.rail.flags, VRF_GOINGDOWN); CLRBIT(v->u.rail.flags, VRF_GOINGDOWN);
if (new_z != old_z) { if (new_z != old_z) {
TileIndex tile = TILE_FROM_XY(v->x_pos, v->y_pos); TileIndex tile = TileVirtXY(v->x_pos, v->y_pos);
// XXX workaround, whole UP/DOWN detection needs overhaul // XXX workaround, whole UP/DOWN detection needs overhaul
if (!IsTileType(tile, MP_TUNNELBRIDGE) || (_map5[tile] & 0x80) != 0) if (!IsTileType(tile, MP_TUNNELBRIDGE) || (_map5[tile] & 0x80) != 0)
@ -2582,13 +2582,13 @@ static void CheckTrainCollision(Vehicle *v)
if (v->u.rail.track == 0x80) if (v->u.rail.track == 0x80)
return; return;
assert(v->u.rail.track == 0x40 || TILE_FROM_XY(v->x_pos, v->y_pos) == v->tile); assert(v->u.rail.track == 0x40 || TileVirtXY(v->x_pos, v->y_pos) == v->tile);
tcc.v = v; tcc.v = v;
tcc.v_skip = v->next; tcc.v_skip = v->next;
/* find colliding vehicle */ /* find colliding vehicle */
realcoll = VehicleFromPos(TILE_FROM_XY(v->x_pos, v->y_pos), &tcc, FindTrainCollideEnum); realcoll = VehicleFromPos(TileVirtXY(v->x_pos, v->y_pos), &tcc, FindTrainCollideEnum);
if (realcoll == NULL) if (realcoll == NULL)
return; return;

View File

@ -61,7 +61,7 @@ int32 DestroyCompanyHQ(TileIndex tile, uint32 flags)
extern int32 CheckFlatLandBelow(TileIndex tile, uint w, uint h, uint flags, uint invalid_dirs, int *); extern int32 CheckFlatLandBelow(TileIndex tile, uint w, uint h, uint flags, uint invalid_dirs, int *);
int32 CmdBuildCompanyHQ(int x, int y, uint32 flags, uint32 p1, uint32 p2) int32 CmdBuildCompanyHQ(int x, int y, uint32 flags, uint32 p1, uint32 p2)
{ {
TileIndex tile = TILE_FROM_XY(x,y); TileIndex tile = TileVirtXY(x, y);
Player *p = GetPlayer(_current_player); Player *p = GetPlayer(_current_player);
int cost; int cost;

View File

@ -592,7 +592,7 @@ static void ChimneySmokeTick(Vehicle *v)
BeginVehicleMove(v); BeginVehicleMove(v);
tile = TILE_FROM_XY(v->x_pos, v->y_pos); tile = TileVirtXY(v->x_pos, v->y_pos);
if (!IsTileType(tile, MP_INDUSTRY)) { if (!IsTileType(tile, MP_INDUSTRY)) {
EndVehicleMove(v); EndVehicleMove(v);
DeleteVehicle(v); DeleteVehicle(v);
@ -1094,7 +1094,7 @@ static void BubbleTick(Vehicle *v)
et++; et++;
SndPlayVehicleFx(SND_31_EXTRACT, v); SndPlayVehicleFx(SND_31_EXTRACT, v);
tile = TILE_FROM_XY(v->x_pos, v->y_pos); tile = TileVirtXY(v->x_pos, v->y_pos);
if (IsTileType(tile, MP_INDUSTRY) && if (IsTileType(tile, MP_INDUSTRY) &&
_map5[tile] == 0xA2) { _map5[tile] == 0xA2) {
AddAnimatedTile(tile); AddAnimatedTile(tile);
@ -1703,7 +1703,7 @@ bool GetNewVehiclePos(Vehicle *v, GetNewVehiclePosResult *gp)
gp->x = x; gp->x = x;
gp->y = y; gp->y = y;
gp->old_tile = v->tile; gp->old_tile = v->tile;
gp->new_tile = TILE_FROM_XY(x,y); gp->new_tile = TileVirtXY(x, y);
return gp->old_tile == gp->new_tile; return gp->old_tile == gp->new_tile;
} }

View File

@ -684,7 +684,7 @@ static void DrawTileSelection(const TileInfo *ti)
} else if (IsPartOfAutoLine(ti->x, ti->y)) { // autorail highlighting long line } else if (IsPartOfAutoLine(ti->x, ti->y)) { // autorail highlighting long line
int dir = _thd.drawstyle & ~0xF0; int dir = _thd.drawstyle & ~0xF0;
TileIndex start = TILE_FROM_XY(_thd.selstart.x, _thd.selstart.y); TileIndex start = TileVirtXY(_thd.selstart.x, _thd.selstart.y);
int diffx, diffy; int diffx, diffy;
int side; int side;
@ -1443,7 +1443,7 @@ void MarkTileDirty(int x, int y)
Point pt; Point pt;
if (IS_INT_INSIDE(x, 0, MapSizeX() * 16) && if (IS_INT_INSIDE(x, 0, MapSizeX() * 16) &&
IS_INT_INSIDE(y, 0, MapSizeY() * 16)) IS_INT_INSIDE(y, 0, MapSizeY() * 16))
z = GetTileZ(TILE_FROM_XY(x,y)); z = GetTileZ(TileVirtXY(x, y));
pt = RemapCoords(x, y, z); pt = RemapCoords(x, y, z);
MarkAllViewportsDirty( MarkAllViewportsDirty(
@ -1699,7 +1699,7 @@ static void CheckClickOnLandscape(ViewPort *vp, int x, int y)
{ {
Point pt = TranslateXYToTileCoord(vp,x,y); Point pt = TranslateXYToTileCoord(vp,x,y);
if (pt.x != -1) ClickTile(TILE_FROM_XY(pt.x, pt.y)); if (pt.x != -1) ClickTile(TileVirtXY(pt.x, pt.y));
} }
void HandleClickOnTrain(Vehicle *v); void HandleClickOnTrain(Vehicle *v);
@ -1783,7 +1783,7 @@ void PlaceObject(void)
if ((w = GetCallbackWnd()) != NULL) { if ((w = GetCallbackWnd()) != NULL) {
e.event = WE_PLACE_OBJ; e.event = WE_PLACE_OBJ;
e.place.pt = pt; e.place.pt = pt;
e.place.tile = TILE_FROM_XY(pt.x, pt.y); e.place.tile = TileVirtXY(pt.x, pt.y);
w->wndproc(w, &e); w->wndproc(w, &e);
} }
} }
@ -2027,7 +2027,7 @@ static void CalcRaildirsDrawstyle(TileHighlightData *thd, int x, int y, int meth
w = myabs(dx) + 16; w = myabs(dx) + 16;
h = myabs(dy) + 16; h = myabs(dy) + 16;
if (TILE_FROM_XY(thd->selstart.x, thd->selstart.y) == TILE_FROM_XY(x,y)) { // check if we're only within one tile if (TileVirtXY(thd->selstart.x, thd->selstart.y) == TileVirtXY(x, y)) { // check if we're only within one tile
if(method == VPM_RAILDIRS) if(method == VPM_RAILDIRS)
b = GetAutorailHT(x, y); b = GetAutorailHT(x, y);
else // rect for autosignals on one tile else // rect for autosignals on one tile
@ -2187,8 +2187,8 @@ bool VpHandlePlaceSizingDrag(void)
// and call the mouseup event. // and call the mouseup event.
e.event = WE_PLACE_MOUSEUP; e.event = WE_PLACE_MOUSEUP;
e.place.pt = _thd.selend; e.place.pt = _thd.selend;
e.place.tile = TILE_FROM_XY(e.place.pt.x, e.place.pt.y); e.place.tile = TileVirtXY(e.place.pt.x, e.place.pt.y);
e.place.starttile = TILE_FROM_XY(_thd.selstart.x, _thd.selstart.y); e.place.starttile = TileVirtXY(_thd.selstart.x, _thd.selstart.y);
w->wndproc(w, &e); w->wndproc(w, &e);
return false; return false;

View File

@ -38,7 +38,7 @@ int32 CmdBuildShipDepot(int x, int y, uint32 flags, uint32 p1, uint32 p2)
if (p1 > 3) return CMD_ERROR; if (p1 > 3) return CMD_ERROR;
tile = TILE_FROM_XY(x,y); tile = TileVirtXY(x, y);
if (!EnsureNoVehicle(tile)) return CMD_ERROR; if (!EnsureNoVehicle(tile)) return CMD_ERROR;
tile2 = tile + (p1 ? TILE_XY(0,1) : TILE_XY(1,0)); tile2 = tile + (p1 ? TILE_XY(0,1) : TILE_XY(1,0));
@ -166,7 +166,7 @@ static void MarkTilesAroundDirty(TileIndex tile)
*/ */
int32 CmdBuildLock(int x, int y, uint32 flags, uint32 p1, uint32 p2) int32 CmdBuildLock(int x, int y, uint32 flags, uint32 p1, uint32 p2)
{ {
TileIndex tile = TILE_FROM_XY(x,y); TileIndex tile = TileVirtXY(x, y);
uint tileh; uint tileh;
SET_EXPENSES_TYPE(EXPENSES_CONSTRUCTION); SET_EXPENSES_TYPE(EXPENSES_CONSTRUCTION);

View File

@ -155,7 +155,7 @@ static Waypoint *FindDeletedWaypointCloseTo(TileIndex tile)
*/ */
int32 CmdBuildTrainWaypoint(int x, int y, uint32 flags, uint32 p1, uint32 p2) int32 CmdBuildTrainWaypoint(int x, int y, uint32 flags, uint32 p1, uint32 p2)
{ {
TileIndex tile = TILE_FROM_XY(x, y); TileIndex tile = TileVirtXY(x, y);
Waypoint *wp; Waypoint *wp;
uint tileh; uint tileh;
uint dir; uint dir;
@ -285,7 +285,7 @@ int32 RemoveTrainWaypoint(TileIndex tile, uint32 flags, bool justremove)
*/ */
int32 CmdRemoveTrainWaypoint(int x, int y, uint32 flags, uint32 p1, uint32 p2) int32 CmdRemoveTrainWaypoint(int x, int y, uint32 flags, uint32 p1, uint32 p2)
{ {
TileIndex tile = TILE_FROM_XY(x,y); TileIndex tile = TileVirtXY(x, y);
SET_EXPENSES_TYPE(EXPENSES_CONSTRUCTION); SET_EXPENSES_TYPE(EXPENSES_CONSTRUCTION);
return RemoveTrainWaypoint(tile, flags, true); return RemoveTrainWaypoint(tile, flags, true);
} }

View File

@ -767,7 +767,7 @@ static void HandlePlacePresize(void)
_thd.selend.x = -1; _thd.selend.x = -1;
return; return;
} }
e.place.tile = TILE_FROM_XY(e.place.pt.x, e.place.pt.y); e.place.tile = TileVirtXY(e.place.pt.x, e.place.pt.y);
e.event = WE_PLACE_PRESIZE; e.event = WE_PLACE_PRESIZE;
w->wndproc(w, &e); w->wndproc(w, &e);
} }