mirror of
https://github.com/OpenTTD/OpenTTD
synced 2026-01-24 12:44:10 +01:00
Codechange: Replace bitstuffed VehicleEnterTileStatus. (#14027)
VehicleEnterTileStatus was an bitset-style enum, but bitstuffed with a StationID. However the StationID part was only used by trains, and only in two locations. Instead, return just the enum bitset. The two places which require the StationID just call GetStationIndex() directly.
This commit is contained in:
@@ -1164,7 +1164,7 @@ bool IndividualRoadVehicleController(RoadVehicle *v, const RoadVehicle *prev)
|
||||
}
|
||||
}
|
||||
|
||||
if (IsTileType(gp.new_tile, MP_TUNNELBRIDGE) && HasBit(VehicleEnterTile(v, gp.new_tile, gp.x, gp.y), VETS_ENTERED_WORMHOLE)) {
|
||||
if (IsTileType(gp.new_tile, MP_TUNNELBRIDGE) && VehicleEnterTile(v, gp.new_tile, gp.x, gp.y).Test(VehicleEnterTileState::EnteredWormhole)) {
|
||||
/* Vehicle has just entered a bridge or tunnel */
|
||||
v->x_pos = gp.x;
|
||||
v->y_pos = gp.y;
|
||||
@@ -1284,8 +1284,8 @@ again:
|
||||
}
|
||||
}
|
||||
|
||||
uint32_t r = VehicleEnterTile(v, tile, x, y);
|
||||
if (HasBit(r, VETS_CANNOT_ENTER)) {
|
||||
auto vets = VehicleEnterTile(v, tile, x, y);
|
||||
if (vets.Test(VehicleEnterTileState::CannotEnter)) {
|
||||
if (!IsTileType(tile, MP_TUNNELBRIDGE)) {
|
||||
v->cur_speed = 0;
|
||||
return false;
|
||||
@@ -1321,7 +1321,7 @@ again:
|
||||
}
|
||||
}
|
||||
|
||||
if (!HasBit(r, VETS_ENTERED_WORMHOLE)) {
|
||||
if (!vets.Test(VehicleEnterTileState::EnteredWormhole)) {
|
||||
TileIndex old_tile = v->tile;
|
||||
|
||||
v->tile = tile;
|
||||
@@ -1399,8 +1399,8 @@ again:
|
||||
}
|
||||
}
|
||||
|
||||
uint32_t r = VehicleEnterTile(v, v->tile, x, y);
|
||||
if (HasBit(r, VETS_CANNOT_ENTER)) {
|
||||
auto vets = VehicleEnterTile(v, v->tile, x, y);
|
||||
if (vets.Test(VehicleEnterTileState::CannotEnter)) {
|
||||
v->cur_speed = 0;
|
||||
return false;
|
||||
}
|
||||
@@ -1541,8 +1541,8 @@ again:
|
||||
|
||||
/* Check tile position conditions - i.e. stop position in depot,
|
||||
* entry onto bridge or into tunnel */
|
||||
uint32_t r = VehicleEnterTile(v, v->tile, x, y);
|
||||
if (HasBit(r, VETS_CANNOT_ENTER)) {
|
||||
auto vets = VehicleEnterTile(v, v->tile, x, y);
|
||||
if (vets.Test(VehicleEnterTileState::CannotEnter)) {
|
||||
v->cur_speed = 0;
|
||||
return false;
|
||||
}
|
||||
@@ -1553,7 +1553,7 @@ again:
|
||||
|
||||
/* Move to next frame unless vehicle arrived at a stop position
|
||||
* in a depot or entered a tunnel/bridge */
|
||||
if (!HasBit(r, VETS_ENTERED_WORMHOLE)) v->frame++;
|
||||
if (!vets.Test(VehicleEnterTileState::EnteredWormhole)) v->frame++;
|
||||
v->x_pos = x;
|
||||
v->y_pos = y;
|
||||
v->UpdatePosition();
|
||||
|
||||
Reference in New Issue
Block a user