mirror of https://github.com/OpenRCT2/OpenRCT2.git
Refactor stations ready for TileCoordsXY
This commit is contained in:
parent
a2b9598341
commit
7297125cae
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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];
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue