1
0
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:
Michael Steenbeek
2020-07-29 10:44:38 +02:00
committed by GitHub
parent 1f3ea50915
commit bb1d81471d
3 changed files with 25 additions and 11 deletions

View File

@@ -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.

View File

@@ -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;
}

View File

@@ -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;
};