mirror of https://github.com/OpenRCT2/OpenRCT2.git
Refactor ride name to dynamic args and std::string
This commit is contained in:
parent
3ee7824df4
commit
6fff2079f9
|
@ -1749,8 +1749,7 @@ void window_guest_rides_scroll_paint(rct_window* w, rct_drawpixelinfo* dpi, int3
|
|||
auto ride = get_ride(w->list_item_positions[list_index]);
|
||||
if (ride != nullptr)
|
||||
{
|
||||
set_format_arg(0, rct_string_id, ride->name);
|
||||
set_format_arg(2, uint32_t, ride->name_arguments);
|
||||
ride->FormatNameTo(gCommonFormatArgs);
|
||||
gfx_draw_string_left(dpi, stringId, gCommonFormatArgs, COLOUR_BLACK, 0, y - 1);
|
||||
}
|
||||
}
|
||||
|
@ -1961,8 +1960,7 @@ static rct_string_id window_guest_inventory_format_item(Peep* peep, int32_t item
|
|||
break;
|
||||
case SHOP_ITEM_PHOTO:
|
||||
ride = get_ride(peep->photo1_ride_ref);
|
||||
set_format_arg(6, rct_string_id, ride->name);
|
||||
set_format_arg(8, uint32_t, ride->name_arguments);
|
||||
ride->FormatNameTo(gCommonFormatArgs + 6);
|
||||
break;
|
||||
case SHOP_ITEM_UMBRELLA:
|
||||
set_format_arg(0, uint32_t, SPRITE_ID_PALETTE_COLOUR_1(peep->umbrella_colour) | ShopItems[item].Image);
|
||||
|
@ -1978,8 +1976,7 @@ static rct_string_id window_guest_inventory_format_item(Peep* peep, int32_t item
|
|||
case VOUCHER_TYPE_RIDE_FREE:
|
||||
ride = get_ride(peep->voucher_arguments);
|
||||
set_format_arg(6, rct_string_id, STR_PEEP_INVENTORY_VOUCHER_RIDE_FREE);
|
||||
set_format_arg(8, rct_string_id, ride->name);
|
||||
set_format_arg(10, uint32_t, ride->name_arguments);
|
||||
ride->FormatNameTo(gCommonFormatArgs + 8);
|
||||
break;
|
||||
case VOUCHER_TYPE_PARK_ENTRY_HALF_PRICE:
|
||||
set_format_arg(6, rct_string_id, STR_PEEP_INVENTORY_VOUCHER_PARK_ENTRY_HALF_PRICE);
|
||||
|
@ -2000,18 +1997,15 @@ static rct_string_id window_guest_inventory_format_item(Peep* peep, int32_t item
|
|||
break;
|
||||
case SHOP_ITEM_PHOTO2:
|
||||
ride = get_ride(peep->photo2_ride_ref);
|
||||
set_format_arg(6, rct_string_id, ride->name);
|
||||
set_format_arg(8, uint32_t, ride->name_arguments);
|
||||
ride->FormatNameTo(gCommonFormatArgs + 6);
|
||||
break;
|
||||
case SHOP_ITEM_PHOTO3:
|
||||
ride = get_ride(peep->photo3_ride_ref);
|
||||
set_format_arg(6, rct_string_id, ride->name);
|
||||
set_format_arg(8, uint32_t, ride->name_arguments);
|
||||
ride->FormatNameTo(gCommonFormatArgs + 6);
|
||||
break;
|
||||
case SHOP_ITEM_PHOTO4:
|
||||
ride = get_ride(peep->photo4_ride_ref);
|
||||
set_format_arg(6, rct_string_id, ride->name);
|
||||
set_format_arg(8, uint32_t, ride->name_arguments);
|
||||
ride->FormatNameTo(gCommonFormatArgs + 6);
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
@ -1974,13 +1974,13 @@ static void window_ride_init_viewport(rct_window* w)
|
|||
*/
|
||||
static void window_ride_rename(rct_window* w)
|
||||
{
|
||||
Ride* ride;
|
||||
|
||||
ride = get_ride(w->number);
|
||||
set_format_arg(16, uint32_t, ride->name_arguments);
|
||||
window_text_input_open(
|
||||
w, WIDX_RENAME, STR_RIDE_ATTRACTION_NAME, STR_ENTER_NEW_NAME_FOR_THIS_RIDE_ATTRACTION, ride->name, ride->name_arguments,
|
||||
32);
|
||||
auto ride = get_ride(w->number);
|
||||
if (ride != nullptr)
|
||||
{
|
||||
auto rideName = ride->GetName();
|
||||
window_text_input_raw_open(
|
||||
w, WIDX_RENAME, STR_RIDE_ATTRACTION_NAME, STR_ENTER_NEW_NAME_FOR_THIS_RIDE_ATTRACTION, rideName.c_str(), 32);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -2286,8 +2286,9 @@ static void populate_vehicle_type_dropdown(Ride* ride)
|
|||
bool selectionShouldBeExpanded;
|
||||
int32_t rideTypeIterator, rideTypeIteratorMax;
|
||||
if (gCheatsShowVehiclesFromOtherTrackTypes
|
||||
&& !(ride_type_has_flag(ride->type, RIDE_TYPE_FLAG_FLAT_RIDE) || ride->type == RIDE_TYPE_MAZE
|
||||
|| ride->type == RIDE_TYPE_MINI_GOLF))
|
||||
&& !(
|
||||
ride_type_has_flag(ride->type, RIDE_TYPE_FLAG_FLAT_RIDE) || ride->type == RIDE_TYPE_MAZE
|
||||
|| ride->type == RIDE_TYPE_MINI_GOLF))
|
||||
{
|
||||
selectionShouldBeExpanded = true;
|
||||
rideTypeIterator = 0;
|
||||
|
|
|
@ -608,8 +608,7 @@ static void window_ride_list_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi,
|
|||
ride = get_ride(w->list_item_positions[i]);
|
||||
|
||||
// Ride name
|
||||
set_format_arg(0, rct_string_id, ride->name);
|
||||
set_format_arg(2, uint32_t, ride->name_arguments);
|
||||
ride->FormatNameTo(gCommonFormatArgs);
|
||||
gfx_draw_string_left_clipped(dpi, format, gCommonFormatArgs, COLOUR_BLACK, 0, y - 1, 159);
|
||||
|
||||
// Ride information
|
||||
|
|
|
@ -303,16 +303,6 @@ namespace Editor
|
|||
}
|
||||
}
|
||||
|
||||
//
|
||||
{
|
||||
int32_t i;
|
||||
Ride* ride;
|
||||
FOR_ALL_RIDES (i, ride)
|
||||
{
|
||||
user_string_free(ride->name);
|
||||
}
|
||||
}
|
||||
|
||||
ride_init_all();
|
||||
|
||||
//
|
||||
|
|
|
@ -138,16 +138,7 @@ public:
|
|||
ride->subtype = rideEntryIndex;
|
||||
ride->SetColourPreset(_colour1);
|
||||
ride->overall_view.xy = RCT_XY8_UNDEFINED;
|
||||
|
||||
// Ride name
|
||||
if (rideEntryIndex == RIDE_ENTRY_INDEX_NULL)
|
||||
{
|
||||
ride_set_name_to_track_default(ride, rideEntry);
|
||||
}
|
||||
else
|
||||
{
|
||||
ride_set_name_to_default(ride, rideEntry);
|
||||
}
|
||||
ride->SetNameToDefault();
|
||||
|
||||
for (int32_t i = 0; i < MAX_STATIONS; i++)
|
||||
{
|
||||
|
|
|
@ -79,9 +79,6 @@ public:
|
|||
|
||||
GameActionResult::Ptr Execute() const override
|
||||
{
|
||||
rct_string_id newUserStringId = user_string_allocate(
|
||||
USER_STRING_HIGH_ID_NUMBER | USER_STRING_DUPLICATION_PERMITTED, _name.c_str());
|
||||
|
||||
Ride* ride = get_ride(_rideIndex);
|
||||
if (ride->type == RIDE_TYPE_NULL)
|
||||
{
|
||||
|
@ -89,8 +86,7 @@ public:
|
|||
return std::make_unique<GameActionResult>(GA_ERROR::INVALID_PARAMETERS, STR_CANT_RENAME_RIDE_ATTRACTION, STR_NONE);
|
||||
}
|
||||
|
||||
user_string_free(ride->name);
|
||||
ride->name = newUserStringId;
|
||||
ride->custom_name = _name;
|
||||
|
||||
scrolling_text_invalidate();
|
||||
gfx_invalidate_screen();
|
||||
|
|
|
@ -61,8 +61,7 @@ public:
|
|||
GameActionResult::Ptr res = std::make_unique<GameActionResult>();
|
||||
Ride* ride = get_ride(_rideIndex);
|
||||
res->ErrorTitle = _StatusErrorTitles[_status];
|
||||
set_format_arg_on(res->ErrorMessageArgs.data(), 6, rct_string_id, ride->name);
|
||||
set_format_arg_on(res->ErrorMessageArgs.data(), 8, uint32_t, ride->name_arguments);
|
||||
ride->FormatNameTo(res->ErrorMessageArgs.data() + 6);
|
||||
|
||||
if (_rideIndex >= MAX_RIDES || _rideIndex < 0)
|
||||
{
|
||||
|
@ -110,8 +109,7 @@ public:
|
|||
|
||||
Ride* ride = get_ride(_rideIndex);
|
||||
res->ErrorTitle = _StatusErrorTitles[_status];
|
||||
set_format_arg_on(res->ErrorMessageArgs.data(), 6, rct_string_id, ride->name);
|
||||
set_format_arg_on(res->ErrorMessageArgs.data(), 8, uint32_t, ride->name_arguments);
|
||||
ride->FormatNameTo(res->ErrorMessageArgs.data() + 6);
|
||||
|
||||
if (ride->type == RIDE_TYPE_NULL)
|
||||
{
|
||||
|
|
|
@ -190,14 +190,13 @@ template<> struct DataSerializerTraits<NetworkRideId_t>
|
|||
|
||||
stream->Write(rideId, strlen(rideId));
|
||||
|
||||
Ride* ride = get_ride(val.id);
|
||||
if (ride)
|
||||
auto ride = get_ride(val.id);
|
||||
if (ride != nullptr)
|
||||
{
|
||||
char rideName[256] = {};
|
||||
format_string(rideName, 256, ride->name, &ride->name_arguments);
|
||||
auto rideName = ride->GetName();
|
||||
|
||||
stream->Write(" \"", 2);
|
||||
stream->Write(rideName, strlen(rideName));
|
||||
stream->Write(rideName.c_str(), rideName.size());
|
||||
stream->Write("\"", 1);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -141,11 +141,10 @@ static int32_t cc_rides(InteractiveConsole& console, const arguments_t& argv)
|
|||
int32_t i;
|
||||
FOR_ALL_RIDES (i, ride)
|
||||
{
|
||||
char name[128];
|
||||
format_string(name, 128, ride->name, &ride->name_arguments);
|
||||
auto name = ride->GetName();
|
||||
console.WriteFormatLine(
|
||||
"ride: %03d type: %02u subtype %03u operating mode: %02u name: %s", i, ride->type, ride->subtype,
|
||||
ride->mode, name);
|
||||
ride->mode, name.c_str());
|
||||
}
|
||||
}
|
||||
else if (argv[0] == "set")
|
||||
|
|
|
@ -74,8 +74,7 @@ static void marketing_raise_finished_notification(const MarketingCampaign& campa
|
|||
if (campaign.Type == ADVERTISING_CAMPAIGN_RIDE_FREE || campaign.Type == ADVERTISING_CAMPAIGN_RIDE)
|
||||
{
|
||||
Ride* ride = get_ride(campaign.RideId);
|
||||
set_format_arg(0, rct_string_id, ride->name);
|
||||
set_format_arg(2, uint32_t, ride->name_arguments);
|
||||
ride->FormatNameTo(gCommonFormatArgs);
|
||||
}
|
||||
else if (campaign.Type == ADVERTISING_CAMPAIGN_FOOD_OR_DRINK_FREE)
|
||||
{
|
||||
|
|
|
@ -165,8 +165,7 @@ static void ride_entrance_exit_paint(paint_session* session, uint8_t direction,
|
|||
|
||||
if (ride->status == RIDE_STATUS_OPEN && !(ride->lifecycle_flags & RIDE_LIFECYCLE_BROKEN_DOWN))
|
||||
{
|
||||
set_format_arg(2, rct_string_id, ride->name);
|
||||
set_format_arg(4, uint32_t, ride->name_arguments);
|
||||
ride->FormatNameTo(gCommonFormatArgs + 2);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -316,8 +316,11 @@ void large_scenery_paint(paint_session* session, uint8_t direction, uint16_t hei
|
|||
if (banner->flags & BANNER_FLAG_LINKED_TO_RIDE)
|
||||
{
|
||||
auto ride = get_ride(banner->ride_index);
|
||||
stringId = ride->name;
|
||||
set_format_arg(0, uint32_t, ride->name_arguments);
|
||||
if (ride != nullptr)
|
||||
{
|
||||
stringId = STR_STRINGID;
|
||||
ride->FormatNameTo(gCommonFormatArgs);
|
||||
}
|
||||
}
|
||||
utf8 signString[256];
|
||||
format_string(signString, sizeof(signString), stringId, gCommonFormatArgs);
|
||||
|
@ -436,9 +439,11 @@ void large_scenery_paint(paint_session* session, uint8_t direction, uint16_t hei
|
|||
set_format_arg(0, rct_string_id, banner->string_idx);
|
||||
if (banner->flags & BANNER_FLAG_LINKED_TO_RIDE)
|
||||
{
|
||||
Ride* ride = get_ride(banner->ride_index);
|
||||
set_format_arg(0, rct_string_id, ride->name);
|
||||
set_format_arg(2, uint32_t, ride->name_arguments);
|
||||
auto ride = get_ride(banner->ride_index);
|
||||
if (ride != nullptr)
|
||||
{
|
||||
ride->FormatNameTo(gCommonFormatArgs);
|
||||
}
|
||||
}
|
||||
utf8 signString[256];
|
||||
rct_string_id stringId = STR_SCROLLING_SIGN_TEXT;
|
||||
|
|
|
@ -454,8 +454,7 @@ static void sub_6A4101(
|
|||
if (ride->status == RIDE_STATUS_OPEN && !(ride->lifecycle_flags & RIDE_LIFECYCLE_BROKEN_DOWN))
|
||||
{
|
||||
set_format_arg(0, rct_string_id, STR_RIDE_ENTRANCE_NAME);
|
||||
set_format_arg(2, rct_string_id, ride->name);
|
||||
set_format_arg(4, uint32_t, ride->name_arguments);
|
||||
ride->FormatNameTo(gCommonFormatArgs + 2);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -435,9 +435,11 @@ void fence_paint(paint_session* session, uint8_t direction, int32_t height, cons
|
|||
set_format_arg(0, rct_string_id, banner->string_idx);
|
||||
if (banner->flags & BANNER_FLAG_LINKED_TO_RIDE)
|
||||
{
|
||||
Ride* ride = get_ride(banner->ride_index);
|
||||
set_format_arg(0, rct_string_id, ride->name);
|
||||
set_format_arg(2, uint32_t, ride->name_arguments);
|
||||
auto ride = get_ride(banner->ride_index);
|
||||
if (ride != nullptr)
|
||||
{
|
||||
ride->FormatNameTo(gCommonFormatArgs);
|
||||
}
|
||||
}
|
||||
|
||||
utf8 signString[256];
|
||||
|
|
|
@ -3849,8 +3849,7 @@ void Guest::UpdateRideAdvanceThroughEntrance()
|
|||
ride->current_issues |= RIDE_ISSUE_GUESTS_STUCK;
|
||||
ride->last_issue_time = gCurrentTicks;
|
||||
|
||||
set_format_arg(0, rct_string_id, ride->name);
|
||||
set_format_arg(2, uint32_t, ride->name_arguments);
|
||||
ride->FormatNameTo(gCommonFormatArgs);
|
||||
if (gConfigNotifications.ride_warnings)
|
||||
{
|
||||
news_item_add_to_queue(NEWS_ITEM_RIDE, STR_GUESTS_GETTING_STUCK_ON_RIDE, current_ride);
|
||||
|
@ -4013,8 +4012,7 @@ void Guest::UpdateRideFreeVehicleEnterRide(Ride* ride)
|
|||
{
|
||||
set_format_arg(0, rct_string_id, name_string_idx);
|
||||
set_format_arg(2, uint32_t, id);
|
||||
set_format_arg(6, rct_string_id, ride->name);
|
||||
set_format_arg(8, uint32_t, ride->name_arguments);
|
||||
ride->FormatNameTo(gCommonFormatArgs + 6);
|
||||
|
||||
rct_string_id msg_string;
|
||||
if (ride_type_has_flag(ride->type, RIDE_TYPE_FLAG_IN_RIDE))
|
||||
|
@ -5169,8 +5167,7 @@ void Guest::UpdateRideLeaveExit()
|
|||
{
|
||||
set_format_arg(0, rct_string_id, name_string_idx);
|
||||
set_format_arg(2, uint32_t, id);
|
||||
set_format_arg(6, rct_string_id, ride->name);
|
||||
set_format_arg(8, uint32_t, ride->name_arguments);
|
||||
ride->FormatNameTo(gCommonFormatArgs + 6);
|
||||
|
||||
if (gConfigNotifications.guest_left_ride)
|
||||
{
|
||||
|
|
|
@ -1972,9 +1972,15 @@ void peep_thought_set_format_args(rct_peep_thought* thought)
|
|||
uint8_t flags = PeepThoughtToActionMap[thought->type].flags;
|
||||
if (flags & 1)
|
||||
{
|
||||
Ride* ride = get_ride(thought->item);
|
||||
set_format_arg(2, rct_string_id, ride->name);
|
||||
set_format_arg(4, uint32_t, ride->name_arguments);
|
||||
auto ride = get_ride(thought->item);
|
||||
if (ride != nullptr)
|
||||
{
|
||||
ride->FormatNameTo(gCommonFormatArgs + 2);
|
||||
}
|
||||
else
|
||||
{
|
||||
set_format_arg(2, rct_string_id, STR_NONE);
|
||||
}
|
||||
}
|
||||
else if (flags & 2)
|
||||
{
|
||||
|
@ -2355,8 +2361,7 @@ static void peep_interact_with_entrance(Peep* peep, int16_t x, int16_t y, TileEl
|
|||
{
|
||||
set_format_arg(0, rct_string_id, peep->name_string_idx);
|
||||
set_format_arg(2, uint32_t, peep->id);
|
||||
set_format_arg(6, rct_string_id, ride->name);
|
||||
set_format_arg(8, uint32_t, ride->name_arguments);
|
||||
ride->FormatNameTo(gCommonFormatArgs + 6);
|
||||
if (gConfigNotifications.guest_queuing_for_ride)
|
||||
{
|
||||
news_item_add_to_queue(NEWS_ITEM_PEEP_ON_RIDE, STR_PEEP_TRACKING_PEEP_JOINED_QUEUE_FOR_X, peep->sprite_index);
|
||||
|
@ -2799,8 +2804,7 @@ static void peep_interact_with_path(Peep* peep, int16_t x, int16_t y, TileElemen
|
|||
{
|
||||
set_format_arg(0, rct_string_id, peep->name_string_idx);
|
||||
set_format_arg(2, uint32_t, peep->id);
|
||||
set_format_arg(6, rct_string_id, ride->name);
|
||||
set_format_arg(8, uint32_t, ride->name_arguments);
|
||||
ride->FormatNameTo(gCommonFormatArgs + 6);
|
||||
if (gConfigNotifications.guest_queuing_for_ride)
|
||||
{
|
||||
news_item_add_to_queue(
|
||||
|
@ -2909,8 +2913,7 @@ static bool peep_interact_with_shop(Peep* peep, int16_t x, int16_t y, TileElemen
|
|||
{
|
||||
set_format_arg(0, rct_string_id, peep->name_string_idx);
|
||||
set_format_arg(2, uint32_t, peep->id);
|
||||
set_format_arg(6, rct_string_id, ride->name);
|
||||
set_format_arg(8, uint32_t, ride->name_arguments);
|
||||
ride->FormatNameTo(gCommonFormatArgs + 6);
|
||||
rct_string_id string_id = ride_type_has_flag(ride->type, RIDE_TYPE_FLAG_IN_RIDE) ? STR_PEEP_TRACKING_PEEP_IS_IN_X
|
||||
: STR_PEEP_TRACKING_PEEP_IS_ON_X;
|
||||
if (gConfigNotifications.guest_used_facility)
|
||||
|
|
|
@ -3059,10 +3059,9 @@ private:
|
|||
Ride* ride;
|
||||
FOR_ALL_RIDES (i, ride)
|
||||
{
|
||||
if (ride->name == 0)
|
||||
if (ride->custom_name.empty())
|
||||
{
|
||||
auto rideEntry = get_ride_entry(ride->subtype);
|
||||
ride_set_name_to_default(ride, rideEntry);
|
||||
ride->SetNameToDefault();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -205,7 +205,6 @@ static void ride_breakdown_update(Ride* ride);
|
|||
static void ride_call_closest_mechanic(Ride* ride);
|
||||
static void ride_call_mechanic(Ride* ride, Peep* mechanic, int32_t forInspection);
|
||||
static void ride_entrance_exit_connected(Ride* ride);
|
||||
static void ride_set_name_to_vehicle_default(Ride* ride, rct_ride_entry* rideEntry);
|
||||
static int32_t ride_get_new_breakdown_problem(Ride* ride);
|
||||
static void ride_inspection_update(Ride* ride);
|
||||
static void ride_mechanic_status_update(Ride* ride, int32_t mechanicStatus);
|
||||
|
@ -259,9 +258,8 @@ rct_ride_entry* Ride::GetRideEntry() const
|
|||
rct_ride_entry* rideEntry = get_ride_entry(subtype);
|
||||
if (rideEntry == nullptr)
|
||||
{
|
||||
char oldname[128];
|
||||
format_string(oldname, 128, name, &name_arguments);
|
||||
log_error("Invalid ride subtype for ride %s", oldname);
|
||||
auto rideName = GetName();
|
||||
log_error("Invalid ride subtype for ride %s", rideName.c_str());
|
||||
}
|
||||
return rideEntry;
|
||||
}
|
||||
|
@ -1010,16 +1008,14 @@ static int32_t ride_check_if_construction_allowed(Ride* ride)
|
|||
}
|
||||
if (ride->lifecycle_flags & RIDE_LIFECYCLE_BROKEN_DOWN)
|
||||
{
|
||||
set_format_arg(6, rct_string_id, ride->name);
|
||||
set_format_arg(8, uint32_t, ride->name_arguments);
|
||||
ride->FormatNameTo(gCommonFormatArgs + 6);
|
||||
context_show_error(STR_CANT_START_CONSTRUCTION_ON, STR_HAS_BROKEN_DOWN_AND_REQUIRES_FIXING);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (ride->status != RIDE_STATUS_CLOSED && ride->status != RIDE_STATUS_SIMULATING)
|
||||
{
|
||||
set_format_arg(6, rct_string_id, ride->name);
|
||||
set_format_arg(8, uint32_t, ride->name_arguments);
|
||||
ride->FormatNameTo(gCommonFormatArgs + 6);
|
||||
context_show_error(STR_CANT_START_CONSTRUCTION_ON, STR_MUST_BE_CLOSED_FIRST);
|
||||
return 0;
|
||||
}
|
||||
|
@ -1942,8 +1938,7 @@ int32_t ride_modify(CoordsXYE* input)
|
|||
|
||||
if (ride->lifecycle_flags & RIDE_LIFECYCLE_INDESTRUCTIBLE)
|
||||
{
|
||||
set_format_arg(6, rct_string_id, ride->name);
|
||||
set_format_arg(8, uint32_t, ride->name_arguments);
|
||||
ride->FormatNameTo(gCommonFormatArgs + 6);
|
||||
context_show_error(
|
||||
STR_CANT_START_CONSTRUCTION_ON, STR_LOCAL_AUTHORITY_FORBIDS_DEMOLITION_OR_MODIFICATIONS_TO_THIS_RIDE);
|
||||
return 0;
|
||||
|
@ -2637,8 +2632,7 @@ void ride_prepare_breakdown(Ride* ride, int32_t breakdownReason)
|
|||
*/
|
||||
void ride_breakdown_add_news_item(Ride* ride)
|
||||
{
|
||||
set_format_arg(0, rct_string_id, ride->name);
|
||||
set_format_arg(2, uint32_t, ride->name_arguments);
|
||||
ride->FormatNameTo(gCommonFormatArgs);
|
||||
if (gConfigNotifications.ride_broken_down)
|
||||
{
|
||||
news_item_add_to_queue(NEWS_ITEM_RIDE, STR_RIDE_IS_BROKEN_DOWN, ride->id);
|
||||
|
@ -2664,8 +2658,7 @@ static void ride_breakdown_status_update(Ride* ride)
|
|||
if (!(ride->not_fixed_timeout & 15) && ride->mechanic_status != RIDE_MECHANIC_STATUS_FIXING
|
||||
&& ride->mechanic_status != RIDE_MECHANIC_STATUS_HAS_FIXED_STATION_BRAKES)
|
||||
{
|
||||
set_format_arg(0, rct_string_id, ride->name);
|
||||
set_format_arg(2, uint32_t, ride->name_arguments);
|
||||
ride->FormatNameTo(gCommonFormatArgs);
|
||||
if (gConfigNotifications.ride_warnings)
|
||||
{
|
||||
news_item_add_to_queue(NEWS_ITEM_RIDE, STR_RIDE_IS_STILL_NOT_FIXED, ride->id);
|
||||
|
@ -3346,8 +3339,7 @@ static void ride_entrance_exit_connected(Ride* ride)
|
|||
if (!entrance.isNull() && !ride_entrance_exit_is_reachable(entrance))
|
||||
{
|
||||
// name of ride is parameter of the format string
|
||||
set_format_arg(0, rct_string_id, ride->name);
|
||||
set_format_arg(2, uint32_t, ride->name_arguments);
|
||||
ride->FormatNameTo(gCommonFormatArgs);
|
||||
if (gConfigNotifications.ride_warnings)
|
||||
{
|
||||
news_item_add_to_queue(1, STR_ENTRANCE_NOT_CONNECTED, ride->id);
|
||||
|
@ -3358,8 +3350,7 @@ static void ride_entrance_exit_connected(Ride* ride)
|
|||
if (!exit.isNull() && !ride_entrance_exit_is_reachable(exit))
|
||||
{
|
||||
// name of ride is parameter of the format string
|
||||
set_format_arg(0, rct_string_id, ride->name);
|
||||
set_format_arg(2, uint32_t, ride->name_arguments);
|
||||
ride->FormatNameTo(gCommonFormatArgs);
|
||||
if (gConfigNotifications.ride_warnings)
|
||||
{
|
||||
news_item_add_to_queue(1, STR_EXIT_NOT_CONNECTED, ride->id);
|
||||
|
@ -3443,8 +3434,7 @@ static void ride_shop_connected(Ride* ride)
|
|||
}
|
||||
|
||||
// Name of ride is parameter of the format string
|
||||
set_format_arg(0, rct_string_id, ride->name);
|
||||
set_format_arg(2, uint32_t, ride->name_arguments);
|
||||
ride->FormatNameTo(gCommonFormatArgs);
|
||||
if (gConfigNotifications.ride_warnings)
|
||||
{
|
||||
news_item_add_to_queue(1, STR_ENTRANCE_NOT_CONNECTED, ride->id);
|
||||
|
@ -3463,8 +3453,7 @@ static void ride_track_set_map_tooltip(TileElement* tileElement)
|
|||
auto ride = get_ride(rideIndex);
|
||||
|
||||
set_map_tooltip_format_arg(0, rct_string_id, STR_RIDE_MAP_TIP);
|
||||
set_map_tooltip_format_arg(2, rct_string_id, ride->name);
|
||||
set_map_tooltip_format_arg(4, uint32_t, ride->name_arguments);
|
||||
ride->FormatNameTo(gCommonFormatArgs + 2);
|
||||
|
||||
rct_string_id formatSecondary;
|
||||
int32_t arg1 = 0;
|
||||
|
@ -3479,8 +3468,7 @@ static void ride_queue_banner_set_map_tooltip(TileElement* tileElement)
|
|||
auto ride = get_ride(rideIndex);
|
||||
|
||||
set_map_tooltip_format_arg(0, rct_string_id, STR_RIDE_MAP_TIP);
|
||||
set_map_tooltip_format_arg(2, rct_string_id, ride->name);
|
||||
set_map_tooltip_format_arg(4, uint32_t, ride->name_arguments);
|
||||
ride->FormatNameTo(gCommonFormatArgs + 2);
|
||||
|
||||
rct_string_id formatSecondary;
|
||||
int32_t arg1 = 0;
|
||||
|
@ -3500,8 +3488,7 @@ static void ride_station_set_map_tooltip(TileElement* tileElement)
|
|||
|
||||
set_map_tooltip_format_arg(0, rct_string_id, STR_RIDE_MAP_TIP);
|
||||
set_map_tooltip_format_arg(2, rct_string_id, ride->num_stations <= 1 ? STR_RIDE_STATION : STR_RIDE_STATION_X);
|
||||
set_map_tooltip_format_arg(4, rct_string_id, ride->name);
|
||||
set_map_tooltip_format_arg(6, uint32_t, ride->name_arguments);
|
||||
ride->FormatNameTo(gCommonFormatArgs + 4);
|
||||
set_map_tooltip_format_arg(10, rct_string_id, RideComponentNames[RideNameConvention[ride->type].station].capitalised);
|
||||
set_map_tooltip_format_arg(12, uint16_t, stationIndex + 1);
|
||||
|
||||
|
@ -3532,8 +3519,7 @@ static void ride_entrance_set_map_tooltip(TileElement* tileElement)
|
|||
|
||||
set_map_tooltip_format_arg(0, rct_string_id, STR_RIDE_MAP_TIP);
|
||||
set_map_tooltip_format_arg(2, rct_string_id, ride->num_stations <= 1 ? STR_RIDE_ENTRANCE : STR_RIDE_STATION_X_ENTRANCE);
|
||||
set_map_tooltip_format_arg(4, rct_string_id, ride->name);
|
||||
set_map_tooltip_format_arg(6, uint32_t, ride->name_arguments);
|
||||
ride->FormatNameTo(gMapTooltipFormatArgs + 4);
|
||||
set_map_tooltip_format_arg(12, uint16_t, stationIndex + 1);
|
||||
if (queueLength == 0)
|
||||
{
|
||||
|
@ -3558,8 +3544,7 @@ static void ride_entrance_set_map_tooltip(TileElement* tileElement)
|
|||
stationIndex--;
|
||||
|
||||
set_map_tooltip_format_arg(0, rct_string_id, ride->num_stations <= 1 ? STR_RIDE_EXIT : STR_RIDE_STATION_X_EXIT);
|
||||
set_map_tooltip_format_arg(2, rct_string_id, ride->name);
|
||||
set_map_tooltip_format_arg(4, uint32_t, ride->name_arguments);
|
||||
ride->FormatNameTo(gCommonFormatArgs + 2);
|
||||
set_map_tooltip_format_arg(10, uint16_t, stationIndex + 1);
|
||||
}
|
||||
}
|
||||
|
@ -5745,12 +5730,15 @@ static bool ride_with_colour_config_exists(uint8_t ride_type, const TrackColour*
|
|||
|
||||
static bool ride_name_exists(char* name)
|
||||
{
|
||||
char buffer[256];
|
||||
char buffer[256]{};
|
||||
uint32_t formatArgs[32]{};
|
||||
|
||||
Ride* ride;
|
||||
int32_t i;
|
||||
FOR_ALL_RIDES (i, ride)
|
||||
{
|
||||
format_string(buffer, 256, ride->name, &ride->name_arguments);
|
||||
ride->FormatNameTo(formatArgs);
|
||||
format_string(buffer, 256, STR_STRINGID, formatArgs);
|
||||
if ((strcmp(buffer, name) == 0) && ride_has_any_track_elements(ride))
|
||||
{
|
||||
return true;
|
||||
|
@ -5833,76 +5821,19 @@ money32 ride_get_common_price(Ride* forRide)
|
|||
return MONEY32_UNDEFINED;
|
||||
}
|
||||
|
||||
void ride_set_name_to_default(Ride* ride, rct_ride_entry* rideEntry)
|
||||
void Ride::SetNameToDefault()
|
||||
{
|
||||
if (RideGroupManager::RideTypeIsIndependent(ride->type))
|
||||
{
|
||||
ride_set_name_to_vehicle_default(ride, rideEntry);
|
||||
}
|
||||
else
|
||||
{
|
||||
ride_set_name_to_track_default(ride, rideEntry);
|
||||
}
|
||||
}
|
||||
char rideNameBuffer[256]{};
|
||||
uint8_t rideNameArgs[32]{};
|
||||
|
||||
void ride_set_name_to_track_default(Ride* ride, rct_ride_entry* rideEntry)
|
||||
{
|
||||
char rideNameBuffer[256];
|
||||
ride_name_args name_args;
|
||||
|
||||
ride->name = STR_NONE;
|
||||
|
||||
if (RideGroupManager::RideTypeHasRideGroups(ride->type))
|
||||
{
|
||||
const RideGroup* rideGroup = RideGroupManager::GetRideGroup(ride->type, rideEntry);
|
||||
name_args.type_name = rideGroup->Naming.name;
|
||||
}
|
||||
else
|
||||
{
|
||||
name_args.type_name = RideNaming[ride->type].name;
|
||||
}
|
||||
|
||||
name_args.number = 0;
|
||||
// Increment default name number until we find a unique name
|
||||
default_name_number = 0;
|
||||
do
|
||||
{
|
||||
name_args.number++;
|
||||
format_string(rideNameBuffer, 256, 1, &name_args);
|
||||
default_name_number++;
|
||||
FormatNameTo(rideNameArgs);
|
||||
format_string(rideNameBuffer, 256, STR_STRINGID, &rideNameArgs);
|
||||
} while (ride_name_exists(rideNameBuffer));
|
||||
|
||||
ride->name = 1;
|
||||
ride->name_arguments_type_name = name_args.type_name;
|
||||
ride->name_arguments_number = name_args.number;
|
||||
}
|
||||
|
||||
static void ride_set_name_to_vehicle_default(Ride* ride, rct_ride_entry* rideEntry)
|
||||
{
|
||||
char rideNameBuffer[256];
|
||||
ride_name_args name_args;
|
||||
|
||||
ride->name = 1;
|
||||
ride->name_arguments_type_name = rideEntry->naming.name;
|
||||
rct_string_id rideNameStringId = 0;
|
||||
name_args.type_name = rideEntry->naming.name;
|
||||
name_args.number = 0;
|
||||
|
||||
do
|
||||
{
|
||||
name_args.number++;
|
||||
format_string(rideNameBuffer, 256, ride->name, &name_args);
|
||||
} while (ride_name_exists(rideNameBuffer));
|
||||
|
||||
ride->name_arguments_type_name = name_args.type_name;
|
||||
ride->name_arguments_number = name_args.number;
|
||||
|
||||
rideNameStringId = user_string_allocate(USER_STRING_HIGH_ID_NUMBER | USER_STRING_DUPLICATION_PERMITTED, rideNameBuffer);
|
||||
if (rideNameStringId != 0)
|
||||
{
|
||||
ride->name = rideNameStringId;
|
||||
}
|
||||
else
|
||||
{
|
||||
ride_set_name_to_track_default(ride, rideEntry);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -7305,8 +7236,7 @@ void Ride::Crash(uint8_t vehicleIndex)
|
|||
}
|
||||
}
|
||||
|
||||
set_format_arg(0, rct_string_id, name);
|
||||
set_format_arg(2, uint32_t, name_arguments);
|
||||
FormatNameTo(gCommonFormatArgs);
|
||||
if (gConfigNotifications.ride_crashed)
|
||||
{
|
||||
news_item_add_to_queue(NEWS_ITEM_RIDE, STR_RIDE_HAS_CRASHED, id);
|
||||
|
@ -7317,24 +7247,9 @@ void ride_reset_all_names()
|
|||
{
|
||||
int32_t i;
|
||||
Ride* ride;
|
||||
char rideNameBuffer[256];
|
||||
ride_name_args name_args;
|
||||
|
||||
FOR_ALL_RIDES (i, ride)
|
||||
{
|
||||
ride->name = STR_NONE;
|
||||
|
||||
name_args.type_name = RideNaming[ride->type].name;
|
||||
name_args.number = 0;
|
||||
do
|
||||
{
|
||||
name_args.number++;
|
||||
format_string(rideNameBuffer, 256, 1, &name_args);
|
||||
} while (ride_name_exists(rideNameBuffer));
|
||||
|
||||
ride->name = 1;
|
||||
ride->name_arguments_type_name = name_args.type_name;
|
||||
ride->name_arguments_number = name_args.number;
|
||||
ride->SetNameToDefault();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -7404,7 +7319,7 @@ rct_vehicle* ride_get_broken_vehicle(Ride* ride)
|
|||
*/
|
||||
void Ride::Delete()
|
||||
{
|
||||
user_string_free(name);
|
||||
custom_name = {};
|
||||
measurement = {};
|
||||
type = RIDE_TYPE_NULL;
|
||||
}
|
||||
|
@ -7976,3 +7891,52 @@ void ride_clear_leftover_entrances(Ride* ride)
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
std::string Ride::GetName() const
|
||||
{
|
||||
uint8_t args[32]{};
|
||||
FormatNameTo(args);
|
||||
return format_string(STR_STRINGID, args);
|
||||
}
|
||||
|
||||
void Ride::FormatNameTo(void* argsV) const
|
||||
{
|
||||
auto args = (uint8_t*)argsV;
|
||||
if (!custom_name.empty())
|
||||
{
|
||||
auto str = custom_name.c_str();
|
||||
set_format_arg_on(args, 0, rct_string_id, STR_STRING);
|
||||
set_format_arg_on(args, 2, void*, str);
|
||||
}
|
||||
else
|
||||
{
|
||||
rct_string_id rideTypeName{};
|
||||
if (RideGroupManager::RideTypeIsIndependent(type))
|
||||
{
|
||||
auto rideEntry = GetRideEntry();
|
||||
if (rideEntry != nullptr)
|
||||
{
|
||||
rideTypeName = rideEntry->naming.name;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (RideGroupManager::RideTypeHasRideGroups(type))
|
||||
{
|
||||
auto rideEntry = GetRideEntry();
|
||||
if (rideEntry != nullptr)
|
||||
{
|
||||
auto rideGroup = RideGroupManager::GetRideGroup(type, rideEntry);
|
||||
rideTypeName = rideGroup->Naming.name;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
rideTypeName = RideNaming[type].name;
|
||||
}
|
||||
}
|
||||
set_format_arg_on(args, 0, rct_string_id, 1);
|
||||
set_format_arg_on(args, 2, rct_string_id, rideTypeName);
|
||||
set_format_arg_on(args, 4, uint16_t, default_name_number);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -195,16 +195,8 @@ struct Ride
|
|||
VehicleColour vehicle_colours[MAX_CARS_PER_TRAIN];
|
||||
// 0 = closed, 1 = open, 2 = test
|
||||
uint8_t status;
|
||||
rct_string_id name;
|
||||
union
|
||||
{
|
||||
uint32_t name_arguments;
|
||||
struct
|
||||
{
|
||||
rct_string_id name_arguments_type_name;
|
||||
uint16_t name_arguments_number;
|
||||
};
|
||||
};
|
||||
std::string custom_name;
|
||||
uint16_t default_name_number;
|
||||
LocationXY8 overall_view;
|
||||
uint16_t vehicles[MAX_VEHICLES_PER_RIDE]; // Points to the first car in the train
|
||||
uint8_t depart_flags;
|
||||
|
@ -416,6 +408,10 @@ public:
|
|||
void QueueInsertGuestAtFront(int32_t stationIndex, Peep* peep);
|
||||
Peep* GetQueueHeadGuest(int32_t stationIndex) const;
|
||||
|
||||
void SetNameToDefault();
|
||||
std::string GetName() const;
|
||||
void FormatNameTo(void* args) const;
|
||||
|
||||
static void UpdateAll();
|
||||
};
|
||||
|
||||
|
@ -1092,9 +1088,7 @@ int32_t ride_get_random_colour_preset_index(uint8_t ride_type);
|
|||
money32 ride_get_common_price(Ride* forRide);
|
||||
rct_ride_name get_ride_naming(const uint8_t rideType, rct_ride_entry* rideEntry);
|
||||
money32 ride_create_command(int32_t type, int32_t subType, int32_t flags, ride_id_t* outRideIndex, uint8_t* outRideColour);
|
||||
void ride_set_name_to_default(Ride* ride, rct_ride_entry* rideEntry);
|
||||
|
||||
void ride_set_name_to_track_default(Ride* ride, rct_ride_entry* rideEntry);
|
||||
void ride_clear_for_construction(Ride* ride);
|
||||
void ride_entrance_exit_place_provisional_ghost();
|
||||
void ride_entrance_exit_remove_ghost();
|
||||
|
|
|
@ -182,12 +182,10 @@ bool track_design_save(ride_id_t rideIndex)
|
|||
}
|
||||
}
|
||||
|
||||
utf8 track_name[256];
|
||||
format_string(track_name, sizeof(track_name), ride->name, &ride->name_arguments);
|
||||
|
||||
auto trackName = ride->GetName();
|
||||
auto intent = Intent(WC_LOADSAVE);
|
||||
intent.putExtra(INTENT_EXTRA_LOADSAVE_TYPE, LOADSAVETYPE_SAVE | LOADSAVETYPE_TRACK);
|
||||
intent.putExtra(INTENT_EXTRA_PATH, std::string{ track_name });
|
||||
intent.putExtra(INTENT_EXTRA_PATH, trackName);
|
||||
intent.putExtra(INTENT_EXTRA_CALLBACK, (void*)track_design_save_callback);
|
||||
context_open_intent(&intent);
|
||||
|
||||
|
|
|
@ -3471,8 +3471,7 @@ static void vehicle_check_if_missing(rct_vehicle* vehicle)
|
|||
|
||||
vehicleIndex++;
|
||||
set_format_arg(2, uint16_t, vehicleIndex);
|
||||
set_format_arg(4, rct_string_id, ride->name);
|
||||
set_format_arg(6, uint32_t, ride->name_arguments);
|
||||
ride->FormatNameTo(gCommonFormatArgs + 4);
|
||||
set_format_arg(10, rct_string_id, RideComponentNames[RideNameConvention[ride->type].station].singular);
|
||||
|
||||
news_item_add_to_queue(NEWS_ITEM_RIDE, STR_NEWS_VEHICLE_HAS_STALLED, vehicle->ride);
|
||||
|
@ -5153,8 +5152,7 @@ static void vehicle_kill_all_passengers(rct_vehicle* vehicle)
|
|||
|
||||
if (numFatalities != 0)
|
||||
{
|
||||
set_format_arg(2, rct_string_id, ride->name);
|
||||
set_format_arg(4, uint32_t, ride->name_arguments);
|
||||
ride->FormatNameTo(gCommonFormatArgs + 2);
|
||||
news_item_add_to_queue(NEWS_ITEM_RIDE, STR_X_PEOPLE_DIED_ON_X, vehicle->ride);
|
||||
|
||||
if (gParkRatingCasualtyPenalty < 500)
|
||||
|
@ -6140,8 +6138,7 @@ void vehicle_set_map_toolbar(const rct_vehicle* vehicle)
|
|||
|
||||
set_map_tooltip_format_arg(0, rct_string_id, STR_RIDE_MAP_TIP);
|
||||
set_map_tooltip_format_arg(2, rct_string_id, STR_MAP_TOOLTIP_STRINGID_STRINGID);
|
||||
set_map_tooltip_format_arg(4, rct_string_id, ride->name);
|
||||
set_map_tooltip_format_arg(6, uint32_t, ride->name_arguments);
|
||||
ride->FormatNameTo(gCommonFormatArgs + 4);
|
||||
set_map_tooltip_format_arg(10, rct_string_id, RideComponentNames[RideNameConvention[ride->type].vehicle].capitalised);
|
||||
set_map_tooltip_format_arg(12, uint16_t, vehicleIndex + 1);
|
||||
|
||||
|
|
|
@ -1298,8 +1298,7 @@ void map_obstruction_set_error_text(TileElement* tileElement)
|
|||
case TILE_ELEMENT_TYPE_TRACK:
|
||||
ride = get_ride(tileElement->AsTrack()->GetRideIndex());
|
||||
errorStringId = STR_X_IN_THE_WAY;
|
||||
set_format_arg(0, rct_string_id, ride->name);
|
||||
set_format_arg(2, uint32_t, ride->name_arguments);
|
||||
ride->FormatNameTo(gCommonFormatArgs);
|
||||
break;
|
||||
case TILE_ELEMENT_TYPE_SMALL_SCENERY:
|
||||
sceneryEntry = tileElement->AsSmallScenery()->GetEntry();
|
||||
|
|
Loading…
Reference in New Issue