Refactor stations ready for TileCoordsXY

This commit is contained in:
duncanspumpkin 2019-12-21 11:26:37 +00:00
parent a2b9598341
commit 7297125cae
5 changed files with 41 additions and 35 deletions

View File

@ -428,8 +428,7 @@ private:
case RCT1_RESEARCH_TYPE_THEME:
AddEntriesForSceneryTheme(researchItem->item);
break;
case RCT1_RESEARCH_TYPE_RIDE:
{
case RCT1_RESEARCH_TYPE_RIDE: {
uint8_t rideType = researchItem->item;
// Add all vehicles for this ride type
@ -504,8 +503,7 @@ private:
{
switch (tileElement->GetType())
{
case TILE_ELEMENT_TYPE_PATH:
{
case TILE_ELEMENT_TYPE_PATH: {
uint8_t pathType = tileElement->AsPath()->GetRCT1PathType();
uint8_t pathAdditionsType = tileElement->AsPath()->GetAddition();
@ -519,8 +517,7 @@ private:
case TILE_ELEMENT_TYPE_LARGE_SCENERY:
AddEntryForLargeScenery(tileElement->AsLargeScenery()->GetEntryIndex());
break;
case TILE_ELEMENT_TYPE_WALL:
{
case TILE_ELEMENT_TYPE_WALL: {
for (int32_t edge = 0; edge < 4; edge++)
{
int32_t type = tileElement->AsWall()->GetRCT1WallType(edge);
@ -799,7 +796,14 @@ private:
dst->overall_view = src->overall_view;
for (int32_t i = 0; i < RCT12_MAX_STATIONS_PER_RIDE; i++)
{
dst->stations[i].Start = src->station_starts[i];
if (src->station_starts->isNull())
{
dst->stations[i].Start.setNull();
}
else
{
dst->stations[i].Start = { src->station_starts[i].x, src->station_starts[i].y };
}
dst->stations[i].Height = src->station_height[i] / 2;
dst->stations[i].Length = src->station_length[i];
dst->stations[i].Depart = src->station_light[i];
@ -2022,8 +2026,7 @@ private:
switch (tileElementType)
{
case TILE_ELEMENT_TYPE_SURFACE:
{
case TILE_ELEMENT_TYPE_SURFACE: {
auto dst2 = dst->AsSurface();
auto src2 = src->AsSurface();
@ -2038,8 +2041,7 @@ private:
break;
}
case TILE_ELEMENT_TYPE_PATH:
{
case TILE_ELEMENT_TYPE_PATH: {
auto dst2 = dst->AsPath();
auto src2 = src->AsPath();
@ -2109,8 +2111,7 @@ private:
}
break;
}
case TILE_ELEMENT_TYPE_TRACK:
{
case TILE_ELEMENT_TYPE_TRACK: {
auto dst2 = dst->AsTrack();
auto src2 = src->AsTrack();
@ -2144,8 +2145,7 @@ private:
break;
}
case TILE_ELEMENT_TYPE_SMALL_SCENERY:
{
case TILE_ELEMENT_TYPE_SMALL_SCENERY: {
auto dst2 = dst->AsSmallScenery();
auto src2 = src->AsSmallScenery();
@ -2175,8 +2175,7 @@ private:
break;
}
case TILE_ELEMENT_TYPE_ENTRANCE:
{
case TILE_ELEMENT_TYPE_ENTRANCE: {
auto dst2 = dst->AsEntrance();
auto src2 = src->AsEntrance();
@ -2198,8 +2197,7 @@ private:
break;
}
case TILE_ELEMENT_TYPE_WALL:
{
case TILE_ELEMENT_TYPE_WALL: {
auto dst2 = dst->AsWall();
auto src2 = src->AsWall();
@ -2210,8 +2208,7 @@ private:
break;
}
case TILE_ELEMENT_TYPE_LARGE_SCENERY:
{
case TILE_ELEMENT_TYPE_LARGE_SCENERY: {
auto dst2 = dst->AsLargeScenery();
auto src2 = src->AsLargeScenery();
@ -2223,8 +2220,7 @@ private:
break;
}
case TILE_ELEMENT_TYPE_BANNER:
{
case TILE_ELEMENT_TYPE_BANNER: {
auto dst2 = dst->AsBanner();
auto src2 = src->AsBanner();
@ -2289,8 +2285,7 @@ private:
switch (researchItem->type)
{
case RCT1_RESEARCH_TYPE_THEME:
{
case RCT1_RESEARCH_TYPE_THEME: {
uint8_t rct1SceneryTheme = researchItem->item;
uint8_t sceneryGroupEntryIndex = _sceneryThemeTypeToEntryMap[rct1SceneryTheme];
if (sceneryGroupEntryIndex != 254 && sceneryGroupEntryIndex != 255)
@ -2299,8 +2294,7 @@ private:
}
break;
}
case RCT1_RESEARCH_TYPE_RIDE:
{
case RCT1_RESEARCH_TYPE_RIDE: {
uint8_t rct1RideType = researchItem->item;
_researchRideTypeUsed[rct1RideType] = true;

View File

@ -526,7 +526,14 @@ void S6Exporter::ExportRide(rct2_ride* dst, const Ride* src)
for (int32_t i = 0; i < RCT12_MAX_STATIONS_PER_RIDE; i++)
{
dst->station_starts[i] = src->stations[i].Start;
if (src->stations[i].Start.isNull())
{
dst->station_starts[i].setNull();
}
else
{
dst->station_starts[i] = { src->stations[i].Start.x, src->stations[i].Start.y };
}
dst->station_heights[i] = src->stations[i].Height;
dst->station_length[i] = src->stations[i].Length;
dst->station_depart[i] = src->stations[i].Depart;

View File

@ -521,7 +521,14 @@ public:
for (int32_t i = 0; i < RCT12_MAX_STATIONS_PER_RIDE; i++)
{
dst->stations[i].Start = src->station_starts[i];
if (src->station_starts->isNull())
{
dst->stations[i].Start.setNull();
}
else
{
dst->stations[i].Start = { src->station_starts[i].x, src->station_starts[i].y };
}
dst->stations[i].Height = src->station_heights[i];
dst->stations[i].Length = src->station_length[i];
dst->stations[i].Depart = src->station_depart[i];

View File

@ -3257,7 +3257,7 @@ static void ride_entrance_exit_connected(Ride* ride)
{
for (int32_t i = 0; i < MAX_STATIONS; ++i)
{
LocationXY8 station_start = ride->stations[i].Start;
auto station_start = ride->stations[i].Start;
auto entrance = ride_get_entrance_location(ride, i);
auto exit = ride_get_exit_location(ride, i);

View File

@ -9282,16 +9282,14 @@ loc_6DCE62:
loc_6DCE68:
_vehicleMotionTrackFlags |= VEHICLE_UPDATE_MOTION_TRACK_FLAG_VEHICLE_AT_STATION;
regs.al = vehicle->track_x >> 5;
regs.ah = vehicle->track_y >> 5;
regs.dl = vehicle->track_z >> 3;
for (int32_t i = 0; i < MAX_STATIONS; i++)
{
if ((uint16_t)regs.ax != ride->stations[i].Start.xy)
if (((vehicle->track_x >> 5) != ride->stations[i].Start.x) && ((vehicle->track_y >> 5) != ride->stations[i].Start.y))
{
continue;
}
if ((uint16_t)regs.dl != ride->stations[i].Height)
if ((vehicle->track_z >> 3) != ride->stations[i].Height)
{
continue;
}