summaryrefslogtreecommitdiff
path: root/station_cmd.c
diff options
context:
space:
mode:
Diffstat (limited to 'station_cmd.c')
-rw-r--r--station_cmd.c51
1 files changed, 26 insertions, 25 deletions
diff --git a/station_cmd.c b/station_cmd.c
index 07d7c5cc4..90601855a 100644
--- a/station_cmd.c
+++ b/station_cmd.c
@@ -817,7 +817,7 @@ int32 CheckFlatLandBelow(TileIndex tile, uint w, uint h, uint flags, uint invali
return cost;
}
-static bool CanExpandRailroadStation(Station *st, uint *fin, int direction)
+static bool CanExpandRailroadStation(Station* st, uint* fin, Axis axis)
{
uint curw = st->trainst_w, curh = st->trainst_h;
TileIndex tile = fin[0];
@@ -832,8 +832,8 @@ static bool CanExpandRailroadStation(Station *st, uint *fin, int direction)
curh = max(TileY(st->train_tile) + curh, TileY(tile) + h) - y;
tile = TileXY(x, y);
} else {
- // check so the direction is the same
- if ((_m[st->train_tile].m5 & 1) != direction) {
+ // check so the orientation is the same
+ if ((_m[st->train_tile].m5 & 1U) != axis) {
_error_message = STR_306D_NONUNIFORM_STATIONS_DISALLOWED;
return false;
}
@@ -934,7 +934,7 @@ int32 CmdBuildRailroadStation(int x, int y, uint32 flags, uint32 p1, uint32 p2)
int32 cost, ret;
StationID est;
int plat_len, numtracks;
- int direction;
+ Axis axis;
uint finalvalues[3];
SET_EXPENSES_TYPE(EXPENSES_CONSTRUCTION);
@@ -946,16 +946,16 @@ int32 CmdBuildRailroadStation(int x, int y, uint32 flags, uint32 p1, uint32 p2)
if (!ValParamRailtype(p2 & 0xF)) return CMD_ERROR;
/* unpack parameters */
- direction = p1 & 1;
+ axis = p1 & 1;
numtracks = GB(p1, 8, 8);
plat_len = GB(p1, 16, 8);
/* w = length, h = num_tracks */
- if (direction) {
- h_org = plat_len;
- w_org = numtracks;
- } else {
+ if (axis == AXIS_X) {
w_org = plat_len;
h_org = numtracks;
+ } else {
+ h_org = plat_len;
+ w_org = numtracks;
}
if (h_org > _patches.station_spread || w_org > _patches.station_spread) return CMD_ERROR;
@@ -969,7 +969,7 @@ int32 CmdBuildRailroadStation(int x, int y, uint32 flags, uint32 p1, uint32 p2)
est = INVALID_STATION;
// If DC_EXEC is in flag, do not want to pass it to CheckFlatLandBelow, because of a nice bug
// for detail info, see: https://sourceforge.net/tracker/index.php?func=detail&aid=1029064&group_id=103924&atid=636365
- if (CmdFailed(ret = CheckFlatLandBelow(tile_org, w_org, h_org, flags&~DC_EXEC, 5 << direction, _patches.nonuniform_stations ? &est : NULL))) return CMD_ERROR;
+ if (CmdFailed(ret = CheckFlatLandBelow(tile_org, w_org, h_org, flags&~DC_EXEC, 5 << axis, _patches.nonuniform_stations ? &est : NULL))) return CMD_ERROR;
cost = ret + (numtracks * _price.train_station_track + _price.train_station_length) * plat_len;
// Make sure there are no similar stations around us.
@@ -991,7 +991,7 @@ int32 CmdBuildRailroadStation(int x, int y, uint32 flags, uint32 p1, uint32 p2)
// check if we want to expanding an already existing station?
if (_is_old_ai_player || !_patches.join_stations)
return_cmd_error(STR_3005_TOO_CLOSE_TO_ANOTHER_RAILROAD);
- if (!CanExpandRailroadStation(st, finalvalues, direction))
+ if (!CanExpandRailroadStation(st, finalvalues, axis))
return CMD_ERROR;
}
@@ -1021,7 +1021,7 @@ int32 CmdBuildRailroadStation(int x, int y, uint32 flags, uint32 p1, uint32 p2)
// Now really clear the land below the station
// It should never return CMD_ERROR.. but you never know ;)
// (a bit strange function name for it, but it really does clear the land, when DC_EXEC is in flags)
- if (CmdFailed(CheckFlatLandBelow(tile_org, w_org, h_org, flags, 5 << direction, _patches.nonuniform_stations ? &est : NULL))) return CMD_ERROR;
+ if (CmdFailed(CheckFlatLandBelow(tile_org, w_org, h_org, flags, 5 << axis, _patches.nonuniform_stations ? &est : NULL))) return CMD_ERROR;
st->train_tile = finalvalues[0];
if (!st->facilities) st->xy = finalvalues[0];
@@ -1033,8 +1033,8 @@ int32 CmdBuildRailroadStation(int x, int y, uint32 flags, uint32 p1, uint32 p2)
st->build_date = _date;
- tile_delta = direction ? TileDiffXY(0, 1) : TileDiffXY(1, 0);
- track = direction ? TRACK_Y : TRACK_X;
+ tile_delta = (axis == AXIS_X ? TileDiffXY(1, 0) : TileDiffXY(0, 1));
+ track = (axis == AXIS_X ? TRACK_X : TRACK_Y);
statspec = (p2 & 0x10) != 0 ? GetCustomStation(STAT_CLASS_DFLT, p2 >> 8) : NULL;
layout_ptr = alloca(numtracks * plat_len);
@@ -1051,7 +1051,7 @@ int32 CmdBuildRailroadStation(int x, int y, uint32 flags, uint32 p1, uint32 p2)
station_index, /* map2 parameter */
p2 & 0xFF, /* map3lo parameter */
p2 >> 8, /* map3hi parameter */
- (*layout_ptr++) + direction /* map5 parameter */
+ (*layout_ptr++) + axis /* map5 parameter */
);
tile += tile_delta;
@@ -1172,27 +1172,27 @@ uint GetStationPlatforms(const Station *st, TileIndex tile)
{
TileIndex t;
TileIndexDiff delta;
- int dir;
+ Axis dir;
uint len;
assert(TileBelongsToRailStation(st, tile));
len = 0;
dir = _m[tile].m5 & 1;
- delta = dir ? TileDiffXY(0, 1) : TileDiffXY(1, 0);
+ delta = (dir == AXIS_X ? TileDiffXY(1, 0) : TileDiffXY(0, 1));
// find starting tile..
t = tile;
do {
t -= delta;
len++;
- } while (TileBelongsToRailStation(st, t) && (_m[t].m5 & 1) == dir);
+ } while (TileBelongsToRailStation(st, t) && (_m[t].m5 & 1U) == dir);
// find ending tile
t = tile;
do {
t += delta;
len++;
- } while (TileBelongsToRailStation(st, t) && (_m[t].m5 & 1) == dir);
+ } while (TileBelongsToRailStation(st, t) && (_m[t].m5 & 1U) == dir);
return len - 1;
}
@@ -1806,17 +1806,17 @@ int32 CmdBuildDock(int x, int y, uint32 flags, uint32 p1, uint32 p2)
{
TileIndex tile = TileVirtXY(x, y);
TileIndex tile_cur;
- int direction;
+ DiagDirection direction;
int32 cost;
Station *st;
SET_EXPENSES_TYPE(EXPENSES_CONSTRUCTION);
switch (GetTileSlope(tile, NULL)) {
- case 3: direction = 0; break;
- case 6: direction = 3; break;
- case 9: direction = 1; break;
- case 12: direction = 2; break;
+ case 3: direction = DIAGDIR_NE; break;
+ case 6: direction = DIAGDIR_NW; break;
+ case 9: direction = DIAGDIR_SE; break;
+ case 12: direction = DIAGDIR_SW; break;
default: return_cmd_error(STR_304B_SITE_UNSUITABLE);
}
@@ -1898,7 +1898,8 @@ int32 CmdBuildDock(int x, int y, uint32 flags, uint32 p1, uint32 p2)
MP_MAP2 | MP_MAP3LO_CLEAR | MP_MAP3HI_CLEAR |
MP_MAP5,
st->index,
- (direction&1) + 0x50);
+ DiagDirToAxis(direction) + 0x50
+ );
UpdateStationVirtCoordDirty(st);
UpdateStationAcceptance(st, false);