Allow TileCoordsXYZD to generate CoordsXYZD equivalent

This commit is contained in:
Tulio Leao 2019-12-19 00:11:26 -03:00
parent c71c4284d0
commit aea755bd70
4 changed files with 12 additions and 10 deletions

View File

@ -2970,11 +2970,9 @@ private:
ride->stations[0].Entrance = entranceCoords;
ride->stations[0].Exit = exitCoords;
auto entranceElement = map_get_ride_exit_element_at(
{ entranceCoords.x << 5, entranceCoords.y << 5, entranceCoords.z << 3 }, false);
auto entranceElement = map_get_ride_exit_element_at(entranceCoords.ToCoordsXYZD(), false);
entranceElement->SetEntranceType(ENTRANCE_TYPE_RIDE_ENTRANCE);
auto exitElement = map_get_ride_entrance_element_at(
{ exitCoords.x << 5, exitCoords.y << 5, exitCoords.z << 3 }, false);
auto exitElement = map_get_ride_entrance_element_at(exitCoords.ToCoordsXYZD(), false);
exitElement->SetEntranceType(ENTRANCE_TYPE_RIDE_EXIT);
// Trigger footpath update

View File

@ -7677,8 +7677,7 @@ void determine_ride_entrance_and_exit_locations()
// Skip if the station has no entrance
if (!entranceLoc.isNull())
{
const EntranceElement* entranceElement = map_get_ride_entrance_element_at(
{ entranceLoc.x << 5, entranceLoc.y << 5, entranceLoc.z << 3 }, false);
const EntranceElement* entranceElement = map_get_ride_entrance_element_at(entranceLoc.ToCoordsXYZD(), false);
if (entranceElement == nullptr || entranceElement->GetRideIndex() != ride.id
|| entranceElement->GetStationIndex() != stationIndex)
@ -7693,8 +7692,7 @@ void determine_ride_entrance_and_exit_locations()
if (!exitLoc.isNull())
{
const EntranceElement* entranceElement = map_get_ride_exit_element_at(
{ exitLoc.x << 5, exitLoc.y << 5, exitLoc.z << 3 }, false);
const EntranceElement* entranceElement = map_get_ride_exit_element_at(exitLoc.ToCoordsXYZD(), false);
if (entranceElement == nullptr || entranceElement->GetRideIndex() != ride.id
|| entranceElement->GetStationIndex() != stationIndex)

View File

@ -384,6 +384,11 @@ struct TileCoordsXYZD
{
return x == COORDS_NULL;
};
CoordsXYZD ToCoordsXYZD() const
{
return { x * 32, y * 32, z * 8, direction };
}
};
/**

View File

@ -94,7 +94,8 @@ TEST_F(TileElementWantsFootpathConnection, Stall)
TEST_F(TileElementWantsFootpathConnection, RideEntrance)
{
// Ride entrances and exits want a connection in one direction
const EntranceElement* const entranceElement = map_get_ride_entrance_element_at({ 18 << 5, 8 << 5, 14 << 3 }, false);
const EntranceElement* const entranceElement = map_get_ride_entrance_element_at(
TileCoordsXYZ{ 18, 8, 14 }.ToCoordsXYZ(), false);
ASSERT_NE(entranceElement, nullptr);
EXPECT_TRUE(tile_element_wants_path_connection_towards({ 18, 8, 14, 0 }, nullptr));
EXPECT_FALSE(tile_element_wants_path_connection_towards({ 18, 8, 14, 1 }, nullptr));
@ -106,7 +107,7 @@ TEST_F(TileElementWantsFootpathConnection, RideEntrance)
TEST_F(TileElementWantsFootpathConnection, RideExit)
{
// The exit has been rotated; it wants a path connection in direction 1, but not 0 like the entrance
const EntranceElement* const exitElement = map_get_ride_exit_element_at({ 18 << 5, 10 << 5, 14 << 3 }, false);
const EntranceElement* const exitElement = map_get_ride_exit_element_at(TileCoordsXYZ{ 18, 10, 14 }.ToCoordsXYZ(), false);
ASSERT_NE(exitElement, nullptr);
EXPECT_FALSE(tile_element_wants_path_connection_towards({ 18, 10, 14, 0 }, nullptr));
EXPECT_TRUE(tile_element_wants_path_connection_towards({ 18, 10, 14, 1 }, nullptr));