mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2025-12-10 09:32:29 +01:00
Fix #12506: Cannot advertise food if there are no rides in the park
This commit is contained in:
committed by
GitHub
parent
1f3ea50915
commit
bb1d81471d
@@ -55,6 +55,7 @@
|
||||
- Fix: [#12312] Softlock when loading save file via command line fails.
|
||||
- Fix: [#12486] `set-rct2` has a broken g1.dat check.
|
||||
- Fix: [#12505] Stores selling multiple items can only have the first product advertised.
|
||||
- Fix: [#12506] Cannot advertise food if there are no rides in the park.
|
||||
- Fix: 'j' character has broken kerning (original bug).
|
||||
- Fix: RCT1 scenarios have more items in the object list than are present in the park or the research list.
|
||||
- Improved: [#6530] Allow water and land height changes on park borders.
|
||||
|
||||
@@ -154,7 +154,7 @@ rct_window* window_new_campaign_open(int16_t campaignType)
|
||||
w->campaign.no_weeks = 2;
|
||||
|
||||
// Currently selected ride
|
||||
w->campaign.ride_id = SELECTED_RIDE_UNDEFINED;
|
||||
w->campaign.RideId = SELECTED_RIDE_UNDEFINED;
|
||||
|
||||
WindowCampaignRefreshRides();
|
||||
return w;
|
||||
@@ -207,7 +207,7 @@ static void window_new_campaign_mouseup(rct_window* w, rct_widgetindex widgetInd
|
||||
break;
|
||||
case WIDX_START_BUTTON:
|
||||
{
|
||||
auto gameAction = ParkMarketingAction(w->campaign.campaign_type, w->campaign.ride_id, w->campaign.no_weeks);
|
||||
auto gameAction = ParkMarketingAction(w->campaign.campaign_type, w->campaign.RideId, w->campaign.no_weeks);
|
||||
gameAction.SetCallback([](const GameAction* ga, const GameActionResult* result) {
|
||||
if (result->Error == GA_ERROR::OK)
|
||||
{
|
||||
@@ -306,16 +306,25 @@ static void window_new_campaign_dropdown(rct_window* w, rct_widgetindex widgetIn
|
||||
if (widgetIndex != WIDX_RIDE_DROPDOWN_BUTTON)
|
||||
return;
|
||||
|
||||
if (dropdownIndex < 0 || static_cast<size_t>(dropdownIndex) >= window_new_campaign_rides.size())
|
||||
if (dropdownIndex < 0)
|
||||
return;
|
||||
|
||||
if (w->campaign.campaign_type == ADVERTISING_CAMPAIGN_FOOD_OR_DRINK_FREE)
|
||||
{
|
||||
w->campaign.ride_id = window_new_campaign_shop_items[dropdownIndex];
|
||||
if (static_cast<size_t>(dropdownIndex) >= std::size(window_new_campaign_shop_items))
|
||||
return;
|
||||
|
||||
if (window_new_campaign_shop_items[dropdownIndex] == 255)
|
||||
return;
|
||||
|
||||
w->campaign.ShopItemId = window_new_campaign_shop_items[dropdownIndex];
|
||||
}
|
||||
else
|
||||
{
|
||||
w->campaign.ride_id = window_new_campaign_rides[dropdownIndex];
|
||||
if (static_cast<size_t>(dropdownIndex) >= window_new_campaign_rides.size())
|
||||
return;
|
||||
|
||||
w->campaign.RideId = window_new_campaign_rides[dropdownIndex];
|
||||
}
|
||||
|
||||
w->Invalidate();
|
||||
@@ -339,9 +348,9 @@ static void window_new_campaign_invalidate(rct_window* w)
|
||||
window_new_campaign_widgets[WIDX_RIDE_DROPDOWN].type = WWT_DROPDOWN;
|
||||
window_new_campaign_widgets[WIDX_RIDE_DROPDOWN_BUTTON].type = WWT_BUTTON;
|
||||
window_new_campaign_widgets[WIDX_RIDE_LABEL].text = STR_MARKETING_RIDE;
|
||||
if (w->campaign.ride_id != SELECTED_RIDE_UNDEFINED)
|
||||
if (w->campaign.RideId != SELECTED_RIDE_UNDEFINED)
|
||||
{
|
||||
auto ride = get_ride(w->campaign.ride_id);
|
||||
auto ride = get_ride(w->campaign.RideId);
|
||||
if (ride != nullptr)
|
||||
{
|
||||
window_new_campaign_widgets[WIDX_RIDE_DROPDOWN].text = STR_STRINGID;
|
||||
@@ -356,9 +365,9 @@ static void window_new_campaign_invalidate(rct_window* w)
|
||||
window_new_campaign_widgets[WIDX_RIDE_DROPDOWN].type = WWT_DROPDOWN;
|
||||
window_new_campaign_widgets[WIDX_RIDE_DROPDOWN_BUTTON].type = WWT_BUTTON;
|
||||
window_new_campaign_widgets[WIDX_RIDE_LABEL].text = STR_MARKETING_ITEM;
|
||||
if (w->campaign.ride_id != SELECTED_RIDE_UNDEFINED)
|
||||
if (w->campaign.ShopItemId != SELECTED_RIDE_UNDEFINED)
|
||||
{
|
||||
window_new_campaign_widgets[WIDX_RIDE_DROPDOWN].text = ShopItems[w->campaign.ride_id].Naming.Plural;
|
||||
window_new_campaign_widgets[WIDX_RIDE_DROPDOWN].text = ShopItems[w->campaign.ShopItemId].Naming.Plural;
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -368,7 +377,7 @@ static void window_new_campaign_invalidate(rct_window* w)
|
||||
|
||||
// Enable / disable start button based on ride dropdown
|
||||
w->disabled_widgets &= ~(1 << WIDX_START_BUTTON);
|
||||
if (window_new_campaign_widgets[WIDX_RIDE_DROPDOWN].type == WWT_DROPDOWN && w->campaign.ride_id == SELECTED_RIDE_UNDEFINED)
|
||||
if (window_new_campaign_widgets[WIDX_RIDE_DROPDOWN].type == WWT_DROPDOWN && w->campaign.RideId == SELECTED_RIDE_UNDEFINED)
|
||||
w->disabled_widgets |= 1 << WIDX_START_BUTTON;
|
||||
}
|
||||
|
||||
|
||||
@@ -247,7 +247,11 @@ struct campaign_variables
|
||||
{
|
||||
int16_t campaign_type;
|
||||
int16_t no_weeks; // 0x482
|
||||
uint16_t ride_id; // 0x484
|
||||
union
|
||||
{
|
||||
ride_id_t RideId; // 0x484
|
||||
ObjectEntryIndex ShopItemId; // 0x484
|
||||
};
|
||||
uint32_t pad_486;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user