Skip to content

Commit

Permalink
Move conversion of station object to TD4/6 import/export
Browse files Browse the repository at this point in the history
  • Loading branch information
Gymnasiast committed Dec 23, 2023
1 parent bffe56c commit eacb6af
Show file tree
Hide file tree
Showing 7 changed files with 13 additions and 15 deletions.
3 changes: 1 addition & 2 deletions src/openrct2/actions/TrackDesignAction.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -241,8 +241,7 @@ GameActions::Result TrackDesignAction::Execute() const
ride->lifecycle_flags |= RIDE_LIFECYCLE_NOT_CUSTOM_DESIGN;
ride->colour_scheme_type = _td.colour_scheme;

auto stationIdentifier = GetStationIdentifierFromStyle(_td.entrance_style);
ride->entrance_style = objManager.GetLoadedObjectEntryIndex(stationIdentifier);
ride->entrance_style = objManager.GetLoadedObjectEntryIndex(_td.StationObjectIdentifier);
if (ride->entrance_style == OBJECT_ENTRY_INDEX_NULL)
{
ride->entrance_style = gLastEntranceStyle;
Expand Down
1 change: 1 addition & 0 deletions src/openrct2/rct1/T4Importer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,7 @@ namespace RCT1
td->vehicle_colours[i] = td->vehicle_colours[0];
}

td->StationObjectIdentifier = GetStationIdentifierFromStyle(RCT12_STATION_STYLE_PLAIN);
td->depart_flags = td4Base.DepartFlags;
td->number_of_trains = td4Base.NumberOfTrains;
td->number_of_cars_per_train = td4Base.NumberOfCarsPerTrain;
Expand Down
2 changes: 1 addition & 1 deletion src/openrct2/rct12/RCT12.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -769,7 +769,7 @@ std::string_view GetStationIdentifierFromStyle(uint8_t style)
{
return _stationStyles[style];
}
return {};
return _stationStyles[RCT12_STATION_STYLE_INVISIBLE];
}

uint8_t GetStationStyleFromIdentifier(u8string_view identifier)
Expand Down
3 changes: 2 additions & 1 deletion src/openrct2/rct2/T6Exporter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,8 @@ namespace RCT2
tempStream.WriteValue<uint8_t>(_trackDesign->vehicle_colours[i].Trim);
}
tempStream.WriteValue<uint8_t>(0);
tempStream.WriteValue<uint8_t>(_trackDesign->entrance_style);
auto entranceStyle = GetStationStyleFromIdentifier(_trackDesign->StationObjectIdentifier);
tempStream.WriteValue<uint8_t>(entranceStyle);
tempStream.WriteValue<uint8_t>(_trackDesign->total_air_time);
tempStream.WriteValue<uint8_t>(_trackDesign->depart_flags);
tempStream.WriteValue<uint8_t>(_trackDesign->number_of_trains);
Expand Down
2 changes: 1 addition & 1 deletion src/openrct2/rct2/T6Importer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ namespace RCT2
td->vehicle_colours[i].Trim = td6.VehicleColours[i].TrimColour;
td->vehicle_colours[i].Tertiary = td6.VehicleAdditionalColour[i];
}
td->entrance_style = td6.EntranceStyle;
td->StationObjectIdentifier = GetStationIdentifierFromStyle(td6.EntranceStyle);
td->total_air_time = td6.TotalAirTime;
td->depart_flags = td6.DepartFlags;
td->number_of_trains = td6.NumberOfTrains;
Expand Down
15 changes: 6 additions & 9 deletions src/openrct2/ride/TrackDesign.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -82,15 +82,13 @@ static bool _trackDesignPlaceStateEntranceExitPlaced{};

static void TrackDesignPreviewClearMap();

static uint8_t TrackDesignGetEntranceStyle(const Ride& ride)
static u8string_view TrackDesignGetStationObjectIdentifier(const Ride& ride)
{
const auto* stationObject = ride.GetStationObject();
if (stationObject == nullptr)
return RCT12_STATION_STYLE_PLAIN;
return "";

const auto objectName = stationObject->GetIdentifier();

return GetStationStyleFromIdentifier(objectName);
return stationObject->GetIdentifier();
}

ResultWithMessage TrackDesign::CreateTrackDesign(TrackDesignState& tds, const Ride& ride)
Expand Down Expand Up @@ -133,7 +131,7 @@ ResultWithMessage TrackDesign::CreateTrackDesign(TrackDesignState& tds, const Ri
lift_hill_speed = ride.lift_hill_speed;
num_circuits = ride.num_circuits;

entrance_style = TrackDesignGetEntranceStyle(ride);
StationObjectIdentifier = TrackDesignGetStationObjectIdentifier(ride);
max_speed = static_cast<int8_t>(ride.max_speed / 65536);
average_speed = static_cast<int8_t>(ride.average_speed / 65536);
ride_length = ride.GetTotalLength() / 65536;
Expand Down Expand Up @@ -575,7 +573,7 @@ void TrackDesign::Serialise(DataSerialiser& stream)
stream << DS_TAG(track_flags);
stream << DS_TAG(colour_scheme);
stream << DS_TAG(vehicle_colours);
stream << DS_TAG(entrance_style);
stream << DS_TAG(StationObjectIdentifier);
stream << DS_TAG(total_air_time);
stream << DS_TAG(depart_flags);
stream << DS_TAG(number_of_trains);
Expand Down Expand Up @@ -2001,8 +1999,7 @@ static bool TrackDesignPlacePreview(TrackDesignState& tds, TrackDesign* td6, mon

ride->custom_name = {};

auto stationIdentifier = GetStationIdentifierFromStyle(td6->entrance_style);
ride->entrance_style = objManager.GetLoadedObjectEntryIndex(stationIdentifier);
ride->entrance_style = objManager.GetLoadedObjectEntryIndex(td6->StationObjectIdentifier);
if (ride->entrance_style == OBJECT_ENTRY_INDEX_NULL)
{
ride->entrance_style = gLastEntranceStyle;
Expand Down
2 changes: 1 addition & 1 deletion src/openrct2/ride/TrackDesign.h
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ struct TrackDesign
uint8_t track_flags;
uint8_t colour_scheme;
std::array<VehicleColour, OpenRCT2::Limits::MaxVehicleColours> vehicle_colours;
uint8_t entrance_style;
u8string StationObjectIdentifier{};
uint8_t total_air_time;
uint8_t depart_flags;
uint8_t number_of_trains;
Expand Down

0 comments on commit eacb6af

Please sign in to comment.