mirror of https://github.com/OpenRCT2/OpenRCT2.git
Move conversion of station object to TD4/6 import/export
This commit is contained in:
parent
cfff3c53f9
commit
7df3b22e14
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -82,6 +82,15 @@ static bool _trackDesignPlaceStateEntranceExitPlaced{};
|
|||
|
||||
static void TrackDesignPreviewClearMap();
|
||||
|
||||
static u8string_view TrackDesignGetStationObjectIdentifier(const Ride& ride)
|
||||
{
|
||||
const auto* stationObject = ride.GetStationObject();
|
||||
if (stationObject == nullptr)
|
||||
return "";
|
||||
|
||||
return stationObject->GetIdentifier();
|
||||
}
|
||||
|
||||
ResultWithMessage TrackDesign::CreateTrackDesign(TrackDesignState& tds, const Ride& ride)
|
||||
{
|
||||
type = ride.type;
|
||||
|
@ -122,7 +131,7 @@ ResultWithMessage TrackDesign::CreateTrackDesign(TrackDesignState& tds, const Ri
|
|||
lift_hill_speed = ride.lift_hill_speed;
|
||||
num_circuits = ride.num_circuits;
|
||||
|
||||
entrance_style = ride.GetEntranceStyle();
|
||||
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;
|
||||
|
@ -564,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);
|
||||
|
@ -1990,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;
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue