diff --git a/src/openrct2-ui/windows/Finances.cpp b/src/openrct2-ui/windows/Finances.cpp index 915e3dbf5a..04f13d2e41 100644 --- a/src/openrct2-ui/windows/Finances.cpp +++ b/src/openrct2-ui/windows/Finances.cpp @@ -1092,7 +1092,7 @@ static void window_finances_marketing_paint(rct_window* w, rct_drawpixelinfo* dp break; } case ADVERTISING_CAMPAIGN_FOOD_OR_DRINK_FREE: - ft.Add(ShopItems[campaign->ShopItemType].Naming.Plural); + ft.Add(GetShopItemDescriptor(campaign->ShopItemType).Naming.Plural); break; default: { diff --git a/src/openrct2-ui/windows/Guest.cpp b/src/openrct2-ui/windows/Guest.cpp index 7f05bcbe7a..859ae80f47 100644 --- a/src/openrct2-ui/windows/Guest.cpp +++ b/src/openrct2-ui/windows/Guest.cpp @@ -1839,15 +1839,15 @@ void window_guest_inventory_update(rct_window* w) } } -static std::pair window_guest_inventory_format_item(Peep* peep, int32_t item) +static std::pair window_guest_inventory_format_item(Peep* peep, ShopItem item) { auto& park = OpenRCT2::GetContext()->GetGameState()->GetPark(); auto parkName = park.Name.c_str(); // Default arguments auto ft = Formatter(); - ft.Add(ShopItems[item].Image); - ft.Add(ShopItems[item].Naming.Display); + ft.Add(GetShopItemDescriptor(item).Image); + ft.Add(GetShopItemDescriptor(item).Naming.Display); ft.Add(STR_STRING); ft.Add(parkName); @@ -1855,11 +1855,11 @@ static std::pair window_guest_inventory_format_item(Pe Ride* ride{}; switch (item) { - case SHOP_ITEM_BALLOON: + case ShopItem::Balloon: ft.Rewind(); - ft.Add(SPRITE_ID_PALETTE_COLOUR_1(peep->BalloonColour) | ShopItems[item].Image); + ft.Add(SPRITE_ID_PALETTE_COLOUR_1(peep->BalloonColour) | GetShopItemDescriptor(item).Image); break; - case SHOP_ITEM_PHOTO: + case ShopItem::Photo: ride = get_ride(peep->Photo1RideRef); if (ride != nullptr) { @@ -1869,11 +1869,11 @@ static std::pair window_guest_inventory_format_item(Pe } break; - case SHOP_ITEM_UMBRELLA: + case ShopItem::Umbrella: ft.Rewind(); - ft.Add(SPRITE_ID_PALETTE_COLOUR_1(peep->UmbrellaColour) | ShopItems[item].Image); + ft.Add(SPRITE_ID_PALETTE_COLOUR_1(peep->UmbrellaColour) | GetShopItemDescriptor(item).Image); break; - case SHOP_ITEM_VOUCHER: + case ShopItem::Voucher: switch (peep->VoucherType) { case VOUCHER_TYPE_PARK_ENTRY_FREE: @@ -1904,19 +1904,19 @@ static std::pair window_guest_inventory_format_item(Pe ft.Rewind(); ft.Increment(6); ft.Add(STR_PEEP_INVENTORY_VOUCHER_FOOD_OR_DRINK_FREE); - ft.Add(ShopItems[peep->VoucherShopItem].Naming.Singular); + ft.Add(GetShopItemDescriptor(peep->VoucherShopItem).Naming.Singular); break; } break; - case SHOP_ITEM_HAT: + case ShopItem::Hat: ft.Rewind(); - ft.Add(SPRITE_ID_PALETTE_COLOUR_1(peep->HatColour) | ShopItems[item].Image); + ft.Add(SPRITE_ID_PALETTE_COLOUR_1(peep->HatColour) | GetShopItemDescriptor(item).Image); break; - case SHOP_ITEM_TSHIRT: + case ShopItem::TShirt: ft.Rewind(); - ft.Add(SPRITE_ID_PALETTE_COLOUR_1(peep->TshirtColour) | ShopItems[item].Image); + ft.Add(SPRITE_ID_PALETTE_COLOUR_1(peep->TshirtColour) | GetShopItemDescriptor(item).Image); break; - case SHOP_ITEM_PHOTO2: + case ShopItem::Photo2: ride = get_ride(peep->Photo2RideRef); if (ride != nullptr) { @@ -1925,7 +1925,7 @@ static std::pair window_guest_inventory_format_item(Pe ride->FormatNameTo(ft); } break; - case SHOP_ITEM_PHOTO3: + case ShopItem::Photo3: ride = get_ride(peep->Photo3RideRef); if (ride != nullptr) { @@ -1934,7 +1934,7 @@ static std::pair window_guest_inventory_format_item(Pe ride->FormatNameTo(ft); } break; - case SHOP_ITEM_PHOTO4: + case ShopItem::Photo4: ride = get_ride(peep->Photo4RideRef); if (ride != nullptr) { @@ -1943,6 +1943,9 @@ static std::pair window_guest_inventory_format_item(Pe ride->FormatNameTo(ft); } break; + default: + // This switch handles only items visible in peep window + break; } return std::make_pair(STR_GUEST_ITEM_FORMAT, ft); @@ -1979,7 +1982,7 @@ void window_guest_inventory_paint(rct_window* w, rct_drawpixelinfo* dpi) gfx_draw_string_left(dpi, STR_CARRYING, nullptr, COLOUR_BLACK, screenCoords); screenCoords.y += 10; - for (int32_t item = 0; item < SHOP_ITEM_COUNT; item++) + for (ShopItem item = ShopItem::Balloon; item < ShopItem::Count; item++) { if (screenCoords.y >= maxY) break; diff --git a/src/openrct2-ui/windows/NewCampaign.cpp b/src/openrct2-ui/windows/NewCampaign.cpp index 60fd41af48..6bce2861c6 100644 --- a/src/openrct2-ui/windows/NewCampaign.cpp +++ b/src/openrct2-ui/windows/NewCampaign.cpp @@ -152,9 +152,9 @@ static void window_new_campaign_get_shop_items() { for (const auto itemType : rideEntry->shop_item) { - if (itemType != SHOP_ITEM_NONE && ShopItems[itemType].IsFoodOrDrink()) + if (itemType != ShopItem::None && GetShopItemDescriptor(itemType).IsFoodOrDrink()) { - items |= 1ULL << itemType; + items |= EnumToFlag(itemType); } } } diff --git a/src/openrct2-ui/windows/Ride.cpp b/src/openrct2-ui/windows/Ride.cpp index e372f94f8d..03213404c9 100644 --- a/src/openrct2-ui/windows/Ride.cpp +++ b/src/openrct2-ui/windows/Ride.cpp @@ -4812,7 +4812,7 @@ static void window_ride_colour_paint(rct_window* w, rct_drawpixelinfo* dpi) // auto rideEntry = ride->GetRideEntry(); - if (rideEntry == nullptr || rideEntry->shop_item[0] == SHOP_ITEM_NONE) + if (rideEntry == nullptr || rideEntry->shop_item[0] == ShopItem::None) { auto screenCoords = w->windowPos + ScreenCoordsXY{ widget->left, widget->top }; @@ -4846,8 +4846,8 @@ static void window_ride_colour_paint(rct_window* w, rct_drawpixelinfo* dpi) auto screenCoords = w->windowPos + ScreenCoordsXY{ (widget->left + widget->right) / 2 - 8, (widget->bottom + widget->top) / 2 - 6 }; - uint8_t shopItem = rideEntry->shop_item[1] == SHOP_ITEM_NONE ? rideEntry->shop_item[0] : rideEntry->shop_item[1]; - int32_t spriteIndex = ShopItems[shopItem].Image; + ShopItem shopItem = rideEntry->shop_item[1] == ShopItem::None ? rideEntry->shop_item[0] : rideEntry->shop_item[1]; + int32_t spriteIndex = GetShopItemDescriptor(shopItem).Image; spriteIndex |= SPRITE_ID_PALETTE_COLOUR_1(ride->track_colour[0].main); gfx_draw_sprite(dpi, spriteIndex, screenCoords, 0); @@ -6155,22 +6155,21 @@ static void window_ride_graphs_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi static utf8 _moneyInputText[MONEY_STRING_MAXLENGTH]; -static void update_same_price_throughout_flags(uint32_t shop_item) +static void update_same_price_throughout_flags(ShopItem shop_item) { uint64_t newFlags; - if (ShopItems[shop_item].IsPhoto()) + if (GetShopItemDescriptor(shop_item).IsPhoto()) { newFlags = gSamePriceThroughoutPark; - newFlags ^= (1ULL << SHOP_ITEM_PHOTO) | (1ULL << SHOP_ITEM_PHOTO2) | (1ULL << SHOP_ITEM_PHOTO3) - | (1ULL << SHOP_ITEM_PHOTO4); + newFlags ^= EnumsToFlags(ShopItem::Photo, ShopItem::Photo2, ShopItem::Photo3, ShopItem::Photo4); auto parkSetParameter = ParkSetParameterAction(ParkParameter::SamePriceInPark, newFlags); GameActions::Execute(&parkSetParameter); } else { newFlags = gSamePriceThroughoutPark; - newFlags ^= (1ULL << shop_item); + newFlags ^= EnumToFlag(shop_item); auto parkSetParameter = ParkSetParameterAction(ParkParameter::SamePriceInPark, newFlags); GameActions::Execute(&parkSetParameter); } @@ -6186,10 +6185,10 @@ static void window_ride_income_toggle_primary_price(rct_window* w) if (ride == nullptr) return; - uint32_t shop_item; + ShopItem shop_item; if (ride->type == RIDE_TYPE_TOILETS) { - shop_item = SHOP_ITEM_ADMISSION; + shop_item = ShopItem::Admission; } else { @@ -6197,7 +6196,7 @@ static void window_ride_income_toggle_primary_price(rct_window* w) if (rideEntry != nullptr) { shop_item = rideEntry->shop_item[0]; - if (shop_item == 0xFFFF) + if (shop_item == ShopItem::None) return; } else @@ -6227,7 +6226,7 @@ static void window_ride_income_toggle_secondary_price(rct_window* w) return; auto shop_item = rideEntry->shop_item[1]; - if (shop_item == SHOP_ITEM_NONE) + if (shop_item == ShopItem::None) shop_item = RideTypeDescriptors[ride->type].PhotoItem; update_same_price_throughout_flags(shop_item); @@ -6306,7 +6305,7 @@ static bool window_ride_income_can_modify_primary_price(rct_window* w) auto rideEntry = ride->GetRideEntry(); return park_ride_prices_unlocked() || ride->type == RIDE_TYPE_TOILETS - || (rideEntry != nullptr && rideEntry->shop_item[0] != SHOP_ITEM_NONE); + || (rideEntry != nullptr && rideEntry->shop_item[0] != ShopItem::None); } /** @@ -6503,7 +6502,7 @@ static void window_ride_income_invalidate(rct_window* w) window_ride_income_widgets[WIDX_PRIMARY_PRICE].tooltip = STR_NONE; // If ride prices are locked, do not allow setting the price, unless we're dealing with a shop or toilet. - if (!park_ride_prices_unlocked() && rideEntry->shop_item[0] == SHOP_ITEM_NONE && ride->type != RIDE_TYPE_TOILETS) + if (!park_ride_prices_unlocked() && rideEntry->shop_item[0] == ShopItem::None && ride->type != RIDE_TYPE_TOILETS) { w->disabled_widgets |= (1 << WIDX_PRIMARY_PRICE); window_ride_income_widgets[WIDX_PRIMARY_PRICE_LABEL].tooltip = STR_RIDE_INCOME_ADMISSION_PAY_FOR_ENTRY_TIP; @@ -6522,28 +6521,29 @@ static void window_ride_income_invalidate(rct_window* w) if (ridePrimaryPrice == 0) window_ride_income_widgets[WIDX_PRIMARY_PRICE].text = STR_FREE; - uint8_t primaryItem = SHOP_ITEM_ADMISSION; - if (ride->type == RIDE_TYPE_TOILETS || ((primaryItem = rideEntry->shop_item[0]) != SHOP_ITEM_NONE)) + ShopItem primaryItem = ShopItem::Admission; + if (ride->type == RIDE_TYPE_TOILETS || ((primaryItem = rideEntry->shop_item[0]) != ShopItem::None)) { window_ride_income_widgets[WIDX_PRIMARY_PRICE_SAME_THROUGHOUT_PARK].type = WindowWidgetType::Checkbox; if (shop_item_has_common_price(primaryItem)) w->pressed_widgets |= (1 << WIDX_PRIMARY_PRICE_SAME_THROUGHOUT_PARK); - window_ride_income_widgets[WIDX_PRIMARY_PRICE_LABEL].text = ShopItems[primaryItem].Naming.PriceLabel; + window_ride_income_widgets[WIDX_PRIMARY_PRICE_LABEL].text = GetShopItemDescriptor(primaryItem).Naming.PriceLabel; } // Get secondary item auto secondaryItem = RideTypeDescriptors[ride->type].PhotoItem; if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_ON_RIDE_PHOTO)) { - if ((secondaryItem = rideEntry->shop_item[1]) != SHOP_ITEM_NONE) + if ((secondaryItem = rideEntry->shop_item[1]) != ShopItem::None) { - window_ride_income_widgets[WIDX_SECONDARY_PRICE_LABEL].text = ShopItems[secondaryItem].Naming.PriceLabel; + window_ride_income_widgets[WIDX_SECONDARY_PRICE_LABEL].text = GetShopItemDescriptor(secondaryItem) + .Naming.PriceLabel; } } - if (secondaryItem == SHOP_ITEM_NONE) + if (secondaryItem == ShopItem::None) { // Hide secondary item widgets window_ride_income_widgets[WIDX_SECONDARY_PRICE_LABEL].type = WindowWidgetType::Empty; @@ -6585,7 +6585,7 @@ static void window_ride_income_paint(rct_window* w, rct_drawpixelinfo* dpi) { rct_string_id stringId; money32 profit, costPerHour; - int32_t primaryItem, secondaryItem; + ShopItem primaryItem, secondaryItem; WindowDrawWidgets(w, dpi); window_ride_draw_tab_images(dpi, w); @@ -6604,12 +6604,12 @@ static void window_ride_income_paint(rct_window* w, rct_drawpixelinfo* dpi) // Primary item profit / loss per item sold primaryItem = rideEntry->shop_item[0]; - if (primaryItem != SHOP_ITEM_NONE) + if (primaryItem != ShopItem::None) { profit = ride->price[0]; stringId = STR_PROFIT_PER_ITEM_SOLD; - profit -= ShopItems[primaryItem].Cost; + profit -= GetShopItemDescriptor(primaryItem).Cost; if (profit < 0) { profit *= -1; @@ -6625,12 +6625,12 @@ static void window_ride_income_paint(rct_window* w, rct_drawpixelinfo* dpi) if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_ON_RIDE_PHOTO)) secondaryItem = rideEntry->shop_item[1]; - if (secondaryItem != SHOP_ITEM_NONE) + if (secondaryItem != ShopItem::None) { profit = ride->price[1]; stringId = STR_PROFIT_PER_ITEM_SOLD; - profit -= ShopItems[secondaryItem].Cost; + profit -= GetShopItemDescriptor(secondaryItem).Cost; if (profit < 0) { profit *= -1; @@ -6795,7 +6795,7 @@ static void window_ride_customer_invalidate(rct_window* w) */ static void window_ride_customer_paint(rct_window* w, rct_drawpixelinfo* dpi) { - uint8_t shopItem; + ShopItem shopItem; int16_t popularity, satisfaction, queueTime; int32_t customersPerHour; rct_string_id stringId; @@ -6863,10 +6863,10 @@ static void window_ride_customer_paint(rct_window* w, rct_drawpixelinfo* dpi) // Primary shop items sold shopItem = ride->GetRideEntry()->shop_item[0]; - if (shopItem != SHOP_ITEM_NONE) + if (shopItem != ShopItem::None) { auto ft = Formatter(); - ft.Add(ShopItems[shopItem].Naming.Plural); + ft.Add(GetShopItemDescriptor(shopItem).Naming.Plural); ft.Add(ride->no_primary_items_sold); gfx_draw_string_left(dpi, STR_ITEMS_SOLD, ft.Data(), COLOUR_BLACK, screenCoords); screenCoords.y += LIST_ROW_HEIGHT; @@ -6875,10 +6875,10 @@ static void window_ride_customer_paint(rct_window* w, rct_drawpixelinfo* dpi) // Secondary shop items sold / on-ride photos sold shopItem = (ride->lifecycle_flags & RIDE_LIFECYCLE_ON_RIDE_PHOTO) ? RideTypeDescriptors[ride->type].PhotoItem : ride->GetRideEntry()->shop_item[1]; - if (shopItem != SHOP_ITEM_NONE) + if (shopItem != ShopItem::None) { auto ft = Formatter(); - ft.Add(ShopItems[shopItem].Naming.Plural); + ft.Add(GetShopItemDescriptor(shopItem).Naming.Plural); ft.Add(ride->no_secondary_items_sold); gfx_draw_string_left(dpi, STR_ITEMS_SOLD, ft.Data(), COLOUR_BLACK, screenCoords); screenCoords.y += LIST_ROW_HEIGHT; diff --git a/src/openrct2/actions/ParkMarketingAction.hpp b/src/openrct2/actions/ParkMarketingAction.hpp index 62715adf3b..91d7b9e481 100644 --- a/src/openrct2/actions/ParkMarketingAction.hpp +++ b/src/openrct2/actions/ParkMarketingAction.hpp @@ -77,7 +77,7 @@ public: } else if (campaign.Type == ADVERTISING_CAMPAIGN_FOOD_OR_DRINK_FREE) { - campaign.ShopItemType = _item; + campaign.ShopItemType = ShopItem(_item); } marketing_new_campaign(campaign); diff --git a/src/openrct2/actions/RideCreateAction.hpp b/src/openrct2/actions/RideCreateAction.hpp index ed8540542a..0509bd36de 100644 --- a/src/openrct2/actions/RideCreateAction.hpp +++ b/src/openrct2/actions/RideCreateAction.hpp @@ -213,7 +213,7 @@ public: ride->price[i] = RideTypeDescriptors[ride->type].DefaultPrices[i]; } - if (rideEntry->shop_item[0] == SHOP_ITEM_NONE) + if (rideEntry->shop_item[0] == ShopItem::None) { if (!park_ride_prices_unlocked()) { @@ -222,11 +222,11 @@ public: } else { - ride->price[0] = ShopItems[rideEntry->shop_item[0]].DefaultPrice; + ride->price[0] = GetShopItemDescriptor(rideEntry->shop_item[0]).DefaultPrice; } - if (rideEntry->shop_item[1] != SHOP_ITEM_NONE) + if (rideEntry->shop_item[1] != ShopItem::None) { - ride->price[1] = ShopItems[rideEntry->shop_item[1]].DefaultPrice; + ride->price[1] = GetShopItemDescriptor(rideEntry->shop_item[1]).DefaultPrice; } if (gScenarioObjective.Type == OBJECTIVE_BUILD_THE_BEST) @@ -236,7 +236,7 @@ public: if (ride->type == RIDE_TYPE_TOILETS) { - if (shop_item_has_common_price(SHOP_ITEM_ADMISSION)) + if (shop_item_has_common_price(ShopItem::Admission)) { money32 price = ride_get_common_price(ride); if (price != MONEY32_UNDEFINED) @@ -248,7 +248,7 @@ public: for (auto i = 0; i < NUM_SHOP_ITEMS_PER_RIDE; i++) { - if (rideEntry->shop_item[i] != SHOP_ITEM_NONE) + if (rideEntry->shop_item[i] != ShopItem::None) { if (shop_item_has_common_price(rideEntry->shop_item[i])) { @@ -262,9 +262,9 @@ public: } // Set the on-ride photo price, whether the ride has one or not (except shops). - if (!ride_type_has_flag(ride->type, RIDE_TYPE_FLAG_IS_SHOP) && shop_item_has_common_price(SHOP_ITEM_PHOTO)) + if (!ride_type_has_flag(ride->type, RIDE_TYPE_FLAG_IS_SHOP) && shop_item_has_common_price(ShopItem::Photo)) { - money32 price = shop_item_get_common_price(ride, SHOP_ITEM_PHOTO); + money32 price = shop_item_get_common_price(ride, ShopItem::Photo); if (price != MONEY32_UNDEFINED) { ride->price[1] = static_cast(price); diff --git a/src/openrct2/actions/RideDemolishAction.hpp b/src/openrct2/actions/RideDemolishAction.hpp index 21aae881e6..7c191c9c86 100644 --- a/src/openrct2/actions/RideDemolishAction.hpp +++ b/src/openrct2/actions/RideDemolishAction.hpp @@ -174,41 +174,41 @@ private: } // remove any free voucher for this ride from peep - if (peep->ItemStandardFlags & PEEP_ITEM_VOUCHER) + if (peep->HasItem(ShopItem::Voucher)) { if (peep->VoucherType == VOUCHER_TYPE_RIDE_FREE && peep->VoucherRideId == _rideIndex) { - peep->ItemStandardFlags &= ~(PEEP_ITEM_VOUCHER); + peep->RemoveItem(ShopItem::Voucher); } } // remove any photos of this ride from peep - if (peep->ItemStandardFlags & PEEP_ITEM_PHOTO) + if (peep->HasItem(ShopItem::Photo)) { if (peep->Photo1RideRef == _rideIndex) { - peep->ItemStandardFlags &= ~PEEP_ITEM_PHOTO; + peep->RemoveItem(ShopItem::Photo); } } - if (peep->ItemExtraFlags & PEEP_ITEM_PHOTO2) + if (peep->HasItem(ShopItem::Photo2)) { if (peep->Photo2RideRef == _rideIndex) { - peep->ItemExtraFlags &= ~PEEP_ITEM_PHOTO2; + peep->RemoveItem(ShopItem::Photo2); } } - if (peep->ItemExtraFlags & PEEP_ITEM_PHOTO3) + if (peep->HasItem(ShopItem::Photo3)) { if (peep->Photo3RideRef == _rideIndex) { - peep->ItemExtraFlags &= ~PEEP_ITEM_PHOTO3; + peep->RemoveItem(ShopItem::Photo3); } } - if (peep->ItemExtraFlags & PEEP_ITEM_PHOTO4) + if (peep->HasItem(ShopItem::Photo4)) { if (peep->Photo4RideRef == _rideIndex) { - peep->ItemExtraFlags &= ~PEEP_ITEM_PHOTO4; + peep->RemoveItem(ShopItem::Photo4); } } diff --git a/src/openrct2/actions/RideSetPriceAction.hpp b/src/openrct2/actions/RideSetPriceAction.hpp index 146e66db7f..6b370821f1 100644 --- a/src/openrct2/actions/RideSetPriceAction.hpp +++ b/src/openrct2/actions/RideSetPriceAction.hpp @@ -104,14 +104,14 @@ public: res->Position = { location, tile_element_height(location) }; } - uint32_t shopItem; + ShopItem shopItem; if (_primaryPrice) { - shopItem = SHOP_ITEM_ADMISSION; + shopItem = ShopItem::Admission; if (ride->type != RIDE_TYPE_TOILETS) { shopItem = rideEntry->shop_item[0]; - if (shopItem == SHOP_ITEM_NONE) + if (shopItem == ShopItem::None) { ride->price[0] = _price; window_invalidate_by_class(WC_RIDE); @@ -129,7 +129,7 @@ public: else { shopItem = rideEntry->shop_item[1]; - if (shopItem == SHOP_ITEM_NONE) + if (shopItem == ShopItem::None) { shopItem = RideTypeDescriptors[ride->type].PhotoItem; if ((ride->lifecycle_flags & RIDE_LIFECYCLE_ON_RIDE_PHOTO) == 0) @@ -155,13 +155,13 @@ public: } private: - void RideSetCommonPrice(int32_t shopItem) const + void RideSetCommonPrice(ShopItem shopItem) const { for (auto& ride : GetRideManager()) { auto invalidate = false; auto rideEntry = get_ride_entry(ride.subtype); - if (ride.type == RIDE_TYPE_TOILETS && shopItem == SHOP_ITEM_ADMISSION) + if (ride.type == RIDE_TYPE_TOILETS && shopItem == ShopItem::Admission) { if (ride.price[0] != _price) { @@ -181,7 +181,7 @@ private: { // If the shop item is the same or an on-ride photo if (rideEntry->shop_item[1] == shopItem - || (rideEntry->shop_item[1] == SHOP_ITEM_NONE && ShopItems[shopItem].IsPhoto())) + || (rideEntry->shop_item[1] == ShopItem::None && GetShopItemDescriptor(shopItem).IsPhoto())) { if (ride.price[1] != _price) { diff --git a/src/openrct2/actions/SetCheatAction.hpp b/src/openrct2/actions/SetCheatAction.hpp index bdc5c7941e..f3d7b8a9fa 100644 --- a/src/openrct2/actions/SetCheatAction.hpp +++ b/src/openrct2/actions/SetCheatAction.hpp @@ -620,15 +620,15 @@ private: peep->CashInPocket = MONEY(1000, 00); break; case OBJECT_PARK_MAP: - peep->ItemStandardFlags |= PEEP_ITEM_MAP; + peep->GiveItem(ShopItem::Map); break; case OBJECT_BALLOON: - peep->ItemStandardFlags |= PEEP_ITEM_BALLOON; + peep->GiveItem(ShopItem::Balloon); peep->BalloonColour = scenario_rand_max(COLOUR_COUNT - 1); peep->UpdateSpriteType(); break; case OBJECT_UMBRELLA: - peep->ItemStandardFlags |= PEEP_ITEM_UMBRELLA; + peep->GiveItem(ShopItem::Umbrella); peep->UmbrellaColour = scenario_rand_max(COLOUR_COUNT - 1); peep->UpdateSpriteType(); break; diff --git a/src/openrct2/management/Award.cpp b/src/openrct2/management/Award.cpp index 418195ac85..45d6cafd82 100644 --- a/src/openrct2/management/Award.cpp +++ b/src/openrct2/management/Award.cpp @@ -293,7 +293,7 @@ static bool award_is_deserved_best_food(int32_t activeAwardTypes) uint32_t shops = 0; uint32_t uniqueShops = 0; - uint32_t shopTypes = 0; + uint64_t shopTypes = 0; for (const auto& ride : GetRideManager()) { if (ride.status != RIDE_STATUS_OPEN) @@ -305,9 +305,9 @@ static bool award_is_deserved_best_food(int32_t activeAwardTypes) auto rideEntry = get_ride_entry(ride.subtype); if (rideEntry != nullptr) { - if (!(shopTypes & (1ULL << rideEntry->shop_item[0]))) + if (!(shopTypes & EnumToFlag(rideEntry->shop_item[0]))) { - shopTypes |= (1ULL << rideEntry->shop_item[0]); + shopTypes |= EnumToFlag(rideEntry->shop_item[0]); uniqueShops++; } } @@ -337,7 +337,7 @@ static bool award_is_deserved_worst_food(int32_t activeAwardTypes) uint32_t shops = 0; uint32_t uniqueShops = 0; - uint32_t shopTypes = 0; + uint64_t shopTypes = 0; for (const auto& ride : GetRideManager()) { if (ride.status != RIDE_STATUS_OPEN) @@ -349,9 +349,9 @@ static bool award_is_deserved_worst_food(int32_t activeAwardTypes) auto rideEntry = ride.GetRideEntry(); if (rideEntry != nullptr) { - if (!(shopTypes & (1ULL << rideEntry->shop_item[0]))) + if (!(shopTypes & EnumToFlag(rideEntry->shop_item[0]))) { - shopTypes |= (1ULL << rideEntry->shop_item[0]); + shopTypes |= EnumToFlag(rideEntry->shop_item[0]); uniqueShops++; } } diff --git a/src/openrct2/management/Marketing.cpp b/src/openrct2/management/Marketing.cpp index 84b63cd42c..39d086e226 100644 --- a/src/openrct2/management/Marketing.cpp +++ b/src/openrct2/management/Marketing.cpp @@ -14,6 +14,7 @@ #include "../config/Config.h" #include "../interface/Window.h" #include "../localisation/Localisation.h" +#include "../peep/Peep.h" #include "../ride/Ride.h" #include "../ride/RideData.h" #include "../ride/ShopItem.h" @@ -82,7 +83,7 @@ static void marketing_raise_finished_notification(const MarketingCampaign& campa } else if (campaign.Type == ADVERTISING_CAMPAIGN_FOOD_OR_DRINK_FREE) { - ft.Add(ShopItems[campaign.ShopItemType].Naming.Plural); + ft.Add(GetShopItemDescriptor(campaign.ShopItemType).Naming.Plural); } News::AddItemToQueue(News::ItemType::Money, MarketingCampaignNames[campaign.Type][2], 0, ft); @@ -135,22 +136,22 @@ void marketing_set_guest_campaign(Peep* peep, int32_t campaignType) switch (campaign->Type) { case ADVERTISING_CAMPAIGN_PARK_ENTRY_FREE: - peep->ItemStandardFlags |= PEEP_ITEM_VOUCHER; + peep->GiveItem(ShopItem::Voucher); peep->VoucherType = VOUCHER_TYPE_PARK_ENTRY_FREE; break; case ADVERTISING_CAMPAIGN_RIDE_FREE: - peep->ItemStandardFlags |= PEEP_ITEM_VOUCHER; + peep->GiveItem(ShopItem::Voucher); peep->VoucherType = VOUCHER_TYPE_RIDE_FREE; peep->VoucherRideId = campaign->RideId; peep->GuestHeadingToRideId = campaign->RideId; peep->GuestIsLostCountdown = 240; break; case ADVERTISING_CAMPAIGN_PARK_ENTRY_HALF_PRICE: - peep->ItemStandardFlags |= PEEP_ITEM_VOUCHER; + peep->GiveItem(ShopItem::Voucher); peep->VoucherType = VOUCHER_TYPE_PARK_ENTRY_HALF_PRICE; break; case ADVERTISING_CAMPAIGN_FOOD_OR_DRINK_FREE: - peep->ItemStandardFlags |= PEEP_ITEM_VOUCHER; + peep->GiveItem(ShopItem::Voucher); peep->VoucherType = VOUCHER_TYPE_FOOD_OR_DRINK_FREE; peep->VoucherShopItem = campaign->ShopItemType; break; @@ -198,7 +199,7 @@ bool marketing_is_campaign_type_applicable(int32_t campaignType) { for (auto& item : rideEntry->shop_item) { - if (ShopItems[item].IsFoodOrDrink()) + if (GetShopItemDescriptor(item).IsFoodOrDrink()) { return true; } diff --git a/src/openrct2/object/RideObject.cpp b/src/openrct2/object/RideObject.cpp index 634b8f22bd..33a6d38428 100644 --- a/src/openrct2/object/RideObject.cpp +++ b/src/openrct2/object/RideObject.cpp @@ -83,8 +83,8 @@ void RideObject::ReadLegacy(IReadObjectContext* context, IStream* stream) _legacyType.max_height = stream->ReadValue(); // Skipping a uint64_t for the enabled track pieces and two uint8_ts for the categories. stream->Seek(10, STREAM_SEEK_CURRENT); - _legacyType.shop_item[0] = stream->ReadValue(); - _legacyType.shop_item[1] = stream->ReadValue(); + _legacyType.shop_item[0] = static_cast(stream->ReadValue()); + _legacyType.shop_item[1] = static_cast(stream->ReadValue()); GetStringTable().Read(context, stream, ObjectStringID::NAME); GetStringTable().Read(context, stream, ObjectStringID::DESCRIPTION); @@ -557,7 +557,7 @@ void RideObject::ReadJson(IReadObjectContext* context, json_t& root) // This needs to be set for both shops/facilities _and_ regular rides. for (auto& item : _legacyType.shop_item) { - item = SHOP_ITEM_NONE; + item = ShopItem::None; } auto carColours = Json::AsArray(properties["carColours"]); @@ -584,7 +584,7 @@ void RideObject::ReadJson(IReadObjectContext* context, json_t& root) for (size_t i = 0; i < numShopItems; i++) { auto shopItem = ParseShopItem(Json::GetString(rideSells[i])); - if (shopItem == SHOP_ITEM_NONE) + if (shopItem == ShopItem::None) { context->LogWarning(ObjectError::InvalidProperty, "Unknown shop item"); } @@ -1037,47 +1037,47 @@ uint8_t RideObject::ParseRideCategory(const std::string& s) return (result != LookupTable.end()) ? result->second : static_cast(RIDE_CATEGORY_TRANSPORT); } -uint8_t RideObject::ParseShopItem(const std::string& s) +ShopItem RideObject::ParseShopItem(const std::string& s) { - static const std::unordered_map LookupTable{ - { "burger", SHOP_ITEM_BURGER }, - { "chips", SHOP_ITEM_CHIPS }, - { "ice_cream", SHOP_ITEM_ICE_CREAM }, - { "candyfloss", SHOP_ITEM_CANDYFLOSS }, - { "pizza", SHOP_ITEM_PIZZA }, - { "popcorn", SHOP_ITEM_POPCORN }, - { "hot_dog", SHOP_ITEM_HOT_DOG }, - { "tentacle", SHOP_ITEM_TENTACLE }, - { "toffee_apple", SHOP_ITEM_TOFFEE_APPLE }, - { "doughnut", SHOP_ITEM_DOUGHNUT }, - { "chicken", SHOP_ITEM_CHICKEN }, - { "pretzel", SHOP_ITEM_PRETZEL }, - { "funnel_cake", SHOP_ITEM_FUNNEL_CAKE }, - { "beef_noodles", SHOP_ITEM_BEEF_NOODLES }, - { "fried_rice_noodles", SHOP_ITEM_FRIED_RICE_NOODLES }, - { "wonton_soup", SHOP_ITEM_WONTON_SOUP }, - { "meatball_soup", SHOP_ITEM_MEATBALL_SOUP }, - { "sub_sandwich", SHOP_ITEM_SUB_SANDWICH }, - { "cookie", SHOP_ITEM_COOKIE }, - { "roast_sausage", SHOP_ITEM_ROAST_SAUSAGE }, - { "drink", SHOP_ITEM_DRINK }, - { "coffee", SHOP_ITEM_COFFEE }, - { "lemonade", SHOP_ITEM_LEMONADE }, - { "chocolate", SHOP_ITEM_CHOCOLATE }, - { "iced_tea", SHOP_ITEM_ICED_TEA }, - { "fruit_juice", SHOP_ITEM_FRUIT_JUICE }, - { "soybean_milk", SHOP_ITEM_SOYBEAN_MILK }, - { "sujeonggwa", SHOP_ITEM_SUJEONGGWA }, - { "balloon", SHOP_ITEM_BALLOON }, - { "toy", SHOP_ITEM_TOY }, - { "map", SHOP_ITEM_MAP }, - { "photo", SHOP_ITEM_PHOTO }, - { "umbrella", SHOP_ITEM_UMBRELLA }, - { "voucher", SHOP_ITEM_VOUCHER }, - { "hat", SHOP_ITEM_HAT }, - { "tshirt", SHOP_ITEM_TSHIRT }, - { "sunglasses", SHOP_ITEM_SUNGLASSES }, + static const std::unordered_map LookupTable{ + { "burger", ShopItem::Burger }, + { "chips", ShopItem::Chips }, + { "ice_cream", ShopItem::IceCream }, + { "candyfloss", ShopItem::Candyfloss }, + { "pizza", ShopItem::Pizza }, + { "popcorn", ShopItem::Popcorn }, + { "hot_dog", ShopItem::HotDog }, + { "tentacle", ShopItem::Tentacle }, + { "toffee_apple", ShopItem::ToffeeApple }, + { "doughnut", ShopItem::Doughnut }, + { "chicken", ShopItem::Chicken }, + { "pretzel", ShopItem::Pretzel }, + { "funnel_cake", ShopItem::FunnelCake }, + { "beef_noodles", ShopItem::BeefNoodles }, + { "fried_rice_noodles", ShopItem::FriedRiceNoodles }, + { "wonton_soup", ShopItem::WontonSoup }, + { "meatball_soup", ShopItem::MeatballSoup }, + { "sub_sandwich", ShopItem::SubSandwich }, + { "cookie", ShopItem::Cookie }, + { "roast_sausage", ShopItem::RoastSausage }, + { "drink", ShopItem::Drink }, + { "coffee", ShopItem::Coffee }, + { "lemonade", ShopItem::Lemonade }, + { "chocolate", ShopItem::Chocolate }, + { "iced_tea", ShopItem::IcedTea }, + { "fruit_juice", ShopItem::FruitJuice }, + { "soybean_milk", ShopItem::SoybeanMilk }, + { "sujeonggwa", ShopItem::SuJeongGwa }, + { "balloon", ShopItem::Balloon }, + { "toy", ShopItem::Toy }, + { "map", ShopItem::Map }, + { "photo", ShopItem::Photo }, + { "umbrella", ShopItem::Umbrella }, + { "voucher", ShopItem::Voucher }, + { "hat", ShopItem::Hat }, + { "tshirt", ShopItem::TShirt }, + { "sunglasses", ShopItem::Sunglasses }, }; auto result = LookupTable.find(s); - return (result != LookupTable.end()) ? result->second : static_cast(SHOP_ITEM_NONE); + return (result != LookupTable.end()) ? result->second : ShopItem::None; } diff --git a/src/openrct2/object/RideObject.h b/src/openrct2/object/RideObject.h index 3ad1dd15c1..c85ebf7bba 100644 --- a/src/openrct2/object/RideObject.h +++ b/src/openrct2/object/RideObject.h @@ -61,6 +61,6 @@ private: static bool IsRideTypeShopOrFacility(uint8_t rideType); static uint8_t ParseRideType(const std::string& s); static uint8_t ParseRideCategory(const std::string& s); - static uint8_t ParseShopItem(const std::string& s); + static ShopItem ParseShopItem(const std::string& s); static colour_t ParseColour(const std::string& s); }; diff --git a/src/openrct2/peep/Guest.cpp b/src/openrct2/peep/Guest.cpp index fd01d5f3c1..9c256ec0d5 100644 --- a/src/openrct2/peep/Guest.cpp +++ b/src/openrct2/peep/Guest.cpp @@ -156,118 +156,118 @@ static constexpr const ride_rating NauseaMaximumThresholds[] = { /** rct2: 0x0097EFCC */ static constexpr const uint8_t item_standard_litter[32] = { - LITTER_TYPE_RUBBISH, // PEEP_ITEM_BALLOON - LITTER_TYPE_RUBBISH, // PEEP_ITEM_TOY - LITTER_TYPE_RUBBISH, // PEEP_ITEM_MAP - LITTER_TYPE_RUBBISH, // PEEP_ITEM_PHOTO - LITTER_TYPE_RUBBISH, // PEEP_ITEM_UMBRELLA - LITTER_TYPE_RUBBISH, // PEEP_ITEM_DRINK - LITTER_TYPE_RUBBISH, // PEEP_ITEM_BURGER - LITTER_TYPE_RUBBISH, // PEEP_ITEM_CHIPS - LITTER_TYPE_RUBBISH, // PEEP_ITEM_ICE_CREAM - LITTER_TYPE_RUBBISH, // PEEP_ITEM_CANDYFLOSS - LITTER_TYPE_EMPTY_CAN, // PEEP_ITEM_EMPTY_CAN - LITTER_TYPE_RUBBISH, // PEEP_ITEM_RUBBISH - LITTER_TYPE_EMPTY_BURGER_BOX, // PEEP_ITEM_EMPTY_BURGER_BOX - LITTER_TYPE_RUBBISH, // PEEP_ITEM_PIZZA - LITTER_TYPE_RUBBISH, // PEEP_ITEM_VOUCHER - LITTER_TYPE_RUBBISH, // PEEP_ITEM_POPCORN - LITTER_TYPE_RUBBISH, // PEEP_ITEM_HOT_DOG - LITTER_TYPE_RUBBISH, // PEEP_ITEM_TENTACLE - LITTER_TYPE_RUBBISH, // PEEP_ITEM_HAT - LITTER_TYPE_RUBBISH, // PEEP_ITEM_TOFFEE_APPLE - LITTER_TYPE_RUBBISH, // PEEP_ITEM_TSHIRT - LITTER_TYPE_RUBBISH, // PEEP_ITEM_DOUGHNUT - LITTER_TYPE_RUBBISH, // PEEP_ITEM_COFFEE - LITTER_TYPE_EMPTY_CUP, // PEEP_ITEM_EMPTY_CUP - LITTER_TYPE_EMPTY_BOX, // PEEP_ITEM_CHICKEN - LITTER_TYPE_EMPTY_BOTTLE, // PEEP_ITEM_LEMONADE - LITTER_TYPE_EMPTY_BOX, // PEEP_ITEM_EMPTY_BOX - LITTER_TYPE_EMPTY_BOTTLE, // PEEP_ITEM_EMPTY_BOTTLE + LITTER_TYPE_RUBBISH, // ShopItem::Balloon + LITTER_TYPE_RUBBISH, // ShopItem::Toy + LITTER_TYPE_RUBBISH, // ShopItem::Map + LITTER_TYPE_RUBBISH, // ShopItem::Photo + LITTER_TYPE_RUBBISH, // ShopItem::Umbrella + LITTER_TYPE_RUBBISH, // ShopItem::Drink + LITTER_TYPE_RUBBISH, // ShopItem::Burger + LITTER_TYPE_RUBBISH, // ShopItem::Chips + LITTER_TYPE_RUBBISH, // ShopItem::IceCream + LITTER_TYPE_RUBBISH, // ShopItem::Candyfloss + LITTER_TYPE_EMPTY_CAN, // ShopItem::EmptyCan + LITTER_TYPE_RUBBISH, // ShopItem::Rubbish + LITTER_TYPE_EMPTY_BURGER_BOX, // ShopItem::EmptyBurgerBox + LITTER_TYPE_RUBBISH, // ShopItem::Pizza + LITTER_TYPE_RUBBISH, // ShopItem::Voucher + LITTER_TYPE_RUBBISH, // ShopItem::Popcorn + LITTER_TYPE_RUBBISH, // ShopItem::HotDog + LITTER_TYPE_RUBBISH, // ShopItem::Tentacle + LITTER_TYPE_RUBBISH, // ShopItem::Hat + LITTER_TYPE_RUBBISH, // ShopItem::ToffeeApple + LITTER_TYPE_RUBBISH, // ShopItem::TShirt + LITTER_TYPE_RUBBISH, // ShopItem::Doughnut + LITTER_TYPE_RUBBISH, // ShopItem::Coffee + LITTER_TYPE_EMPTY_CUP, // ShopItem::EmptyCup + LITTER_TYPE_EMPTY_BOX, // ShopItem::Chicken + LITTER_TYPE_EMPTY_BOTTLE, // ShopItem::Lemonade + LITTER_TYPE_EMPTY_BOX, // ShopItem::EmptyBox + LITTER_TYPE_EMPTY_BOTTLE, // ShopItem::EmptyBottle }; /** rct2: 0x0097EFE8 */ static constexpr const uint8_t item_extra_litter[32] = { - LITTER_TYPE_RUBBISH, // PEEP_ITEM_PHOTO2 - LITTER_TYPE_RUBBISH, // PEEP_ITEM_PHOTO3 - LITTER_TYPE_RUBBISH, // PEEP_ITEM_PHOTO4 - LITTER_TYPE_RUBBISH, // PEEP_ITEM_PRETZEL - LITTER_TYPE_RUBBISH, // PEEP_ITEM_CHOCOLATE - LITTER_TYPE_RUBBISH, // PEEP_ITEM_ICED_TEA - LITTER_TYPE_RUBBISH, // PEEP_ITEM_FUNNEL_CAKE - LITTER_TYPE_RUBBISH, // PEEP_ITEM_SUNGLASSES - LITTER_TYPE_RUBBISH, // PEEP_ITEM_BEEF_NOODLES - LITTER_TYPE_RUBBISH, // PEEP_ITEM_FRIED_RICE_NOODLES - LITTER_TYPE_RUBBISH, // PEEP_ITEM_WONTON_SOUP - LITTER_TYPE_RUBBISH, // PEEP_ITEM_MEATBALL_SOUP - LITTER_TYPE_RUBBISH, // PEEP_ITEM_FRUIT_JUICE - LITTER_TYPE_RUBBISH, // PEEP_ITEM_SOYBEAN_MILK - LITTER_TYPE_RUBBISH, // PEEP_ITEM_SU_JONGKWA - LITTER_TYPE_RUBBISH, // PEEP_ITEM_SUB_SANDWICH - LITTER_TYPE_RUBBISH, // PEEP_ITEM_COOKIE - LITTER_TYPE_EMPTY_BOWL_RED, // PEEP_ITEM_EMPTY_BOWL_RED - LITTER_TYPE_EMPTY_DRINK_CARTON, // PEEP_ITEM_EMPTY_DRINK_CARTON - LITTER_TYPE_EMPTY_JUICE_CUP, // PEEP_ITEM_EMPTY_JUICE_CUP - LITTER_TYPE_RUBBISH, // PEEP_ITEM_ROAST_SAUSAGE - LITTER_TYPE_EMPTY_BOWL_BLUE, // PEEP_ITEM_EMPTY_BOWL_BLUE + LITTER_TYPE_RUBBISH, // ShopItem::Photo2 + LITTER_TYPE_RUBBISH, // ShopItem::Photo3 + LITTER_TYPE_RUBBISH, // ShopItem::Photo4 + LITTER_TYPE_RUBBISH, // ShopItem::Pretzel + LITTER_TYPE_RUBBISH, // ShopItem::Chocolate + LITTER_TYPE_RUBBISH, // ShopItem::IcedTea + LITTER_TYPE_RUBBISH, // ShopItem::FunnelCake + LITTER_TYPE_RUBBISH, // ShopItem::Sunglasses + LITTER_TYPE_RUBBISH, // ShopItem::BeefNoodles + LITTER_TYPE_RUBBISH, // ShopItem::FriedRiceNoodles + LITTER_TYPE_RUBBISH, // ShopItem::WontonSoup + LITTER_TYPE_RUBBISH, // ShopItem::MeatballSoup + LITTER_TYPE_RUBBISH, // ShopItem::FruitJuice + LITTER_TYPE_RUBBISH, // ShopItem::SoybeanMilk + LITTER_TYPE_RUBBISH, // ShopItem::SuJeongGwa + LITTER_TYPE_RUBBISH, // ShopItem::SubSandwich + LITTER_TYPE_RUBBISH, // ShopItem::Cookie + LITTER_TYPE_EMPTY_BOWL_RED, // ShopItem::EmptyBowlRed + LITTER_TYPE_EMPTY_DRINK_CARTON, // ShopItem::EmptyDrinkCarton + LITTER_TYPE_EMPTY_JUICE_CUP, // ShopItem::EmptyJuiceCup + LITTER_TYPE_RUBBISH, // ShopItem::RoastSausage + LITTER_TYPE_EMPTY_BOWL_BLUE, // ShopItem::EmptyBowlBlue }; /** rct2: 0x009822F4, 0x00982310 */ static constexpr const uint8_t item_consumption_time[] = { - 0, // SHOP_ITEM_BALLOON - 0, // SHOP_ITEM_TOY - 0, // SHOP_ITEM_MAP - 0, // SHOP_ITEM_PHOTO - 0, // SHOP_ITEM_UMBRELLA - 100, // SHOP_ITEM_DRINK - 150, // SHOP_ITEM_BURGER - 120, // SHOP_ITEM_CHIPS - 60, // SHOP_ITEM_ICE_CREAM - 50, // SHOP_ITEM_CANDYFLOSS - 0, // SHOP_ITEM_EMPTY_CAN - 0, // SHOP_ITEM_RUBBISH - 0, // SHOP_ITEM_EMPTY_BURGER_BOX - 150, // SHOP_ITEM_PIZZA - 0, // SHOP_ITEM_VOUCHER - 75, // SHOP_ITEM_POPCORN - 133, // SHOP_ITEM_HOT_DOG - 110, // SHOP_ITEM_TENTACLE - 0, // SHOP_ITEM_HAT - 50, // SHOP_ITEM_TOFFEE_APPLE - 0, // SHOP_ITEM_TSHIRT - 80, // SHOP_ITEM_DOUGHNUT - 90, // SHOP_ITEM_COFFEE - 0, // SHOP_ITEM_EMPTY_CUP - 170, // SHOP_ITEM_CHICKEN - 115, // SHOP_ITEM_LEMONADE - 0, // SHOP_ITEM_EMPTY_BOX - 0, // SHOP_ITEM_EMPTY_BOTTLE + 0, // ShopItem::Balloon + 0, // ShopItem::Toy + 0, // ShopItem::Map + 0, // ShopItem::Photo + 0, // ShopItem::Umbrella + 100, // ShopItem::Drink + 150, // ShopItem::Burger + 120, // ShopItem::Chips + 60, // ShopItem::IceCream + 50, // ShopItem::Candyfloss + 0, // ShopItem::EmptyCan + 0, // ShopItem::Rubbish + 0, // ShopItem::EmptyBurgerBox + 150, // ShopItem::Pizza + 0, // ShopItem::Voucher + 75, // ShopItem::Popcorn + 133, // ShopItem::HotDog + 110, // ShopItem::Tentacle + 0, // ShopItem::Hat + 50, // ShopItem::ToffeeApple + 0, // ShopItem::TShirt + 80, // ShopItem::Doughnut + 90, // ShopItem::Coffee + 0, // ShopItem::EmptyCup + 170, // ShopItem::Chicken + 115, // ShopItem::Lemonade + 0, // ShopItem::EmptyBox + 0, // ShopItem::EmptyBottle 0xFF, // UNUSED 0xFF, // UNUSED 0xFF, // UNUSED 0xFF, // UNUSED - 0, // SHOP_ITEM_PHOTO2 - 0, // SHOP_ITEM_PHOTO3 - 0, // SHOP_ITEM_PHOTO4 - 70, // SHOP_ITEM_PRETZEL - 85, // SHOP_ITEM_CHOCOLATE - 95, // SHOP_ITEM_ICED_TEA - 90, // SHOP_ITEM_FUNNEL_CAKE - 0, // SHOP_ITEM_SUNGLASSES - 130, // SHOP_ITEM_BEEF_NOODLES - 120, // SHOP_ITEM_FRIED_RICE_NOODLES - 100, // SHOP_ITEM_WONTON_SOUP - 110, // SHOP_ITEM_MEATBALL_SOUP - 110, // SHOP_ITEM_FRUIT_JUICE - 90, // SHOP_ITEM_SOYBEAN_MILK - 100, // SHOP_ITEM_SU_JONGKWA - 130, // SHOP_ITEM_SUB_SANDWICH - 75, // SHOP_ITEM_COOKIE - 0, // SHOP_ITEM_EMPTY_BOWL_RED - 0, // SHOP_ITEM_EMPTY_DRINK_CARTON - 0, // SHOP_ITEM_EMPTY_JUICE_CUP - 115, // SHOP_ITEM_ROAST_SAUSAGE - 0 // SHOP_ITEM_EMPTY_BOWL_BLUE + 0, // ShopItem::Photo2 + 0, // ShopItem::Photo3 + 0, // ShopItem::Photo4 + 70, // ShopItem::Pretzel + 85, // ShopItem::Chocolate + 95, // ShopItem::IcedTea + 90, // ShopItem::FunnelCake + 0, // ShopItem::Sunglasses + 130, // ShopItem::BeefNoodles + 120, // ShopItem::FriedRiceNoodles + 100, // ShopItem::WontonSoup + 110, // ShopItem::MeatballSoup + 110, // ShopItem::FruitJuice + 90, // ShopItem::SoybeanMilk + 100, // ShopItem::SHOP_ITEM_SU_JONGKWA + 130, // ShopItem::SubSandwich + 75, // ShopItem::Cookie + 0, // ShopItem::EmptyBowlRed + 0, // ShopItem::EmptyDrinkCarton + 0, // ShopItem::EmptyJuiceCup + 115, // ShopItem::RoastSausage + 0 // ShopItem::EmptyBowlBlue }; /** rct2: 009823AC */ @@ -292,60 +292,60 @@ static constexpr const PeepThoughtType crowded_thoughts[] = { /** rct2: 0x00982326 */ static constexpr const uint8_t peep_item_containers[] = { - 0xFF, // PEEP_ITEM_BALLOON - 0xFF, // PEEP_ITEM_TOY - 0xFF, // PEEP_ITEM_MAP - 0xFF, // PEEP_ITEM_PHOTO - 0xFF, // PEEP_ITEM_UMBRELLA - SHOP_ITEM_EMPTY_CAN, // PEEP_ITEM_DRINK - SHOP_ITEM_EMPTY_BURGER_BOX, // PEEP_ITEM_BURGER - SHOP_ITEM_RUBBISH, // PEEP_ITEM_CHIPS - 0xFF, // PEEP_ITEM_ICE_CREAM - 0xFF, // PEEP_ITEM_CANDYFLOSS - 0xFF, // PEEP_ITEM_EMPTY_CAN - 0xFF, // PEEP_ITEM_RUBBISH - 0xFF, // PEEP_ITEM_EMPTY_BURGER_BOX - SHOP_ITEM_RUBBISH, // PEEP_ITEM_PIZZA - 0xFF, // PEEP_ITEM_VOUCHER - SHOP_ITEM_RUBBISH, // PEEP_ITEM_POPCORN - 0xFF, // PEEP_ITEM_HOT_DOG - 0xFF, // PEEP_ITEM_TENTACLE - 0xFF, // PEEP_ITEM_HAT - 0xFF, // PEEP_ITEM_TOFFEE_APPLE - 0xFF, // PEEP_ITEM_TSHIRT - 0xFF, // PEEP_ITEM_DOUGHNUT - SHOP_ITEM_EMPTY_CUP, // PEEP_ITEM_COFFEE - 0xFF, // PEEP_ITEM_EMPTY_CUP - SHOP_ITEM_EMPTY_BOX, // PEEP_ITEM_CHICKEN - SHOP_ITEM_EMPTY_BOTTLE, // PEEP_ITEM_LEMONADE - 0xFF, // PEEP_ITEM_EMPTY_BOX - 0xFF, // PEEP_ITEM_EMPTY_BOTTLE + 0xFF, // ShopItem::Balloon + 0xFF, // ShopItem::Toy + 0xFF, // ShopItem::Map + 0xFF, // ShopItem::Photo + 0xFF, // ShopItem::Umbrella + EnumValue(ShopItem::EmptyCan), // ShopItem::Drink + EnumValue(ShopItem::EmptyBurgerBox), // ShopItem::Burger + EnumValue(ShopItem::Rubbish), // ShopItem::Chips + 0xFF, // ShopItem::IceCream + 0xFF, // ShopItem::Candyfloss + 0xFF, // ShopItem::EmptyCan + 0xFF, // ShopItem::Rubbish + 0xFF, // ShopItem::EmptyBurgerBox + EnumValue(ShopItem::Rubbish), // ShopItem::Pizza + 0xFF, // ShopItem::Voucher + EnumValue(ShopItem::Rubbish), // ShopItem::Popcorn + 0xFF, // ShopItem::HotDog + 0xFF, // ShopItem::Tentacle + 0xFF, // ShopItem::Hat + 0xFF, // ShopItem::ToffeeApple + 0xFF, // ShopItem::TShirt + 0xFF, // ShopItem::Doughnut + EnumValue(ShopItem::EmptyCup), // ShopItem::Coffee + 0xFF, // ShopItem::EmptyCup + EnumValue(ShopItem::EmptyBox), // ShopItem::Chicken + EnumValue(ShopItem::EmptyBottle), // ShopItem::Lemonade + 0xFF, // ShopItem::EmptyBox + 0xFF, // ShopItem::EmptyBottle }; /** rct2: 0x00982342 */ static constexpr const uint8_t peep_extra_item_containers[] = { - 0xFF, // PEEP_ITEM_PHOTO2 - 0xFF, // PEEP_ITEM_PHOTO3 - 0xFF, // PEEP_ITEM_PHOTO4 - 0xFF, // PEEP_ITEM_PRETZEL - SHOP_ITEM_EMPTY_CUP, // PEEP_ITEM_CHOCOLATE - SHOP_ITEM_EMPTY_CUP, // PEEP_ITEM_ICED_TEA - 0xFF, // PEEP_ITEM_FUNNEL_CAKE - 0xFF, // PEEP_ITEM_SUNGLASSES - SHOP_ITEM_EMPTY_BOWL_BLUE, // PEEP_ITEM_BEEF_NOODLES - SHOP_ITEM_EMPTY_BOWL_BLUE, // PEEP_ITEM_FRIED_RICE_NOODLES - SHOP_ITEM_EMPTY_BOWL_RED, // PEEP_ITEM_WONTON_SOUP - SHOP_ITEM_EMPTY_BOWL_RED, // PEEP_ITEM_MEATBALL_SOUP - SHOP_ITEM_EMPTY_JUICE_CUP, // PEEP_ITEM_FRUIT_JUICE - SHOP_ITEM_EMPTY_DRINK_CARTON, // PEEP_ITEM_SOYBEAN_MILK - SHOP_ITEM_EMPTY_DRINK_CARTON, // PEEP_ITEM_SU_JONGKWA - 0xFF, // PEEP_ITEM_SUB_SANDWICH - 0xFF, // PEEP_ITEM_COOKIE - 0xFF, // PEEP_ITEM_EMPTY_BOWL_RED - 0xFF, // PEEP_ITEM_EMPTY_DRINK_CARTON - 0xFF, // PEEP_ITEM_EMPTY_JUICE_CUP - 0xFF, // PEEP_ITEM_ROAST_SAUSAGE - 0xFF, // PEEP_ITEM_EMPTY_BOWL_BLUE + 0xFF, // ShopItem::Photo2 + 0xFF, // ShopItem::Photo3 + 0xFF, // ShopItem::Photo4 + 0xFF, // ShopItem::Pretzel + EnumValue(ShopItem::EmptyCup), // ShopItem::Chocolate + EnumValue(ShopItem::EmptyCup), // ShopItem::IcedTea + 0xFF, // ShopItem::FunnelCake + 0xFF, // ShopItem::Sunglasses + EnumValue(ShopItem::EmptyBowlBlue), // ShopItem::BeefNoodles + EnumValue(ShopItem::EmptyBowlBlue), // ShopItem::FriedRiceNoodles + EnumValue(ShopItem::EmptyBowlRed), // ShopItem::WontonSoup + EnumValue(ShopItem::EmptyBowlRed), // ShopItem::MeatballSoup + EnumValue(ShopItem::EmptyJuiceCup), // ShopItem::FruitJuice + EnumValue(ShopItem::EmptyDrinkCarton), // ShopItem::SoybeanMilk + EnumValue(ShopItem::EmptyDrinkCarton), // ShopItem::SuJeongGwa + 0xFF, // ShopItem::SubSandwich + 0xFF, // ShopItem::Cookie + 0xFF, // ShopItem::EmptyBowlRed + 0xFF, // ShopItem::EmptyDrinkCarton + 0xFF, // ShopItem::EmptyJuiceCup + 0xFF, // ShopItem::RoastSausage + 0xFF, // EmptyBowlBlue }; static constexpr const char *gPeepEasterEggNames[] = { @@ -448,10 +448,10 @@ void Guest::GivePassingPeepsPurpleClothes(Guest* passingPeep) void Guest::GivePassingPeepsPizza(Guest* passingPeep) { - if ((passingPeep->ItemStandardFlags & PEEP_ITEM_PIZZA)) + if (passingPeep->HasItem(ShopItem::Pizza)) return; - passingPeep->ItemStandardFlags |= PEEP_ITEM_PIZZA; + passingPeep->GiveItem(ShopItem::Pizza); int32_t peepDirection = (sprite_direction >> 3) ^ 2; int32_t otherPeepOppositeDirection = passingPeep->sprite_direction >> 3; @@ -487,10 +487,10 @@ void Guest::GivePassingPeepsIceCream(Guest* passingPeep) { if (this == passingPeep) return; - if (passingPeep->ItemStandardFlags & PEEP_ITEM_ICE_CREAM) + if (passingPeep->HasItem(ShopItem::IceCream)) return; - passingPeep->ItemStandardFlags |= PEEP_ITEM_ICE_CREAM; + passingPeep->GiveItem(ShopItem::IceCream); passingPeep->UpdateSpriteType(); } @@ -766,12 +766,12 @@ void Guest::loc_68FA89() int32_t chosen_food = bitscanforward(HasFoodStandardFlag()); if (chosen_food != -1) { - ItemStandardFlags &= ~(1 << chosen_food); + RemoveItem(static_cast(chosen_food)); uint8_t discard_container = peep_item_containers[chosen_food]; if (discard_container != 0xFF) { - ItemStandardFlags |= (1 << discard_container); + GiveItem(static_cast(discard_container)); } WindowInvalidateFlags |= PEEP_INVALIDATE_PEEP_INVENTORY; @@ -782,14 +782,11 @@ void Guest::loc_68FA89() chosen_food = bitscanforward(HasFoodExtraFlag()); if (chosen_food != -1) { - ItemExtraFlags &= ~(1 << chosen_food); + RemoveItem(static_cast(chosen_food + 32)); uint8_t discard_container = peep_extra_item_containers[chosen_food]; if (discard_container != 0xFF) { - if (discard_container >= 32) - ItemExtraFlags |= (1 << (discard_container - 32)); - else - ItemStandardFlags |= (1 << discard_container); + GiveItem(static_cast(discard_container)); } WindowInvalidateFlags |= PEEP_INVALIDATE_PEEP_INVENTORY; @@ -1002,7 +999,7 @@ void Guest::Tick128UpdateGuest(int32_t index) } } - if ((scenario_rand() & 0xFFFF) <= ((ItemStandardFlags & PEEP_ITEM_MAP) ? 8192U : 2184U)) + if ((scenario_rand() & 0xFFFF) <= ((HasItem(ShopItem::Map)) ? 8192U : 2184U)) { PickRideToGoOn(); } @@ -1326,44 +1323,22 @@ void Guest::UpdateSitting() } } -bool Guest::HasItem(int32_t peepItem) const -{ - if (peepItem < 32) - { - return ItemStandardFlags & (1u << peepItem); - } - else - { - return ItemExtraFlags & (1u << (peepItem - 32)); - } -} - int32_t Guest::HasFoodStandardFlag() const { - return ItemStandardFlags - & (PEEP_ITEM_DRINK | PEEP_ITEM_BURGER | PEEP_ITEM_CHIPS | PEEP_ITEM_ICE_CREAM | PEEP_ITEM_CANDYFLOSS | PEEP_ITEM_PIZZA - | PEEP_ITEM_POPCORN | PEEP_ITEM_HOT_DOG | PEEP_ITEM_TENTACLE | PEEP_ITEM_TOFFEE_APPLE | PEEP_ITEM_DOUGHNUT - | PEEP_ITEM_COFFEE | PEEP_ITEM_CHICKEN | PEEP_ITEM_LEMONADE); + return GetItemFlags() + & EnumsToFlags( + ShopItem::Drink, ShopItem::Burger, ShopItem::Chips, ShopItem::IceCream, ShopItem::Candyfloss, ShopItem::Pizza, + ShopItem::Popcorn, ShopItem::HotDog, ShopItem::Tentacle, ShopItem::ToffeeApple, ShopItem::Doughnut, + ShopItem::Coffee, ShopItem::Chicken, ShopItem::Lemonade); } int32_t Guest::HasFoodExtraFlag() const { - return ItemExtraFlags - & (PEEP_ITEM_PRETZEL | PEEP_ITEM_CHOCOLATE | PEEP_ITEM_ICED_TEA | PEEP_ITEM_FUNNEL_CAKE | PEEP_ITEM_BEEF_NOODLES - | PEEP_ITEM_FRIED_RICE_NOODLES | PEEP_ITEM_WONTON_SOUP | PEEP_ITEM_MEATBALL_SOUP | PEEP_ITEM_FRUIT_JUICE - | PEEP_ITEM_SOYBEAN_MILK | PEEP_ITEM_SU_JONGKWA | PEEP_ITEM_SUB_SANDWICH | PEEP_ITEM_COOKIE - | PEEP_ITEM_ROAST_SAUSAGE); -} - -bool Guest::HasDrinkStandardFlag() const -{ - return ItemStandardFlags & (PEEP_ITEM_DRINK | PEEP_ITEM_COFFEE | PEEP_ITEM_LEMONADE); -} - -bool Guest::HasDrinkExtraFlag() const -{ - return ItemExtraFlags - & (PEEP_ITEM_CHOCOLATE | PEEP_ITEM_ICED_TEA | PEEP_ITEM_FRUIT_JUICE | PEEP_ITEM_SOYBEAN_MILK | PEEP_ITEM_SU_JONGKWA); + return GetItemFlags() + & EnumsToFlags( + ShopItem::Pretzel, ShopItem::Chocolate, ShopItem::IcedTea, ShopItem::FunnelCake, ShopItem::BeefNoodles, + ShopItem::FriedRiceNoodles, ShopItem::WontonSoup, ShopItem::MeatballSoup, ShopItem::FruitJuice, + ShopItem::SoybeanMilk, ShopItem::SuJeongGwa, ShopItem::SubSandwich, ShopItem::Cookie, ShopItem::RoastSausage); } /** @@ -1372,20 +1347,24 @@ bool Guest::HasDrinkExtraFlag() const */ bool Guest::HasDrink() const { - return HasDrinkStandardFlag() || HasDrinkExtraFlag(); + return GetItemFlags() + & EnumsToFlags( + ShopItem::Drink, ShopItem::Coffee, ShopItem::Lemonade, ShopItem::Chocolate, ShopItem::IcedTea, + ShopItem::FruitJuice, ShopItem::SoybeanMilk, ShopItem::SuJeongGwa); } int32_t Guest::HasEmptyContainerStandardFlag() const { - return ItemStandardFlags - & (PEEP_ITEM_EMPTY_CAN | PEEP_ITEM_EMPTY_BURGER_BOX | PEEP_ITEM_EMPTY_CUP | PEEP_ITEM_RUBBISH | PEEP_ITEM_EMPTY_BOX - | PEEP_ITEM_EMPTY_BOTTLE); + return GetItemFlags() + & EnumsToFlags( + ShopItem::EmptyCan, ShopItem::EmptyBurgerBox, ShopItem::EmptyCup, ShopItem::Rubbish, ShopItem::EmptyBox, + ShopItem::EmptyBottle); } int32_t Guest::HasEmptyContainerExtraFlag() const { - return ItemExtraFlags - & (PEEP_ITEM_EMPTY_BOWL_RED | PEEP_ITEM_EMPTY_DRINK_CARTON | PEEP_ITEM_EMPTY_JUICE_CUP | PEEP_ITEM_EMPTY_BOWL_BLUE); + return GetItemFlags() + & EnumsToFlags(ShopItem::EmptyBowlRed, ShopItem::EmptyDrinkCarton, ShopItem::EmptyJuiceCup, ShopItem::EmptyBowlBlue); } bool Guest::HasEmptyContainer() const @@ -1485,27 +1464,26 @@ void Guest::CheckCantFindExit() * * rct2: 0x0069AF1E */ -bool Guest::DecideAndBuyItem(Ride* ride, int32_t shopItem, money32 price) +bool Guest::DecideAndBuyItem(Ride* ride, ShopItem shopItem, money32 price) { money32 itemValue; bool hasVoucher = false; - bool isRainingAndUmbrella = shopItem == SHOP_ITEM_UMBRELLA && climate_is_raining(); + bool isRainingAndUmbrella = shopItem == ShopItem::Umbrella && climate_is_raining(); - if ((ItemStandardFlags & PEEP_ITEM_VOUCHER) && (VoucherType == VOUCHER_TYPE_FOOD_OR_DRINK_FREE) - && (VoucherShopItem == shopItem)) + if ((HasItem(ShopItem::Voucher)) && (VoucherType == VOUCHER_TYPE_FOOD_OR_DRINK_FREE) && (VoucherShopItem == shopItem)) { hasVoucher = true; } if (HasItem(shopItem)) { - InsertNewThought(PEEP_THOUGHT_TYPE_ALREADY_GOT, shopItem); + InsertNewThought(PEEP_THOUGHT_TYPE_ALREADY_GOT, EnumValue(shopItem)); return false; } - if (ShopItems[shopItem].IsFoodOrDrink()) + if (GetShopItemDescriptor(shopItem).IsFoodOrDrink()) { int32_t food = -1; if ((food = HasFoodStandardFlag()) != 0) @@ -1522,31 +1500,31 @@ bool Guest::DecideAndBuyItem(Ride* ride, int32_t shopItem, money32 price) return false; } - if ((shopItem == SHOP_ITEM_BALLOON || shopItem == SHOP_ITEM_ICE_CREAM || shopItem == SHOP_ITEM_CANDYFLOSS - || shopItem == SHOP_ITEM_SUNGLASSES) + if ((shopItem == ShopItem::Balloon || shopItem == ShopItem::IceCream || shopItem == ShopItem::Candyfloss + || shopItem == ShopItem::Sunglasses) && climate_is_raining()) { return false; } - if ((shopItem == SHOP_ITEM_SUNGLASSES || shopItem == SHOP_ITEM_ICE_CREAM) && gClimateCurrent.Temperature < 12) + if ((shopItem == ShopItem::Sunglasses || shopItem == ShopItem::IceCream) && gClimateCurrent.Temperature < 12) { return false; } - if (ShopItems[shopItem].IsFood() && (Hunger > 75)) + if (GetShopItemDescriptor(shopItem).IsFood() && (Hunger > 75)) { InsertNewThought(PEEP_THOUGHT_TYPE_NOT_HUNGRY, PEEP_THOUGHT_ITEM_NONE); return false; } - if (ShopItems[shopItem].IsDrink() && (Thirst > 75)) + if (GetShopItemDescriptor(shopItem).IsDrink() && (Thirst > 75)) { InsertNewThought(PEEP_THOUGHT_TYPE_NOT_THIRSTY, PEEP_THOUGHT_ITEM_NONE); return false; } - if (!isRainingAndUmbrella && (shopItem != SHOP_ITEM_MAP) && ShopItems[shopItem].IsSouvenir() && !hasVoucher) + if (!isRainingAndUmbrella && (shopItem != ShopItem::Map) && GetShopItemDescriptor(shopItem).IsSouvenir() && !hasVoucher) { if (((scenario_rand() & 0x7F) + 0x73) > Happiness || GuestNumRides < 3) return false; @@ -1563,17 +1541,17 @@ bool Guest::DecideAndBuyItem(Ride* ride, int32_t shopItem, money32 price) } if (price > CashInPocket) { - InsertNewThought(PEEP_THOUGHT_TYPE_CANT_AFFORD, shopItem); + InsertNewThought(PEEP_THOUGHT_TYPE_CANT_AFFORD, EnumValue(shopItem)); return false; } } if (gClimateCurrent.Temperature >= 21) - itemValue = ShopItems[shopItem].HotValue; + itemValue = GetShopItemDescriptor(shopItem).HotValue; else if (gClimateCurrent.Temperature <= 11) - itemValue = ShopItems[shopItem].ColdValue; + itemValue = GetShopItemDescriptor(shopItem).ColdValue; else - itemValue = ShopItems[shopItem].BaseValue; + itemValue = GetShopItemDescriptor(shopItem).BaseValue; if (itemValue < price) { @@ -1592,8 +1570,9 @@ bool Guest::DecideAndBuyItem(Ride* ride, int32_t shopItem, money32 price) { // "I'm not paying that much for x" PeepThoughtType thought_type = static_cast( - (shopItem >= 32 ? (PEEP_THOUGHT_TYPE_PHOTO2_MUCH + (shopItem - 32)) - : (PEEP_THOUGHT_TYPE_BALLOON_MUCH + shopItem))); + shopItem >= ShopItem::Photo2 + ? PEEP_THOUGHT_TYPE_PHOTO2_MUCH + static_cast(shopItem - ShopItem::Photo2) + : PEEP_THOUGHT_TYPE_BALLOON_MUCH + static_cast(shopItem)); InsertNewThought(thought_type, ride->id); return false; } @@ -1610,8 +1589,9 @@ bool Guest::DecideAndBuyItem(Ride* ride, int32_t shopItem, money32 price) { // "This x is a really good value" PeepThoughtType thought_item = static_cast( - (shopItem >= 32 ? (PEEP_THOUGHT_TYPE_PHOTO2 + (shopItem - 32)) - : (PEEP_THOUGHT_TYPE_BALLOON + shopItem))); + shopItem >= ShopItem::Photo2 + ? PEEP_THOUGHT_TYPE_PHOTO2 + static_cast(shopItem - ShopItem::Photo2) + : PEEP_THOUGHT_TYPE_BALLOON + static_cast(shopItem)); InsertNewThought(thought_item, ride->id); } } @@ -1623,11 +1603,11 @@ bool Guest::DecideAndBuyItem(Ride* ride, int32_t shopItem, money32 price) // reset itemValue for satisfaction calculation if (gClimateCurrent.Temperature >= 21) - itemValue = ShopItems[shopItem].HotValue; + itemValue = GetShopItemDescriptor(shopItem).HotValue; else if (gClimateCurrent.Temperature <= 11) - itemValue = ShopItems[shopItem].ColdValue; + itemValue = GetShopItemDescriptor(shopItem).ColdValue; else - itemValue = ShopItems[shopItem].BaseValue; + itemValue = GetShopItemDescriptor(shopItem).BaseValue; itemValue -= price; uint8_t satisfaction = 0; if (itemValue > -8) @@ -1645,39 +1625,36 @@ bool Guest::DecideAndBuyItem(Ride* ride, int32_t shopItem, money32 price) // The peep has now decided to buy the item (or, specifically, has not been // dissuaded so far). - if (shopItem >= 32) - ItemExtraFlags |= (1u << (shopItem - 32)); - else - ItemStandardFlags |= (1u << shopItem); + GiveItem(shopItem); - if (shopItem == SHOP_ITEM_TSHIRT) + if (shopItem == ShopItem::TShirt) TshirtColour = ride->track_colour[0].main; - if (shopItem == SHOP_ITEM_HAT) + if (shopItem == ShopItem::Hat) HatColour = ride->track_colour[0].main; - if (shopItem == SHOP_ITEM_BALLOON) + if (shopItem == ShopItem::Balloon) BalloonColour = ride->track_colour[0].main; - if (shopItem == SHOP_ITEM_UMBRELLA) + if (shopItem == ShopItem::Umbrella) UmbrellaColour = ride->track_colour[0].main; - if (shopItem == SHOP_ITEM_MAP) + if (shopItem == ShopItem::Map) ResetPathfindGoal(); - uint16_t consumptionTime = item_consumption_time[shopItem]; + uint16_t consumptionTime = item_consumption_time[EnumValue(shopItem)]; TimeToConsume = std::min((TimeToConsume + consumptionTime), 255); - if (shopItem == SHOP_ITEM_PHOTO) + if (shopItem == ShopItem::Photo) Photo1RideRef = ride->id; - if (shopItem == SHOP_ITEM_PHOTO2) + if (shopItem == ShopItem::Photo2) Photo2RideRef = ride->id; - if (shopItem == SHOP_ITEM_PHOTO3) + if (shopItem == ShopItem::Photo3) Photo3RideRef = ride->id; - if (shopItem == SHOP_ITEM_PHOTO4) + if (shopItem == ShopItem::Photo4) Photo4RideRef = ride->id; WindowInvalidateFlags |= PEEP_INVALIDATE_PEEP_INVENTORY; @@ -1686,52 +1663,52 @@ bool Guest::DecideAndBuyItem(Ride* ride, int32_t shopItem, money32 price) { auto ft = Formatter(); FormatNameTo(ft); - ft.Add(ShopItems[shopItem].Naming.Indefinite); + ft.Add(GetShopItemDescriptor(shopItem).Naming.Indefinite); if (gConfigNotifications.guest_bought_item) { News::AddItemToQueue(News::ItemType::PeepOnRide, STR_PEEP_TRACKING_NOTIFICATION_BOUGHT_X, sprite_index, ft); } } - if (ShopItems[shopItem].IsFood()) + if (GetShopItemDescriptor(shopItem).IsFood()) AmountOfFood++; - if (ShopItems[shopItem].IsDrink()) + if (GetShopItemDescriptor(shopItem).IsDrink()) AmountOfDrinks++; - if (ShopItems[shopItem].IsSouvenir()) + if (GetShopItemDescriptor(shopItem).IsSouvenir()) AmountOfSouvenirs++; money16* expend_type = &PaidOnSouvenirs; ExpenditureType expenditure = ExpenditureType::ShopStock; - if (ShopItems[shopItem].IsFood()) + if (GetShopItemDescriptor(shopItem).IsFood()) { expend_type = &PaidOnFood; expenditure = ExpenditureType::FoodDrinkStock; } - if (ShopItems[shopItem].IsDrink()) + if (GetShopItemDescriptor(shopItem).IsDrink()) { expend_type = &PaidOnDrink; expenditure = ExpenditureType::FoodDrinkStock; } if (!(gParkFlags & PARK_FLAGS_NO_MONEY)) - finance_payment(ShopItems[shopItem].Cost, expenditure); + finance_payment(GetShopItemDescriptor(shopItem).Cost, expenditure); // Sets the expenditure type to *_FOODDRINK_SALES or *_SHOP_SALES appropriately. expenditure = static_cast(static_cast(expenditure) - 1); if (hasVoucher) { - ItemStandardFlags &= ~PEEP_ITEM_VOUCHER; + RemoveItem(ShopItem::Voucher); WindowInvalidateFlags |= PEEP_INVALIDATE_PEEP_INVENTORY; } else if (!(gParkFlags & PARK_FLAGS_NO_MONEY)) { SpendMoney(*expend_type, price, expenditure); } - ride->total_profit += (price - ShopItems[shopItem].Cost); + ride->total_profit += (price - GetShopItemDescriptor(shopItem).Cost); ride->window_invalidate_flags |= RIDE_INVALIDATE_RIDE_INCOME; ride->cur_num_customers++; ride->total_customers++; @@ -1869,7 +1846,7 @@ void Guest::PickRideToGoOn() WindowInvalidateFlags |= PEEP_INVALIDATE_PEEP_ACTION; // Make peep look at their map if they have one - if (ItemStandardFlags & PEEP_ITEM_MAP) + if (HasItem(ShopItem::Map)) { ReadMap(); } @@ -1907,7 +1884,7 @@ std::bitset Guest::FindRidesToGoOn() // FIX Originally checked for a toy, likely a mistake and should be a map, // but then again this seems to only allow the peep to go on // rides they haven't been on before. - if (ItemStandardFlags & PEEP_ITEM_MAP) + if (HasItem(ShopItem::Map)) { // Consider rides that peep hasn't been on yet for (auto& ride : GetRideManager()) @@ -2424,8 +2401,7 @@ void Guest::ReadMap() static bool peep_has_voucher_for_free_ride(Peep* peep, Ride* ride) { - return peep->ItemStandardFlags & PEEP_ITEM_VOUCHER && peep->VoucherType == VOUCHER_TYPE_RIDE_FREE - && peep->VoucherRideId == ride->id; + return peep->HasItem(ShopItem::Voucher) && peep->VoucherType == VOUCHER_TYPE_RIDE_FREE && peep->VoucherRideId == ride->id; } /** @@ -2646,7 +2622,7 @@ static void peep_update_ride_at_entrance_try_leave(Guest* peep) static bool peep_check_ride_price_at_entrance(Guest* peep, Ride* ride, money32 ridePrice) { - if ((peep->ItemStandardFlags & PEEP_ITEM_VOUCHER) && peep->VoucherType == VOUCHER_TYPE_RIDE_FREE + if ((peep->HasItem(ShopItem::Voucher)) && peep->VoucherType == VOUCHER_TYPE_RIDE_FREE && peep->VoucherRideId == peep->CurrentRide) return true; @@ -3169,7 +3145,7 @@ template static void peep_head_for_nearest_ride(Guest* peep, bool co } std::bitset rideConsideration; - if (!considerOnlyCloseRides && (peep->ItemStandardFlags & PEEP_ITEM_MAP)) + if (!considerOnlyCloseRides && (peep->HasItem(ShopItem::Map))) { // Consider all rides in the park for (const auto& ride : GetRideManager()) @@ -3426,7 +3402,7 @@ void Guest::UpdateBuying() { return; } - if (ride_type->shop_item[1] != SHOP_ITEM_NONE) + if (ride_type->shop_item[1] != ShopItem::None) { money16 price = ride->price[1]; @@ -3437,7 +3413,7 @@ void Guest::UpdateBuying() } } - if (!item_bought && ride_type->shop_item[0] != SHOP_ITEM_NONE) + if (!item_bought && ride_type->shop_item[0] != ShopItem::None) { money16 price = ride->price[0]; @@ -3864,10 +3840,9 @@ void Guest::UpdateRideFreeVehicleEnterRide(Ride* ride) money16 ridePrice = ride_get_price(ride); if (ridePrice != 0) { - if ((ItemStandardFlags & PEEP_ITEM_VOUCHER) && (VoucherType == VOUCHER_TYPE_RIDE_FREE) - && (VoucherRideId == CurrentRide)) + if ((HasItem(ShopItem::Voucher)) && (VoucherType == VOUCHER_TYPE_RIDE_FREE) && (VoucherRideId == CurrentRide)) { - ItemStandardFlags &= ~PEEP_ITEM_VOUCHER; + RemoveItem(ShopItem::Voucher); WindowInvalidateFlags |= PEEP_INVALIDATE_PEEP_INVENTORY; } else @@ -4420,7 +4395,7 @@ void Guest::UpdateRideInExit() if (ride->lifecycle_flags & RIDE_LIFECYCLE_ON_RIDE_PHOTO) { - uint8_t secondaryItem = RideTypeDescriptors[ride->type].PhotoItem; + ShopItem secondaryItem = RideTypeDescriptors[ride->type].PhotoItem; if (DecideAndBuyItem(ride, secondaryItem, ride->price[1])) { ride->no_secondary_items_sold++; @@ -5357,7 +5332,7 @@ void Guest::UpdateWalking() if (pos_stnd != 32) { - ItemStandardFlags &= ~(1u << pos_stnd); + RemoveItem(static_cast(pos_stnd)); litterType = item_standard_litter[pos_stnd]; } else @@ -5366,7 +5341,7 @@ void Guest::UpdateWalking() for (int32_t container = HasEmptyContainerExtraFlag(); pos_extr < 32; pos_extr++) if (container & (1u << pos_extr)) break; - ItemExtraFlags &= ~(1u << pos_extr); + RemoveItem(static_cast(pos_extr + 32) + ShopItem::Photo2); litterType = item_extra_litter[pos_extr]; } @@ -5930,7 +5905,7 @@ void Guest::UpdateUsingBin() // switched to scenario_rand as it is more reliable if ((scenario_rand() & 7) == 0) space_left_in_bin--; - ItemStandardFlags &= ~(1 << cur_container); + RemoveItem(static_cast(cur_container)); WindowInvalidateFlags |= PEEP_INVALIDATE_PEEP_INVENTORY; UpdateSpriteType(); continue; @@ -5941,7 +5916,7 @@ void Guest::UpdateUsingBin() int32_t litterY = y + (scenario_rand() & 7) - 3; litter_create({ litterX, litterY, z, static_cast(scenario_rand() & 3) }, litterType); - ItemStandardFlags &= ~(1 << cur_container); + RemoveItem(static_cast(cur_container)); WindowInvalidateFlags |= PEEP_INVALIDATE_PEEP_INVENTORY; UpdateSpriteType(); @@ -5963,7 +5938,7 @@ void Guest::UpdateUsingBin() // switched to scenario_rand as it is more reliable if ((scenario_rand() & 7) == 0) space_left_in_bin--; - ItemExtraFlags &= ~(1 << cur_container); + RemoveItem(static_cast(cur_container) + ShopItem::Photo2); WindowInvalidateFlags |= PEEP_INVALIDATE_PEEP_INVENTORY; UpdateSpriteType(); @@ -5975,7 +5950,7 @@ void Guest::UpdateUsingBin() int32_t litterY = y + (scenario_rand() & 7) - 3; litter_create({ litterX, litterY, z, static_cast(scenario_rand() & 3) }, litterType); - ItemExtraFlags &= ~(1 << cur_container); + RemoveItem(static_cast(cur_container) + ShopItem::Photo2); WindowInvalidateFlags |= PEEP_INVALIDATE_PEEP_INVENTORY; UpdateSpriteType(); @@ -6797,44 +6772,44 @@ void Guest::SetSpriteType(PeepSpriteType new_sprite_type) struct item_pref_t { uint8_t type; // 0 for standard, 1 for extra - uint32_t item; // And this with the relevant flags + uint64_t item; // And this with the relevant flags PeepSpriteType sprite_type; }; // clang-format off static item_pref_t item_order_preference[] = { - { 0, PEEP_ITEM_ICE_CREAM, PeepSpriteType::IceCream }, - { 0, PEEP_ITEM_CHIPS, PeepSpriteType::Chips }, - { 0, PEEP_ITEM_PIZZA, PeepSpriteType::Pizza }, - { 0, PEEP_ITEM_BURGER, PeepSpriteType::Burger }, - { 0, PEEP_ITEM_DRINK, PeepSpriteType::Drink }, - { 0, PEEP_ITEM_COFFEE, PeepSpriteType::Coffee }, - { 0, PEEP_ITEM_CHICKEN, PeepSpriteType::Chicken }, - { 0, PEEP_ITEM_LEMONADE, PeepSpriteType::Lemonade }, - { 0, PEEP_ITEM_CANDYFLOSS, PeepSpriteType::Candyfloss }, - { 0, PEEP_ITEM_POPCORN, PeepSpriteType::Popcorn }, - { 0, PEEP_ITEM_HOT_DOG, PeepSpriteType::HotDog }, - { 0, PEEP_ITEM_TENTACLE, PeepSpriteType::Tentacle }, - { 0, PEEP_ITEM_TOFFEE_APPLE, PeepSpriteType::ToffeeApple }, - { 0, PEEP_ITEM_DOUGHNUT, PeepSpriteType::Doughnut }, - { 1, PEEP_ITEM_PRETZEL, PeepSpriteType::Pretzel }, - { 1, PEEP_ITEM_COOKIE, PeepSpriteType::Pretzel }, - { 1, PEEP_ITEM_CHOCOLATE, PeepSpriteType::Coffee }, - { 1, PEEP_ITEM_ICED_TEA, PeepSpriteType::Coffee }, - { 1, PEEP_ITEM_FUNNEL_CAKE, PeepSpriteType::FunnelCake }, - { 1, PEEP_ITEM_BEEF_NOODLES, PeepSpriteType::Noodles }, - { 1, PEEP_ITEM_FRIED_RICE_NOODLES, PeepSpriteType::Noodles }, - { 1, PEEP_ITEM_WONTON_SOUP, PeepSpriteType::Soup }, - { 1, PEEP_ITEM_MEATBALL_SOUP, PeepSpriteType::Soup }, - { 1, PEEP_ITEM_FRUIT_JUICE, PeepSpriteType::Juice }, - { 1, PEEP_ITEM_SOYBEAN_MILK, PeepSpriteType::SuJongkwa }, - { 1, PEEP_ITEM_SU_JONGKWA, PeepSpriteType::SuJongkwa }, - { 1, PEEP_ITEM_SUB_SANDWICH, PeepSpriteType::Sandwich }, - { 1, PEEP_ITEM_ROAST_SAUSAGE, PeepSpriteType::Sausage }, - { 0, PEEP_ITEM_BALLOON, PeepSpriteType::Balloon }, - { 0, PEEP_ITEM_HAT, PeepSpriteType::Hat }, - { 1, PEEP_ITEM_SUNGLASSES, PeepSpriteType::Sunglasses }, - { 0xFF, 0xFFFFFFFF, PeepSpriteType::Invalid } + { 0, EnumToFlag(ShopItem::IceCream), PeepSpriteType::IceCream }, + { 0, EnumToFlag(ShopItem::Chips), PeepSpriteType::Chips }, + { 0, EnumToFlag(ShopItem::Pizza), PeepSpriteType::Pizza }, + { 0, EnumToFlag(ShopItem::Burger), PeepSpriteType::Burger }, + { 0, EnumToFlag(ShopItem::Drink), PeepSpriteType::Drink }, + { 0, EnumToFlag(ShopItem::Coffee), PeepSpriteType::Coffee }, + { 0, EnumToFlag(ShopItem::Chicken), PeepSpriteType::Chicken }, + { 0, EnumToFlag(ShopItem::Lemonade), PeepSpriteType::Lemonade }, + { 0, EnumToFlag(ShopItem::Candyfloss), PeepSpriteType::Candyfloss }, + { 0, EnumToFlag(ShopItem::Popcorn), PeepSpriteType::Popcorn }, + { 0, EnumToFlag(ShopItem::HotDog), PeepSpriteType::HotDog }, + { 0, EnumToFlag(ShopItem::Tentacle), PeepSpriteType::Tentacle }, + { 0, EnumToFlag(ShopItem::ToffeeApple), PeepSpriteType::ToffeeApple }, + { 0, EnumToFlag(ShopItem::Doughnut), PeepSpriteType::Doughnut }, + { 1, EnumToFlag(ShopItem::Pretzel), PeepSpriteType::Pretzel }, + { 1, EnumToFlag(ShopItem::Cookie), PeepSpriteType::Pretzel }, + { 1, EnumToFlag(ShopItem::Chocolate), PeepSpriteType::Coffee }, + { 1, EnumToFlag(ShopItem::IcedTea), PeepSpriteType::Coffee }, + { 1, EnumToFlag(ShopItem::FunnelCake), PeepSpriteType::FunnelCake }, + { 1, EnumToFlag(ShopItem::BeefNoodles), PeepSpriteType::Noodles }, + { 1, EnumToFlag(ShopItem::FriedRiceNoodles), PeepSpriteType::Noodles }, + { 1, EnumToFlag(ShopItem::WontonSoup), PeepSpriteType::Soup }, + { 1, EnumToFlag(ShopItem::MeatballSoup), PeepSpriteType::Soup }, + { 1, EnumToFlag(ShopItem::FruitJuice), PeepSpriteType::Juice }, + { 1, EnumToFlag(ShopItem::SoybeanMilk), PeepSpriteType::SuJongkwa }, + { 1, EnumToFlag(ShopItem::SuJeongGwa), PeepSpriteType::SuJongkwa }, + { 1, EnumToFlag(ShopItem::SubSandwich), PeepSpriteType::Sandwich }, + { 1, EnumToFlag(ShopItem::RoastSausage), PeepSpriteType::Sausage }, + { 0, EnumToFlag(ShopItem::Balloon), PeepSpriteType::Balloon }, + { 0, EnumToFlag(ShopItem::Hat), PeepSpriteType::Hat }, + { 1, EnumToFlag(ShopItem::Sunglasses), PeepSpriteType::Sunglasses }, + { 0xFF, 0xFFFFFFFFFFFFFFFF, PeepSpriteType::Invalid } }; // clang-format on @@ -6856,11 +6831,11 @@ void Guest::UpdateSpriteType() } create_balloon({ x, y, z + 9 }, BalloonColour, isBalloonPopped); } - ItemStandardFlags &= ~PEEP_ITEM_BALLOON; + RemoveItem(ShopItem::Balloon); WindowInvalidateFlags |= PEEP_INVALIDATE_PEEP_INVENTORY; } - if (climate_is_raining() && (ItemStandardFlags & PEEP_ITEM_UMBRELLA) && x != LOCATION_NULL) + if (climate_is_raining() && (HasItem(ShopItem::Umbrella)) && x != LOCATION_NULL) { CoordsXY loc = { x, y }; if (map_is_location_valid(loc.ToTileStart())) @@ -6887,15 +6862,7 @@ void Guest::UpdateSpriteType() { if (item_pref->type == 0) { - if (ItemStandardFlags & item_pref->item) - { - SetSpriteType(item_pref->sprite_type); - return; - } - } - else - { - if (ItemExtraFlags & item_pref->item) + if (GetItemFlags() & item_pref->item) { SetSpriteType(item_pref->sprite_type); return; diff --git a/src/openrct2/peep/GuestPathfinding.cpp b/src/openrct2/peep/GuestPathfinding.cpp index 38301308cc..9d990a918e 100644 --- a/src/openrct2/peep/GuestPathfinding.cpp +++ b/src/openrct2/peep/GuestPathfinding.cpp @@ -501,7 +501,7 @@ static uint8_t peep_pathfind_get_max_number_junctions(Peep* peep) return 8; } - if (peep->ItemStandardFlags & PEEP_ITEM_MAP) + if (peep->HasItem(ShopItem::Map)) return 7; if (peep->PeepFlags & PEEP_FLAGS_LEAVING_PARK) @@ -2120,7 +2120,7 @@ int32_t guest_path_finding(Guest* peep) /* If there are still multiple directions to choose from, * peeps with maps will randomly read the map: probability of doing so * is much higher when heading for a ride or the park exit. */ - if (peep->ItemStandardFlags & PEEP_ITEM_MAP) + if (peep->HasItem(ShopItem::Map)) { // If at least 2 directions consult map if (bitcount(edges) >= 2) diff --git a/src/openrct2/peep/Peep.cpp b/src/openrct2/peep/Peep.cpp index f55d97bd59..5ecb56d3a7 100644 --- a/src/openrct2/peep/Peep.cpp +++ b/src/openrct2/peep/Peep.cpp @@ -1712,8 +1712,7 @@ Peep* Peep::Generate(const CoordsXYZ& coords) peep->CashSpent = 0; peep->ParkEntryTime = -1; peep->ResetPathfindGoal(); - peep->ItemStandardFlags = 0; - peep->ItemExtraFlags = 0; + peep->RemoveAllItems(); peep->GuestHeadingToRideId = RIDE_ID_NULL; peep->LitterCount = 0; peep->DisgustingCount = 0; @@ -2546,18 +2545,18 @@ static void peep_interact_with_entrance(Peep* peep, const CoordsXYE& coords, uin money16 entranceFee = park_get_entrance_fee(); if (entranceFee != 0) { - if (peep->ItemStandardFlags & PEEP_ITEM_VOUCHER) + if (peep->HasItem(ShopItem::Voucher)) { if (peep->VoucherType == VOUCHER_TYPE_PARK_ENTRY_HALF_PRICE) { entranceFee /= 2; - peep->ItemStandardFlags &= ~PEEP_ITEM_VOUCHER; + peep->RemoveItem(ShopItem::Voucher); peep->WindowInvalidateFlags |= PEEP_INVALIDATE_PEEP_INVENTORY; } else if (peep->VoucherType == VOUCHER_TYPE_PARK_ENTRY_FREE) { entranceFee = 0; - peep->ItemStandardFlags &= ~PEEP_ITEM_VOUCHER; + peep->RemoveItem(ShopItem::Voucher); peep->WindowInvalidateFlags |= PEEP_INVALIDATE_PEEP_INVENTORY; } } @@ -3264,9 +3263,9 @@ void decrement_guests_heading_for_park() static void peep_release_balloon(Guest* peep, int16_t spawn_height) { - if (peep->ItemStandardFlags & PEEP_ITEM_BALLOON) + if (peep->HasItem(ShopItem::Balloon)) { - peep->ItemStandardFlags &= ~PEEP_ITEM_BALLOON; + peep->RemoveItem(ShopItem::Balloon); if (peep->SpriteType == PeepSpriteType::Balloon && peep->x != LOCATION_NULL) { @@ -3329,3 +3328,62 @@ void Peep::RemoveFromRide() } StateReset(); } + +uint64_t Peep::GetItemFlags(bool bit32Flag, bool ExtraItem) const +{ + if (bit32Flag) + { + if (ExtraItem) + return ItemExtraFlags; + return ItemStandardFlags; + } + uint64_t ItemFlag = ItemExtraFlags; + return ItemStandardFlags | (ItemFlag << 32); +} + +void Peep::SetItemFlags(uint32_t ItemFlag, bool ExtraItem) +{ + if (ExtraItem) + { + ItemExtraFlags = ItemFlag; + return; + } + ItemStandardFlags = ItemFlag; +} + +void Peep::RemoveAllItems() +{ + ItemStandardFlags = 0; + ItemExtraFlags = 0; +} + +void Peep::RemoveItem(ShopItem item) +{ + // TODO: Join up standard and extra flags into a `uint64_t` to remove this if for the extra flags + if (EnumValue(item) > EnumValue(ShopItem::Admission)) + { + ItemExtraFlags &= ~(1 << (EnumValue(item) - EnumValue(ShopItem::Photo2))); + } + else + { + ItemStandardFlags &= ~EnumToFlag(item); + } +} + +void Peep::GiveItem(ShopItem item) +{ + // TODO: Join up standard and extra flags into a `uint64_t` to remove this if for the extra flags + if (EnumValue(item) > EnumValue(ShopItem::Admission)) + { + ItemExtraFlags |= (1 << (EnumValue(item) - EnumValue(ShopItem::Photo2))); + } + else + { + ItemStandardFlags |= EnumToFlag(item); + } +} + +bool Peep::HasItem(ShopItem peepItem) const +{ + return GetItemFlags() & EnumToFlag(peepItem); +} diff --git a/src/openrct2/peep/Peep.h b/src/openrct2/peep/Peep.h index 8db7170eb5..c18940b14c 100644 --- a/src/openrct2/peep/Peep.h +++ b/src/openrct2/peep/Peep.h @@ -418,63 +418,6 @@ enum class PeepNauseaTolerance : uint8_t High }; -enum PeepItem -{ - // ItemStandardFlags - PEEP_ITEM_BALLOON = (1 << 0), - PEEP_ITEM_TOY = (1 << 1), - PEEP_ITEM_MAP = (1 << 2), - PEEP_ITEM_PHOTO = (1 << 3), - PEEP_ITEM_UMBRELLA = (1 << 4), - PEEP_ITEM_DRINK = (1 << 5), - PEEP_ITEM_BURGER = (1 << 6), - PEEP_ITEM_CHIPS = (1 << 7), - PEEP_ITEM_ICE_CREAM = (1 << 8), - PEEP_ITEM_CANDYFLOSS = (1 << 9), - PEEP_ITEM_EMPTY_CAN = (1 << 10), - PEEP_ITEM_RUBBISH = (1 << 11), - PEEP_ITEM_EMPTY_BURGER_BOX = (1 << 12), - PEEP_ITEM_PIZZA = (1 << 13), - PEEP_ITEM_VOUCHER = (1 << 14), - PEEP_ITEM_POPCORN = (1 << 15), - PEEP_ITEM_HOT_DOG = (1 << 16), - PEEP_ITEM_TENTACLE = (1 << 17), - PEEP_ITEM_HAT = (1 << 18), - PEEP_ITEM_TOFFEE_APPLE = (1 << 19), - PEEP_ITEM_TSHIRT = (1 << 20), - PEEP_ITEM_DOUGHNUT = (1 << 21), - PEEP_ITEM_COFFEE = (1 << 22), - PEEP_ITEM_EMPTY_CUP = (1 << 23), - PEEP_ITEM_CHICKEN = (1 << 24), - PEEP_ITEM_LEMONADE = (1 << 25), - PEEP_ITEM_EMPTY_BOX = (1 << 26), - PEEP_ITEM_EMPTY_BOTTLE = (1 << 27), - - // ItemExtraFlags - PEEP_ITEM_PHOTO2 = (1 << 0), - PEEP_ITEM_PHOTO3 = (1 << 1), - PEEP_ITEM_PHOTO4 = (1 << 2), - PEEP_ITEM_PRETZEL = (1 << 3), - PEEP_ITEM_CHOCOLATE = (1 << 4), - PEEP_ITEM_ICED_TEA = (1 << 5), - PEEP_ITEM_FUNNEL_CAKE = (1 << 6), - PEEP_ITEM_SUNGLASSES = (1 << 7), - PEEP_ITEM_BEEF_NOODLES = (1 << 8), - PEEP_ITEM_FRIED_RICE_NOODLES = (1 << 9), - PEEP_ITEM_WONTON_SOUP = (1 << 10), - PEEP_ITEM_MEATBALL_SOUP = (1 << 11), - PEEP_ITEM_FRUIT_JUICE = (1 << 12), - PEEP_ITEM_SOYBEAN_MILK = (1 << 13), - PEEP_ITEM_SU_JONGKWA = (1 << 14), - PEEP_ITEM_SUB_SANDWICH = (1 << 15), - PEEP_ITEM_COOKIE = (1 << 16), - PEEP_ITEM_EMPTY_BOWL_RED = (1 << 17), - PEEP_ITEM_EMPTY_DRINK_CARTON = (1 << 18), - PEEP_ITEM_EMPTY_JUICE_CUP = (1 << 19), - PEEP_ITEM_ROAST_SAUSAGE = (1 << 20), - PEEP_ITEM_EMPTY_BOWL_BLUE = (1 << 21), -}; - enum class PeepSpriteType : uint8_t { Normal = 0, @@ -817,6 +760,12 @@ public: // Peep // Reset the peep's stored goal, which means they will forget any stored pathfinding history // on the next peep_pathfind_choose_direction call. void ResetPathfindGoal(); + uint64_t GetItemFlags(bool bit32Flag = false, bool ExtraItem = false) const; + void SetItemFlags(uint32_t ItemFlag, bool ExtraItem = false); + void RemoveAllItems(); + void RemoveItem(ShopItem item); + void GiveItem(ShopItem item); + bool HasItem(ShopItem peepItem) const; // TODO: Make these private again when done refactoring public: // Peep @@ -838,7 +787,6 @@ struct Guest : Peep public: void UpdateGuest(); void Tick128UpdateGuest(int32_t index); - bool HasItem(int32_t peepItem) const; bool HasFood() const; bool HasDrink() const; bool HasEmptyContainer() const; @@ -866,14 +814,12 @@ public: int32_t GetParkEntryTime() const; int32_t HasFoodStandardFlag() const; int32_t HasFoodExtraFlag() const; - bool HasDrinkStandardFlag() const; - bool HasDrinkExtraFlag() const; int32_t HasEmptyContainerStandardFlag() const; int32_t HasEmptyContainerExtraFlag() const; void CheckIfLost(); void CheckCantFindRide(); void CheckCantFindExit(); - bool DecideAndBuyItem(Ride* ride, int32_t shopItem, money32 price); + bool DecideAndBuyItem(Ride* ride, ShopItem shopItem, money32 price); void SetSpriteType(PeepSpriteType new_sprite_type); void HandleEasterEggName(); int32_t GetEasterEggNameId() const; diff --git a/src/openrct2/rct1/S4Importer.cpp b/src/openrct2/rct1/S4Importer.cpp index 70ff51cfcb..b273074a03 100644 --- a/src/openrct2/rct1/S4Importer.cpp +++ b/src/openrct2/rct1/S4Importer.cpp @@ -1568,7 +1568,7 @@ private: dst->FavouriteRideRating = 0; } - dst->ItemStandardFlags = src->item_standard_flags; + dst->SetItemFlags(src->item_standard_flags, 0); if (dst->AssignedPeepType == PeepType::Guest) { @@ -1861,7 +1861,7 @@ private: } else if (campaign.Type == ADVERTISING_CAMPAIGN_FOOD_OR_DRINK_FREE) { - campaign.ShopItemType = _s4.marketing_assoc[i]; + campaign.ShopItemType = ShopItem(_s4.marketing_assoc[i]); } gMarketingCampaigns.push_back(campaign); } diff --git a/src/openrct2/rct2/S6Exporter.cpp b/src/openrct2/rct2/S6Exporter.cpp index 8834cdf59f..d480ee3283 100644 --- a/src/openrct2/rct2/S6Exporter.cpp +++ b/src/openrct2/rct2/S6Exporter.cpp @@ -936,7 +936,7 @@ void S6Exporter::ExportMarketingCampaigns() } else if (campaign.Type == ADVERTISING_CAMPAIGN_FOOD_OR_DRINK_FREE) { - _s6.campaign_ride_index[campaign.Type] = campaign.ShopItemType; + _s6.campaign_ride_index[campaign.Type] = EnumValue(campaign.ShopItemType); } } } @@ -1173,7 +1173,7 @@ void S6Exporter::ExportSpritePeep(RCT2SpritePeep* dst, const Peep* src) { dst->ride_types_been_on[i] = src->RideTypesBeenOn[i]; } - dst->item_extra_flags = src->ItemExtraFlags; + dst->item_extra_flags = src->GetItemFlags(true, true); dst->photo2_ride_ref = OpenRCT2RideIdToRCT12RideId(src->Photo2RideRef); dst->photo3_ride_ref = OpenRCT2RideIdToRCT12RideId(src->Photo3RideRef); dst->photo4_ride_ref = OpenRCT2RideIdToRCT12RideId(src->Photo4RideRef); @@ -1245,7 +1245,7 @@ void S6Exporter::ExportSpritePeep(RCT2SpritePeep* dst, const Peep* src) dst->hat_colour = src->HatColour; dst->favourite_ride = OpenRCT2RideIdToRCT12RideId(src->FavouriteRide); dst->favourite_ride_rating = src->FavouriteRideRating; - dst->item_standard_flags = src->ItemStandardFlags; + dst->item_standard_flags = src->GetItemFlags(true); } void S6Exporter::ExportSpriteMisc(RCT12SpriteBase* cdst, const SpriteBase* csrc) diff --git a/src/openrct2/rct2/S6Importer.cpp b/src/openrct2/rct2/S6Importer.cpp index ed0bfcbf86..635de4a6e1 100644 --- a/src/openrct2/rct2/S6Importer.cpp +++ b/src/openrct2/rct2/S6Importer.cpp @@ -1290,7 +1290,7 @@ public: } else if (campaign.Type == ADVERTISING_CAMPAIGN_FOOD_OR_DRINK_FREE) { - campaign.ShopItemType = _s6.campaign_ride_index[i]; + campaign.ShopItemType = ShopItem(_s6.campaign_ride_index[i]); } gMarketingCampaigns.push_back(campaign); } @@ -1468,7 +1468,7 @@ public: { dst->RideTypesBeenOn[i] = src->ride_types_been_on[i]; } - dst->ItemExtraFlags = src->item_extra_flags; + dst->SetItemFlags(src->item_extra_flags, 1); dst->Photo2RideRef = RCT12RideIdToOpenRCT2RideId(src->photo2_ride_ref); dst->Photo3RideRef = RCT12RideIdToOpenRCT2RideId(src->photo3_ride_ref); dst->Photo4RideRef = RCT12RideIdToOpenRCT2RideId(src->photo4_ride_ref); @@ -1540,7 +1540,7 @@ public: dst->HatColour = src->hat_colour; dst->FavouriteRide = RCT12RideIdToOpenRCT2RideId(src->favourite_ride); dst->FavouriteRideRating = src->favourite_ride_rating; - dst->ItemStandardFlags = src->item_standard_flags; + dst->SetItemFlags(src->item_standard_flags, 0); } void ImportSpriteMisc(SpriteBase* cdst, const RCT12SpriteBase* csrc) diff --git a/src/openrct2/ride/Ride.cpp b/src/openrct2/ride/Ride.cpp index a01867cd3e..632f74383f 100644 --- a/src/openrct2/ride/Ride.cpp +++ b/src/openrct2/ride/Ride.cpp @@ -273,7 +273,7 @@ size_t Ride::GetNumPrices() const { result++; } - else if (rideEntry->shop_item[1] != SHOP_ITEM_NONE) + else if (rideEntry->shop_item[1] != ShopItem::None) { result++; } @@ -389,20 +389,20 @@ money32 Ride::CalculateIncomePerHour() const money32 customersPerHour = ride_customers_per_hour(this); money32 priceMinusCost = ride_get_price(this); - int32_t currentShopItem = entry->shop_item[0]; - if (currentShopItem != SHOP_ITEM_NONE) + ShopItem currentShopItem = entry->shop_item[0]; + if (currentShopItem != ShopItem::None) { - priceMinusCost -= ShopItems[currentShopItem].Cost; + priceMinusCost -= GetShopItemDescriptor(currentShopItem).Cost; } currentShopItem = (lifecycle_flags & RIDE_LIFECYCLE_ON_RIDE_PHOTO) ? RideTypeDescriptors[type].PhotoItem : entry->shop_item[1]; - if (currentShopItem != SHOP_ITEM_NONE) + if (currentShopItem != ShopItem::None) { - const money16 shopItemProfit = price[1] - ShopItems[currentShopItem].Cost; + const money16 shopItemProfit = price[1] - GetShopItemDescriptor(currentShopItem).Cost; - if (ShopItems[currentShopItem].IsPhoto()) + if (GetShopItemDescriptor(currentShopItem).IsPhoto()) { const int32_t rideTicketsSold = total_customers - no_secondary_items_sold; @@ -419,7 +419,7 @@ money32 Ride::CalculateIncomePerHour() const priceMinusCost += shopItemProfit; } - if (entry->shop_item[0] != SHOP_ITEM_NONE) + if (entry->shop_item[0] != ShopItem::None) priceMinusCost /= 2; } diff --git a/src/openrct2/ride/Ride.h b/src/openrct2/ride/Ride.h index c64772098e..1ec76b5468 100644 --- a/src/openrct2/ride/Ride.h +++ b/src/openrct2/ride/Ride.h @@ -17,6 +17,7 @@ #include "../world/Map.h" #include "RideRatings.h" #include "RideTypes.h" +#include "ShopItem.h" #include "Vehicle.h" #include @@ -125,7 +126,7 @@ struct rct_ride_entry int8_t intensity_multiplier; int8_t nausea_multiplier; uint8_t max_height; - uint8_t shop_item[NUM_SHOP_ITEMS_PER_RIDE]; + ShopItem shop_item[NUM_SHOP_ITEMS_PER_RIDE]; rct_string_id capacity; void* obj; diff --git a/src/openrct2/ride/RideData.h b/src/openrct2/ride/RideData.h index 4b7df15166..7f83add5a5 100644 --- a/src/openrct2/ride/RideData.h +++ b/src/openrct2/ride/RideData.h @@ -342,7 +342,7 @@ constexpr const RideTypeDescriptor DummyRTD = SET_FIELD(BuildCosts, { 0, 0, 1 }), SET_FIELD(DefaultPrices, { 20, 20 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_GENTLE), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 0), SET_FIELD(ColourPresets, DEFAULT_FLAT_RIDE_COLOUR_PRESET), SET_FIELD(ColourPreview, { static_cast(SPR_NONE), static_cast(SPR_NONE) }), diff --git a/src/openrct2/ride/ShopItem.cpp b/src/openrct2/ride/ShopItem.cpp index 20d502d75d..d8d7925f95 100644 --- a/src/openrct2/ride/ShopItem.cpp +++ b/src/openrct2/ride/ShopItem.cpp @@ -13,70 +13,85 @@ #include "../localisation/StringIds.h" #include "../sprites.h" +ShopItem& operator++(ShopItem& d, int) +{ + return d = (d == ShopItem::Count) ? ShopItem::Balloon : ShopItem(static_cast(d) + 1); +} + +ShopItem operator+(const ShopItem& lhs, const ShopItem& rhs) +{ + return ShopItem(EnumValue(lhs) + EnumValue(rhs)); +} + +ShopItem operator-(const ShopItem& lhs, const ShopItem& rhs) +{ + return ShopItem(EnumValue(lhs) - EnumValue(rhs)); +} + uint64_t gSamePriceThroughoutPark; // clang-format off /** rct2: 0x00982164 (cost, base value, hot and cold value); 0x00982358 (default price) */ -const ShopItemDescriptor ShopItems[SHOP_ITEM_COUNT] = { +const ShopItemDescriptor ShopItems[EnumValue(ShopItem::Count)] = { // Item, Cost, Base value, Hot value, Cold value, Default price, Image, Price label, Singular, Plural, Indefinite, Display (in guest inventory) - /* SHOP_ITEM_BALLOON */ { 3, 14, 14, 14, MONEY(0, 90), SPR_SHOP_ITEM_BALLOON, { STR_SHOP_ITEM_PRICE_LABEL_BALLOON, STR_SHOP_ITEM_SINGULAR_BALLOON, STR_SHOP_ITEM_PLURAL_BALLOON, STR_SHOP_ITEM_INDEFINITE_BALLOON, STR_SHOP_ITEM_DISPLAY_BALLOON }, SHOP_ITEM_FLAG_IS_SOUVENIR }, - /* SHOP_ITEM_TOY */ { 15, 30, 30, 30, MONEY(2, 50), SPR_SHOP_ITEM_TOY, { STR_SHOP_ITEM_PRICE_LABEL_CUDDLY_TOY, STR_SHOP_ITEM_SINGULAR_CUDDLY_TOY, STR_SHOP_ITEM_PLURAL_CUDDLY_TOY, STR_SHOP_ITEM_INDEFINITE_CUDDLY_TOY, STR_SHOP_ITEM_DISPLAY_CUDDLY_TOY }, SHOP_ITEM_FLAG_IS_SOUVENIR }, - /* SHOP_ITEM_MAP */ { 1, 7, 7, 8, MONEY(0, 60), SPR_SHOP_ITEM_MAP, { STR_SHOP_ITEM_PRICE_LABEL_PARK_MAP, STR_SHOP_ITEM_SINGULAR_PARK_MAP, STR_SHOP_ITEM_PLURAL_PARK_MAP, STR_SHOP_ITEM_INDEFINITE_PARK_MAP, STR_SHOP_ITEM_DISPLAY_PARK_MAP }, SHOP_ITEM_FLAG_IS_SOUVENIR }, - /* SHOP_ITEM_PHOTO */ { 2, 30, 30, 30, MONEY(0, 00), SPR_SHOP_ITEM_PHOTO, { STR_SHOP_ITEM_PRICE_LABEL_ON_RIDE_PHOTO, STR_SHOP_ITEM_SINGULAR_ON_RIDE_PHOTO, STR_SHOP_ITEM_PLURAL_ON_RIDE_PHOTO, STR_SHOP_ITEM_INDEFINITE_ON_RIDE_PHOTO, STR_SHOP_ITEM_DISPLAY_ON_RIDE_PHOTO }, SHOP_ITEM_FLAG_IS_PHOTO | SHOP_ITEM_FLAG_IS_SOUVENIR }, - /* SHOP_ITEM_UMBRELLA */ { 20, 35, 25, 50, MONEY(2, 50), SPR_SHOP_ITEM_UMBRELLA, { STR_SHOP_ITEM_PRICE_LABEL_UMBRELLA, STR_SHOP_ITEM_SINGULAR_UMBRELLA, STR_SHOP_ITEM_PLURAL_UMBRELLA, STR_SHOP_ITEM_INDEFINITE_UMBRELLA, STR_SHOP_ITEM_DISPLAY_UMBRELLA }, SHOP_ITEM_FLAG_IS_SOUVENIR }, - /* SHOP_ITEM_DRINK */ { 3, 12, 20, 10, MONEY(1, 20), SPR_SHOP_ITEM_DRINK, { STR_SHOP_ITEM_PRICE_LABEL_DRINK, STR_SHOP_ITEM_SINGULAR_DRINK, STR_SHOP_ITEM_PLURAL_DRINK, STR_SHOP_ITEM_INDEFINITE_DRINK, STR_SHOP_ITEM_DISPLAY_DRINK }, SHOP_ITEM_FLAG_IS_DRINK }, - /* SHOP_ITEM_BURGER */ { 5, 19, 19, 22, MONEY(1, 50), SPR_SHOP_ITEM_BURGER, { STR_SHOP_ITEM_PRICE_LABEL_BURGER, STR_SHOP_ITEM_SINGULAR_BURGER, STR_SHOP_ITEM_PLURAL_BURGER, STR_SHOP_ITEM_INDEFINITE_BURGER, STR_SHOP_ITEM_DISPLAY_BURGER }, SHOP_ITEM_FLAG_IS_FOOD }, - /* SHOP_ITEM_CHIPS */ { 4, 16, 16, 18, MONEY(1, 50), SPR_SHOP_ITEM_CHIPS, { STR_SHOP_ITEM_PRICE_LABEL_CHIPS, STR_SHOP_ITEM_SINGULAR_CHIPS, STR_SHOP_ITEM_PLURAL_CHIPS, STR_SHOP_ITEM_INDEFINITE_CHIPS, STR_SHOP_ITEM_DISPLAY_CHIPS }, SHOP_ITEM_FLAG_IS_FOOD }, - /* SHOP_ITEM_ICE_CREAM */ { 4, 10, 15, 6, MONEY(0, 90), SPR_SHOP_ITEM_ICE_CREAM, { STR_SHOP_ITEM_PRICE_LABEL_ICE_CREAM, STR_SHOP_ITEM_SINGULAR_ICE_CREAM, STR_SHOP_ITEM_PLURAL_ICE_CREAM, STR_SHOP_ITEM_INDEFINITE_ICE_CREAM, STR_SHOP_ITEM_DISPLAY_ICE_CREAM }, SHOP_ITEM_FLAG_IS_FOOD }, - /* SHOP_ITEM_CANDYFLOSS */ { 3, 9, 9, 6, MONEY(0, 80), SPR_SHOP_ITEM_CANDYFLOSS, { STR_SHOP_ITEM_PRICE_LABEL_CANDYFLOSS, STR_SHOP_ITEM_SINGULAR_CANDYFLOSS, STR_SHOP_ITEM_PLURAL_CANDYFLOSS, STR_SHOP_ITEM_INDEFINITE_CANDYFLOSS, STR_SHOP_ITEM_DISPLAY_CANDYFLOSS }, SHOP_ITEM_FLAG_IS_FOOD }, - /* SHOP_ITEM_EMPTY_CAN */ { 0, 0, 0, 0, MONEY(0, 00), SPR_SHOP_ITEM_EMPTY_CAN, { STR_SHOP_ITEM_PRICE_LABEL_EMPTY_CAN, STR_SHOP_ITEM_SINGULAR_EMPTY_CAN, STR_SHOP_ITEM_PLURAL_EMPTY_CAN, STR_SHOP_ITEM_INDEFINITE_EMPTY_CAN, STR_SHOP_ITEM_DISPLAY_EMPTY_CAN }, 0 }, - /* SHOP_ITEM_RUBBISH */ { 0, 0, 0, 0, MONEY(0, 00), SPR_SHOP_ITEM_RUBBISH, { STR_SHOP_ITEM_PRICE_LABEL_RUBBISH, STR_SHOP_ITEM_SINGULAR_RUBBISH, STR_SHOP_ITEM_PLURAL_RUBBISH, STR_SHOP_ITEM_INDEFINITE_RUBBISH, STR_SHOP_ITEM_DISPLAY_RUBBISH }, 0 }, - /* SHOP_ITEM_EMPTY_BURGER_BOX */ { 0, 0, 0, 0, MONEY(0, 00), SPR_SHOP_ITEM_EMPTY_BURGER_BOX, { STR_SHOP_ITEM_PRICE_LABEL_EMPTY_BURGER_BOX, STR_SHOP_ITEM_SINGULAR_EMPTY_BURGER_BOX, STR_SHOP_ITEM_PLURAL_EMPTY_BURGER_BOX, STR_SHOP_ITEM_INDEFINITE_EMPTY_BURGER_BOX, STR_SHOP_ITEM_DISPLAY_EMPTY_BURGER_BOX }, 0 }, - /* SHOP_ITEM_PIZZA */ { 6, 21, 21, 25, MONEY(1, 60), SPR_SHOP_ITEM_PIZZA, { STR_SHOP_ITEM_PRICE_LABEL_PIZZA, STR_SHOP_ITEM_SINGULAR_PIZZA, STR_SHOP_ITEM_PLURAL_PIZZA, STR_SHOP_ITEM_INDEFINITE_PIZZA, STR_SHOP_ITEM_DISPLAY_PIZZA }, SHOP_ITEM_FLAG_IS_FOOD }, - /* SHOP_ITEM_VOUCHER */ { 0, 0, 0, 0, MONEY(0, 00), SPR_SHOP_ITEM_VOUCHER, { STR_SHOP_ITEM_PRICE_LABEL_VOUCHER, STR_SHOP_ITEM_SINGULAR_VOUCHER, STR_SHOP_ITEM_PLURAL_VOUCHER, STR_SHOP_ITEM_INDEFINITE_VOUCHER, STR_SHOP_ITEM_DISPLAY_VOUCHER }, 0 }, - /* SHOP_ITEM_POPCORN */ { 5, 13, 13, 11, MONEY(1, 20), SPR_SHOP_ITEM_POPCORN, { STR_SHOP_ITEM_PRICE_LABEL_POPCORN, STR_SHOP_ITEM_SINGULAR_POPCORN, STR_SHOP_ITEM_PLURAL_POPCORN, STR_SHOP_ITEM_INDEFINITE_POPCORN, STR_SHOP_ITEM_DISPLAY_POPCORN }, SHOP_ITEM_FLAG_IS_FOOD }, - /* SHOP_ITEM_HOT_DOG */ { 5, 17, 17, 20, MONEY(1, 00), SPR_SHOP_ITEM_HOT_DOG, { STR_SHOP_ITEM_PRICE_LABEL_HOT_DOG, STR_SHOP_ITEM_SINGULAR_HOT_DOG, STR_SHOP_ITEM_PLURAL_HOT_DOG, STR_SHOP_ITEM_INDEFINITE_HOT_DOG, STR_SHOP_ITEM_DISPLAY_HOT_DOG }, SHOP_ITEM_FLAG_IS_FOOD }, - /* SHOP_ITEM_TENTACLE */ { 11, 22, 20, 18, MONEY(1, 50), SPR_SHOP_ITEM_TENTACLE, { STR_SHOP_ITEM_PRICE_LABEL_TENTACLE, STR_SHOP_ITEM_SINGULAR_TENTACLE, STR_SHOP_ITEM_PLURAL_TENTACLE, STR_SHOP_ITEM_INDEFINITE_TENTACLE, STR_SHOP_ITEM_DISPLAY_TENTACLE }, SHOP_ITEM_FLAG_IS_FOOD }, - /* SHOP_ITEM_HAT */ { 9, 27, 32, 24, MONEY(1, 50), SPR_SHOP_ITEM_HAT, { STR_SHOP_ITEM_PRICE_LABEL_HAT, STR_SHOP_ITEM_SINGULAR_HAT, STR_SHOP_ITEM_PLURAL_HAT, STR_SHOP_ITEM_INDEFINITE_HAT, STR_SHOP_ITEM_DISPLAY_HAT }, SHOP_ITEM_FLAG_IS_SOUVENIR }, - /* SHOP_ITEM_TOFFEE_APPLE */ { 4, 10, 10, 10, MONEY(0, 70), SPR_SHOP_ITEM_TOFFEE_APPLE, { STR_SHOP_ITEM_PRICE_LABEL_TOFFEE_APPLE, STR_SHOP_ITEM_SINGULAR_TOFFEE_APPLE, STR_SHOP_ITEM_PLURAL_TOFFEE_APPLE, STR_SHOP_ITEM_INDEFINITE_TOFFEE_APPLE, STR_SHOP_ITEM_DISPLAY_TOFFEE_APPLE }, SHOP_ITEM_FLAG_IS_FOOD }, - /* SHOP_ITEM_TSHIRT */ { 20, 37, 37, 37, MONEY(3, 00), SPR_SHOP_ITEM_TSHIRT, { STR_SHOP_ITEM_PRICE_LABEL_T_SHIRT, STR_SHOP_ITEM_SINGULAR_T_SHIRT, STR_SHOP_ITEM_PLURAL_T_SHIRT, STR_SHOP_ITEM_INDEFINITE_T_SHIRT, STR_SHOP_ITEM_DISPLAY_T_SHIRT }, SHOP_ITEM_FLAG_IS_SOUVENIR }, - /* SHOP_ITEM_DOUGHNUT */ { 4, 8, 7, 10, MONEY(0, 70), SPR_SHOP_ITEM_DOUGHNUT, { STR_SHOP_ITEM_PRICE_LABEL_DOUGHNUT, STR_SHOP_ITEM_SINGULAR_DOUGHNUT, STR_SHOP_ITEM_PLURAL_DOUGHNUT, STR_SHOP_ITEM_INDEFINITE_DOUGHNUT, STR_SHOP_ITEM_DISPLAY_DOUGHNUT }, SHOP_ITEM_FLAG_IS_FOOD }, - /* SHOP_ITEM_COFFEE */ { 3, 11, 15, 20, MONEY(1, 20), SPR_SHOP_ITEM_COFFEE, { STR_SHOP_ITEM_PRICE_LABEL_COFFEE, STR_SHOP_ITEM_SINGULAR_COFFEE, STR_SHOP_ITEM_PLURAL_COFFEE, STR_SHOP_ITEM_INDEFINITE_COFFEE, STR_SHOP_ITEM_DISPLAY_COFFEE }, SHOP_ITEM_FLAG_IS_DRINK }, - /* SHOP_ITEM_EMPTY_CUP */ { 0, 0, 0, 0, MONEY(0, 00), SPR_SHOP_ITEM_EMPTY_CUP, { STR_SHOP_ITEM_PRICE_LABEL_EMPTY_CUP, STR_SHOP_ITEM_SINGULAR_EMPTY_CUP, STR_SHOP_ITEM_PLURAL_EMPTY_CUP, STR_SHOP_ITEM_INDEFINITE_EMPTY_CUP, STR_SHOP_ITEM_DISPLAY_EMPTY_CUP }, 0 }, - /* SHOP_ITEM_CHICKEN */ { 5, 19, 19, 22, MONEY(1, 50), SPR_SHOP_ITEM_CHICKEN, { STR_SHOP_ITEM_PRICE_LABEL_FRIED_CHICKEN, STR_SHOP_ITEM_SINGULAR_FRIED_CHICKEN, STR_SHOP_ITEM_PLURAL_FRIED_CHICKEN, STR_SHOP_ITEM_INDEFINITE_FRIED_CHICKEN, STR_SHOP_ITEM_DISPLAY_FRIED_CHICKEN }, SHOP_ITEM_FLAG_IS_FOOD }, - /* SHOP_ITEM_LEMONADE */ { 4, 11, 21, 10, MONEY(1, 20), SPR_SHOP_ITEM_LEMONADE, { STR_SHOP_ITEM_PRICE_LABEL_LEMONADE, STR_SHOP_ITEM_SINGULAR_LEMONADE, STR_SHOP_ITEM_PLURAL_LEMONADE, STR_SHOP_ITEM_INDEFINITE_LEMONADE, STR_SHOP_ITEM_DISPLAY_LEMONADE }, SHOP_ITEM_FLAG_IS_DRINK }, - /* SHOP_ITEM_EMPTY_BOX */ { 0, 0, 0, 0, MONEY(0, 00), SPR_SHOP_ITEM_EMPTY_BOX, { STR_SHOP_ITEM_PRICE_LABEL_EMPTY_BOX, STR_SHOP_ITEM_SINGULAR_EMPTY_BOX, STR_SHOP_ITEM_PLURAL_EMPTY_BOX, STR_SHOP_ITEM_INDEFINITE_EMPTY_BOX, STR_SHOP_ITEM_DISPLAY_EMPTY_BOX }, 0 }, - /* SHOP_ITEM_EMPTY_BOTTLE */ { 0, 0, 0, 0, MONEY(0, 00), SPR_SHOP_ITEM_EMPTY_BOTTLE, { STR_SHOP_ITEM_PRICE_LABEL_EMPTY_BOTTLE, STR_SHOP_ITEM_SINGULAR_EMPTY_BOTTLE, STR_SHOP_ITEM_PLURAL_EMPTY_BOTTLE, STR_SHOP_ITEM_INDEFINITE_EMPTY_BOTTLE, STR_SHOP_ITEM_DISPLAY_EMPTY_BOTTLE }, 0 }, + /* ShopItem::Balloon */ { 3, 14, 14, 14, MONEY(0, 90), SPR_SHOP_ITEM_BALLOON, { STR_SHOP_ITEM_PRICE_LABEL_BALLOON, STR_SHOP_ITEM_SINGULAR_BALLOON, STR_SHOP_ITEM_PLURAL_BALLOON, STR_SHOP_ITEM_INDEFINITE_BALLOON, STR_SHOP_ITEM_DISPLAY_BALLOON }, SHOP_ITEM_FLAG_IS_SOUVENIR }, + /* ShopItem::Toy */ { 15, 30, 30, 30, MONEY(2, 50), SPR_SHOP_ITEM_TOY, { STR_SHOP_ITEM_PRICE_LABEL_CUDDLY_TOY, STR_SHOP_ITEM_SINGULAR_CUDDLY_TOY, STR_SHOP_ITEM_PLURAL_CUDDLY_TOY, STR_SHOP_ITEM_INDEFINITE_CUDDLY_TOY, STR_SHOP_ITEM_DISPLAY_CUDDLY_TOY }, SHOP_ITEM_FLAG_IS_SOUVENIR }, + /* ShopItem::Map */ { 1, 7, 7, 8, MONEY(0, 60), SPR_SHOP_ITEM_MAP, { STR_SHOP_ITEM_PRICE_LABEL_PARK_MAP, STR_SHOP_ITEM_SINGULAR_PARK_MAP, STR_SHOP_ITEM_PLURAL_PARK_MAP, STR_SHOP_ITEM_INDEFINITE_PARK_MAP, STR_SHOP_ITEM_DISPLAY_PARK_MAP }, SHOP_ITEM_FLAG_IS_SOUVENIR }, + /* ShopItem::Photo */ { 2, 30, 30, 30, MONEY(0, 00), SPR_SHOP_ITEM_PHOTO, { STR_SHOP_ITEM_PRICE_LABEL_ON_RIDE_PHOTO, STR_SHOP_ITEM_SINGULAR_ON_RIDE_PHOTO, STR_SHOP_ITEM_PLURAL_ON_RIDE_PHOTO, STR_SHOP_ITEM_INDEFINITE_ON_RIDE_PHOTO, STR_SHOP_ITEM_DISPLAY_ON_RIDE_PHOTO }, SHOP_ITEM_FLAG_IS_PHOTO | SHOP_ITEM_FLAG_IS_SOUVENIR }, + /* ShopItem::Umbrella */ { 20, 35, 25, 50, MONEY(2, 50), SPR_SHOP_ITEM_UMBRELLA, { STR_SHOP_ITEM_PRICE_LABEL_UMBRELLA, STR_SHOP_ITEM_SINGULAR_UMBRELLA, STR_SHOP_ITEM_PLURAL_UMBRELLA, STR_SHOP_ITEM_INDEFINITE_UMBRELLA, STR_SHOP_ITEM_DISPLAY_UMBRELLA }, SHOP_ITEM_FLAG_IS_SOUVENIR }, + /* ShopItem::Drink */ { 3, 12, 20, 10, MONEY(1, 20), SPR_SHOP_ITEM_DRINK, { STR_SHOP_ITEM_PRICE_LABEL_DRINK, STR_SHOP_ITEM_SINGULAR_DRINK, STR_SHOP_ITEM_PLURAL_DRINK, STR_SHOP_ITEM_INDEFINITE_DRINK, STR_SHOP_ITEM_DISPLAY_DRINK }, SHOP_ITEM_FLAG_IS_DRINK }, + /* ShopItem::Burger */ { 5, 19, 19, 22, MONEY(1, 50), SPR_SHOP_ITEM_BURGER, { STR_SHOP_ITEM_PRICE_LABEL_BURGER, STR_SHOP_ITEM_SINGULAR_BURGER, STR_SHOP_ITEM_PLURAL_BURGER, STR_SHOP_ITEM_INDEFINITE_BURGER, STR_SHOP_ITEM_DISPLAY_BURGER }, SHOP_ITEM_FLAG_IS_FOOD }, + /* ShopItem::Chips */ { 4, 16, 16, 18, MONEY(1, 50), SPR_SHOP_ITEM_CHIPS, { STR_SHOP_ITEM_PRICE_LABEL_CHIPS, STR_SHOP_ITEM_SINGULAR_CHIPS, STR_SHOP_ITEM_PLURAL_CHIPS, STR_SHOP_ITEM_INDEFINITE_CHIPS, STR_SHOP_ITEM_DISPLAY_CHIPS }, SHOP_ITEM_FLAG_IS_FOOD }, + /* ShopItem::IceCream */ { 4, 10, 15, 6, MONEY(0, 90), SPR_SHOP_ITEM_ICE_CREAM, { STR_SHOP_ITEM_PRICE_LABEL_ICE_CREAM, STR_SHOP_ITEM_SINGULAR_ICE_CREAM, STR_SHOP_ITEM_PLURAL_ICE_CREAM, STR_SHOP_ITEM_INDEFINITE_ICE_CREAM, STR_SHOP_ITEM_DISPLAY_ICE_CREAM }, SHOP_ITEM_FLAG_IS_FOOD }, + /* ShopItem::Candyfloss */ { 3, 9, 9, 6, MONEY(0, 80), SPR_SHOP_ITEM_CANDYFLOSS, { STR_SHOP_ITEM_PRICE_LABEL_CANDYFLOSS, STR_SHOP_ITEM_SINGULAR_CANDYFLOSS, STR_SHOP_ITEM_PLURAL_CANDYFLOSS, STR_SHOP_ITEM_INDEFINITE_CANDYFLOSS, STR_SHOP_ITEM_DISPLAY_CANDYFLOSS }, SHOP_ITEM_FLAG_IS_FOOD }, + /* ShopItem::EmptyCan */ { 0, 0, 0, 0, MONEY(0, 00), SPR_SHOP_ITEM_EMPTY_CAN, { STR_SHOP_ITEM_PRICE_LABEL_EMPTY_CAN, STR_SHOP_ITEM_SINGULAR_EMPTY_CAN, STR_SHOP_ITEM_PLURAL_EMPTY_CAN, STR_SHOP_ITEM_INDEFINITE_EMPTY_CAN, STR_SHOP_ITEM_DISPLAY_EMPTY_CAN }, 0 }, + /* ShopItem::Rubbish */ { 0, 0, 0, 0, MONEY(0, 00), SPR_SHOP_ITEM_RUBBISH, { STR_SHOP_ITEM_PRICE_LABEL_RUBBISH, STR_SHOP_ITEM_SINGULAR_RUBBISH, STR_SHOP_ITEM_PLURAL_RUBBISH, STR_SHOP_ITEM_INDEFINITE_RUBBISH, STR_SHOP_ITEM_DISPLAY_RUBBISH }, 0 }, + /* ShopItem::EmptyBurgerBox */ { 0, 0, 0, 0, MONEY(0, 00), SPR_SHOP_ITEM_EMPTY_BURGER_BOX, { STR_SHOP_ITEM_PRICE_LABEL_EMPTY_BURGER_BOX, STR_SHOP_ITEM_SINGULAR_EMPTY_BURGER_BOX, STR_SHOP_ITEM_PLURAL_EMPTY_BURGER_BOX, STR_SHOP_ITEM_INDEFINITE_EMPTY_BURGER_BOX, STR_SHOP_ITEM_DISPLAY_EMPTY_BURGER_BOX }, 0 }, + /* ShopItem::Pizza */ { 6, 21, 21, 25, MONEY(1, 60), SPR_SHOP_ITEM_PIZZA, { STR_SHOP_ITEM_PRICE_LABEL_PIZZA, STR_SHOP_ITEM_SINGULAR_PIZZA, STR_SHOP_ITEM_PLURAL_PIZZA, STR_SHOP_ITEM_INDEFINITE_PIZZA, STR_SHOP_ITEM_DISPLAY_PIZZA }, SHOP_ITEM_FLAG_IS_FOOD }, + /* ShopItem::Voucher */ { 0, 0, 0, 0, MONEY(0, 00), SPR_SHOP_ITEM_VOUCHER, { STR_SHOP_ITEM_PRICE_LABEL_VOUCHER, STR_SHOP_ITEM_SINGULAR_VOUCHER, STR_SHOP_ITEM_PLURAL_VOUCHER, STR_SHOP_ITEM_INDEFINITE_VOUCHER, STR_SHOP_ITEM_DISPLAY_VOUCHER }, 0 }, + /* ShopItem::Popcorn */ { 5, 13, 13, 11, MONEY(1, 20), SPR_SHOP_ITEM_POPCORN, { STR_SHOP_ITEM_PRICE_LABEL_POPCORN, STR_SHOP_ITEM_SINGULAR_POPCORN, STR_SHOP_ITEM_PLURAL_POPCORN, STR_SHOP_ITEM_INDEFINITE_POPCORN, STR_SHOP_ITEM_DISPLAY_POPCORN }, SHOP_ITEM_FLAG_IS_FOOD }, + /* ShopItem::HotDog */ { 5, 17, 17, 20, MONEY(1, 00), SPR_SHOP_ITEM_HOT_DOG, { STR_SHOP_ITEM_PRICE_LABEL_HOT_DOG, STR_SHOP_ITEM_SINGULAR_HOT_DOG, STR_SHOP_ITEM_PLURAL_HOT_DOG, STR_SHOP_ITEM_INDEFINITE_HOT_DOG, STR_SHOP_ITEM_DISPLAY_HOT_DOG }, SHOP_ITEM_FLAG_IS_FOOD }, + /* ShopItem::Tentacle */ { 11, 22, 20, 18, MONEY(1, 50), SPR_SHOP_ITEM_TENTACLE, { STR_SHOP_ITEM_PRICE_LABEL_TENTACLE, STR_SHOP_ITEM_SINGULAR_TENTACLE, STR_SHOP_ITEM_PLURAL_TENTACLE, STR_SHOP_ITEM_INDEFINITE_TENTACLE, STR_SHOP_ITEM_DISPLAY_TENTACLE }, SHOP_ITEM_FLAG_IS_FOOD }, + /* ShopItem::Hat */ { 9, 27, 32, 24, MONEY(1, 50), SPR_SHOP_ITEM_HAT, { STR_SHOP_ITEM_PRICE_LABEL_HAT, STR_SHOP_ITEM_SINGULAR_HAT, STR_SHOP_ITEM_PLURAL_HAT, STR_SHOP_ITEM_INDEFINITE_HAT, STR_SHOP_ITEM_DISPLAY_HAT }, SHOP_ITEM_FLAG_IS_SOUVENIR }, + /* ShopItem::ToffeeApple */ { 4, 10, 10, 10, MONEY(0, 70), SPR_SHOP_ITEM_TOFFEE_APPLE, { STR_SHOP_ITEM_PRICE_LABEL_TOFFEE_APPLE, STR_SHOP_ITEM_SINGULAR_TOFFEE_APPLE, STR_SHOP_ITEM_PLURAL_TOFFEE_APPLE, STR_SHOP_ITEM_INDEFINITE_TOFFEE_APPLE, STR_SHOP_ITEM_DISPLAY_TOFFEE_APPLE }, SHOP_ITEM_FLAG_IS_FOOD }, + /* ShopItem::TShirt */ { 20, 37, 37, 37, MONEY(3, 00), SPR_SHOP_ITEM_TSHIRT, { STR_SHOP_ITEM_PRICE_LABEL_T_SHIRT, STR_SHOP_ITEM_SINGULAR_T_SHIRT, STR_SHOP_ITEM_PLURAL_T_SHIRT, STR_SHOP_ITEM_INDEFINITE_T_SHIRT, STR_SHOP_ITEM_DISPLAY_T_SHIRT }, SHOP_ITEM_FLAG_IS_SOUVENIR }, + /* ShopItem::Doughnut */ { 4, 8, 7, 10, MONEY(0, 70), SPR_SHOP_ITEM_DOUGHNUT, { STR_SHOP_ITEM_PRICE_LABEL_DOUGHNUT, STR_SHOP_ITEM_SINGULAR_DOUGHNUT, STR_SHOP_ITEM_PLURAL_DOUGHNUT, STR_SHOP_ITEM_INDEFINITE_DOUGHNUT, STR_SHOP_ITEM_DISPLAY_DOUGHNUT }, SHOP_ITEM_FLAG_IS_FOOD }, + /* ShopItem::Coffee */ { 3, 11, 15, 20, MONEY(1, 20), SPR_SHOP_ITEM_COFFEE, { STR_SHOP_ITEM_PRICE_LABEL_COFFEE, STR_SHOP_ITEM_SINGULAR_COFFEE, STR_SHOP_ITEM_PLURAL_COFFEE, STR_SHOP_ITEM_INDEFINITE_COFFEE, STR_SHOP_ITEM_DISPLAY_COFFEE }, SHOP_ITEM_FLAG_IS_DRINK }, + /* ShopItem::EmptyCup */ { 0, 0, 0, 0, MONEY(0, 00), SPR_SHOP_ITEM_EMPTY_CUP, { STR_SHOP_ITEM_PRICE_LABEL_EMPTY_CUP, STR_SHOP_ITEM_SINGULAR_EMPTY_CUP, STR_SHOP_ITEM_PLURAL_EMPTY_CUP, STR_SHOP_ITEM_INDEFINITE_EMPTY_CUP, STR_SHOP_ITEM_DISPLAY_EMPTY_CUP }, 0 }, + /* ShopItem::Chicken */ { 5, 19, 19, 22, MONEY(1, 50), SPR_SHOP_ITEM_CHICKEN, { STR_SHOP_ITEM_PRICE_LABEL_FRIED_CHICKEN, STR_SHOP_ITEM_SINGULAR_FRIED_CHICKEN, STR_SHOP_ITEM_PLURAL_FRIED_CHICKEN, STR_SHOP_ITEM_INDEFINITE_FRIED_CHICKEN, STR_SHOP_ITEM_DISPLAY_FRIED_CHICKEN }, SHOP_ITEM_FLAG_IS_FOOD }, + /* ShopItem::Lemonade */ { 4, 11, 21, 10, MONEY(1, 20), SPR_SHOP_ITEM_LEMONADE, { STR_SHOP_ITEM_PRICE_LABEL_LEMONADE, STR_SHOP_ITEM_SINGULAR_LEMONADE, STR_SHOP_ITEM_PLURAL_LEMONADE, STR_SHOP_ITEM_INDEFINITE_LEMONADE, STR_SHOP_ITEM_DISPLAY_LEMONADE }, SHOP_ITEM_FLAG_IS_DRINK }, + /* ShopItem::EmptyBox */ { 0, 0, 0, 0, MONEY(0, 00), SPR_SHOP_ITEM_EMPTY_BOX, { STR_SHOP_ITEM_PRICE_LABEL_EMPTY_BOX, STR_SHOP_ITEM_SINGULAR_EMPTY_BOX, STR_SHOP_ITEM_PLURAL_EMPTY_BOX, STR_SHOP_ITEM_INDEFINITE_EMPTY_BOX, STR_SHOP_ITEM_DISPLAY_EMPTY_BOX }, 0 }, + /* ShopItem::EmptyBottle */ { 0, 0, 0, 0, MONEY(0, 00), SPR_SHOP_ITEM_EMPTY_BOTTLE, { STR_SHOP_ITEM_PRICE_LABEL_EMPTY_BOTTLE, STR_SHOP_ITEM_SINGULAR_EMPTY_BOTTLE, STR_SHOP_ITEM_PLURAL_EMPTY_BOTTLE, STR_SHOP_ITEM_INDEFINITE_EMPTY_BOTTLE, STR_SHOP_ITEM_DISPLAY_EMPTY_BOTTLE }, 0 }, /* 28 */ { 0, 0, 0, 0, MONEY(0, 00), 0, { STR_NONE, STR_NONE, STR_NONE, STR_NONE, STR_NONE }, 0 }, /* 29 */ { 0, 0, 0, 0, MONEY(0, 00), 0, { STR_NONE, STR_NONE, STR_NONE, STR_NONE, STR_NONE }, 0 }, /* 30 */ { 0, 0, 0, 0, MONEY(0, 00), 0, { STR_NONE, STR_NONE, STR_NONE, STR_NONE, STR_NONE }, 0 }, - /* SHOP_ITEM_ADMISSION */ { 0, 0, 0, 0, MONEY(0, 00), 0, { STR_NONE, STR_NONE, STR_NONE, STR_NONE, STR_NONE }, 0 }, - /* SHOP_ITEM_PHOTO2 */ { 2, 30, 30, 30, MONEY(0, 00), SPR_SHOP_ITEM_PHOTO2, { STR_SHOP_ITEM_PRICE_LABEL_ON_RIDE_PHOTO, STR_SHOP_ITEM_SINGULAR_ON_RIDE_PHOTO, STR_SHOP_ITEM_PLURAL_ON_RIDE_PHOTO, STR_SHOP_ITEM_INDEFINITE_ON_RIDE_PHOTO, STR_SHOP_ITEM_DISPLAY_ON_RIDE_PHOTO }, SHOP_ITEM_FLAG_IS_PHOTO | SHOP_ITEM_FLAG_IS_SOUVENIR }, - /* SHOP_ITEM_PHOTO3 */ { 2, 30, 30, 30, MONEY(0, 00), SPR_SHOP_ITEM_PHOTO3, { STR_SHOP_ITEM_PRICE_LABEL_ON_RIDE_PHOTO, STR_SHOP_ITEM_SINGULAR_ON_RIDE_PHOTO, STR_SHOP_ITEM_PLURAL_ON_RIDE_PHOTO, STR_SHOP_ITEM_INDEFINITE_ON_RIDE_PHOTO, STR_SHOP_ITEM_DISPLAY_ON_RIDE_PHOTO }, SHOP_ITEM_FLAG_IS_PHOTO | SHOP_ITEM_FLAG_IS_SOUVENIR }, - /* SHOP_ITEM_PHOTO4 */ { 2, 30, 30, 30, MONEY(0, 00), SPR_SHOP_ITEM_PHOTO4, { STR_SHOP_ITEM_PRICE_LABEL_ON_RIDE_PHOTO, STR_SHOP_ITEM_SINGULAR_ON_RIDE_PHOTO, STR_SHOP_ITEM_PLURAL_ON_RIDE_PHOTO, STR_SHOP_ITEM_INDEFINITE_ON_RIDE_PHOTO, STR_SHOP_ITEM_DISPLAY_ON_RIDE_PHOTO }, SHOP_ITEM_FLAG_IS_PHOTO | SHOP_ITEM_FLAG_IS_SOUVENIR }, - /* SHOP_ITEM_PRETZEL */ { 5, 11, 11, 11, MONEY(1, 10), SPR_SHOP_ITEM_PRETZEL, { STR_SHOP_ITEM_PRICE_LABEL_PRETZEL, STR_SHOP_ITEM_SINGULAR_PRETZEL, STR_SHOP_ITEM_PLURAL_PRETZEL, STR_SHOP_ITEM_INDEFINITE_PRETZEL, STR_SHOP_ITEM_DISPLAY_PRETZEL }, SHOP_ITEM_FLAG_IS_FOOD }, - /* SHOP_ITEM_CHOCOLATE */ { 4, 13, 13, 20, MONEY(1, 20), SPR_SHOP_ITEM_CHOCOLATE, { STR_SHOP_ITEM_PRICE_LABEL_HOT_CHOCOLATE, STR_SHOP_ITEM_SINGULAR_HOT_CHOCOLATE, STR_SHOP_ITEM_PLURAL_HOT_CHOCOLATE, STR_SHOP_ITEM_INDEFINITE_HOT_CHOCOLATE, STR_SHOP_ITEM_DISPLAY_HOT_CHOCOLATE }, SHOP_ITEM_FLAG_IS_DRINK }, - /* SHOP_ITEM_ICED_TEA */ { 3, 10, 20, 10, MONEY(1, 10), SPR_SHOP_ITEM_ICED_TEA, { STR_SHOP_ITEM_PRICE_LABEL_ICED_TEA, STR_SHOP_ITEM_SINGULAR_ICED_TEA, STR_SHOP_ITEM_PLURAL_ICED_TEA, STR_SHOP_ITEM_INDEFINITE_ICED_TEA, STR_SHOP_ITEM_DISPLAY_ICED_TEA }, SHOP_ITEM_FLAG_IS_DRINK }, - /* SHOP_ITEM_FUNNEL_CAKE */ { 5, 13, 11, 14, MONEY(1, 20), SPR_SHOP_ITEM_FUNNEL_CAKE, { STR_SHOP_ITEM_PRICE_LABEL_FUNNEL_CAKE, STR_SHOP_ITEM_SINGULAR_FUNNEL_CAKE, STR_SHOP_ITEM_PLURAL_FUNNEL_CAKE, STR_SHOP_ITEM_INDEFINITE_FUNNEL_CAKE, STR_SHOP_ITEM_DISPLAY_FUNNEL_CAKE }, SHOP_ITEM_FLAG_IS_FOOD }, - /* SHOP_ITEM_SUNGLASSES */ { 8, 15, 20, 12, MONEY(1, 50), SPR_SHOP_ITEM_SUNGLASSES, { STR_SHOP_ITEM_PRICE_LABEL_SUNGLASSES, STR_SHOP_ITEM_SINGULAR_SUNGLASSES, STR_SHOP_ITEM_PLURAL_SUNGLASSES, STR_SHOP_ITEM_INDEFINITE_SUNGLASSES, STR_SHOP_ITEM_DISPLAY_SUNGLASSES }, SHOP_ITEM_FLAG_IS_SOUVENIR }, - /* SHOP_ITEM_BEEF_NOODLES */ { 7, 17, 17, 20, MONEY(1, 50), SPR_SHOP_ITEM_BEEF_NOODLES, { STR_SHOP_ITEM_PRICE_LABEL_BEEF_NOODLES, STR_SHOP_ITEM_SINGULAR_BEEF_NOODLES, STR_SHOP_ITEM_PLURAL_BEEF_NOODLES, STR_SHOP_ITEM_INDEFINITE_BEEF_NOODLES, STR_SHOP_ITEM_DISPLAY_BEEF_NOODLES }, SHOP_ITEM_FLAG_IS_FOOD }, - /* SHOP_ITEM_FRIED_RICE_NOODLES */ { 6, 17, 17, 20, MONEY(1, 50), SPR_SHOP_ITEM_FRIED_RICE_NOODLES, { STR_SHOP_ITEM_PRICE_LABEL_FRIED_RICE_NOODLES, STR_SHOP_ITEM_SINGULAR_FRIED_RICE_NOODLES, STR_SHOP_ITEM_PLURAL_FRIED_RICE_NOODLES, STR_SHOP_ITEM_INDEFINITE_FRIED_RICE_NOODLES, STR_SHOP_ITEM_DISPLAY_FRIED_RICE_NOODLES }, SHOP_ITEM_FLAG_IS_FOOD }, - /* SHOP_ITEM_WONTON_SOUP */ { 4, 13, 13, 15, MONEY(1, 50), SPR_SHOP_ITEM_WONTON_SOUP, { STR_SHOP_ITEM_PRICE_LABEL_WONTON_SOUP, STR_SHOP_ITEM_SINGULAR_WONTON_SOUP, STR_SHOP_ITEM_PLURAL_WONTON_SOUP, STR_SHOP_ITEM_INDEFINITE_WONTON_SOUP, STR_SHOP_ITEM_DISPLAY_WONTON_SOUP }, SHOP_ITEM_FLAG_IS_FOOD }, - /* SHOP_ITEM_MEATBALL_SOUP */ { 5, 14, 14, 16, MONEY(1, 50), SPR_SHOP_ITEM_MEATBALL_SOUP, { STR_SHOP_ITEM_PRICE_LABEL_MEATBALL_SOUP, STR_SHOP_ITEM_SINGULAR_MEATBALL_SOUP, STR_SHOP_ITEM_PLURAL_MEATBALL_SOUP, STR_SHOP_ITEM_INDEFINITE_MEATBALL_SOUP, STR_SHOP_ITEM_DISPLAY_MEATBALL_SOUP }, SHOP_ITEM_FLAG_IS_FOOD }, - /* SHOP_ITEM_FRUIT_JUICE */ { 4, 11, 19, 11, MONEY(1, 20), SPR_SHOP_ITEM_FRUIT_JUICE, { STR_SHOP_ITEM_PRICE_LABEL_FRUIT_JUICE, STR_SHOP_ITEM_SINGULAR_FRUIT_JUICE, STR_SHOP_ITEM_PLURAL_FRUIT_JUICE, STR_SHOP_ITEM_INDEFINITE_FRUIT_JUICE, STR_SHOP_ITEM_DISPLAY_FRUIT_JUICE }, SHOP_ITEM_FLAG_IS_DRINK }, - /* SHOP_ITEM_SOYBEAN_MILK */ { 4, 10, 14, 10, MONEY(1, 20), SPR_SHOP_ITEM_SOYBEAN_MILK, { STR_SHOP_ITEM_PRICE_LABEL_SOYBEAN_MILK, STR_SHOP_ITEM_SINGULAR_SOYBEAN_MILK, STR_SHOP_ITEM_PLURAL_SOYBEAN_MILK, STR_SHOP_ITEM_INDEFINITE_SOYBEAN_MILK, STR_SHOP_ITEM_DISPLAY_SOYBEAN_MILK }, SHOP_ITEM_FLAG_IS_DRINK }, - /* SHOP_ITEM_SUJEONGGWA */ { 3, 11, 14, 11, MONEY(1, 20), SPR_SHOP_ITEM_SUJEONGGWA, { STR_SHOP_ITEM_PRICE_LABEL_SUJONGKWA, STR_SHOP_ITEM_SINGULAR_SUJONGKWA, STR_SHOP_ITEM_PLURAL_SUJONGKWA, STR_SHOP_ITEM_INDEFINITE_SUJONGKWA, STR_SHOP_ITEM_DISPLAY_SUJONGKWA }, SHOP_ITEM_FLAG_IS_DRINK }, - /* SHOP_ITEM_SUB_SANDWICH */ { 5, 19, 19, 17, MONEY(1, 50), SPR_SHOP_ITEM_SUB_SANDWICH, { STR_SHOP_ITEM_PRICE_LABEL_SUB_SANDWICH, STR_SHOP_ITEM_SINGULAR_SUB_SANDWICH, STR_SHOP_ITEM_PLURAL_SUB_SANDWICH, STR_SHOP_ITEM_INDEFINITE_SUB_SANDWICH, STR_SHOP_ITEM_DISPLAY_SUB_SANDWICH }, SHOP_ITEM_FLAG_IS_FOOD }, - /* SHOP_ITEM_COOKIE */ { 4, 8, 8, 8, MONEY(0, 70), SPR_SHOP_ITEM_COOKIE, { STR_SHOP_ITEM_PRICE_LABEL_COOKIE, STR_SHOP_ITEM_SINGULAR_COOKIE, STR_SHOP_ITEM_PLURAL_COOKIE, STR_SHOP_ITEM_INDEFINITE_COOKIE, STR_SHOP_ITEM_DISPLAY_COOKIE }, SHOP_ITEM_FLAG_IS_FOOD }, - /* SHOP_ITEM_EMPTY_BOWL_RED */ { 0, 0, 0, 0, MONEY(0, 00), SPR_SHOP_ITEM_EMPTY_BOWL_RED, { STR_SHOP_ITEM_PRICE_LABEL_EMPTY_BOWL_RED, STR_SHOP_ITEM_SINGULAR_EMPTY_BOWL_RED, STR_SHOP_ITEM_PLURAL_EMPTY_BOWL_RED, STR_SHOP_ITEM_INDEFINITE_EMPTY_BOWL_RED, STR_SHOP_ITEM_DISPLAY_EMPTY_BOWL_RED }, 0 }, - /* SHOP_ITEM_EMPTY_DRINK_CARTON */ { 0, 0, 0, 0, MONEY(0, 00), SPR_SHOP_ITEM_EMPTY_DRINK_CARTON, { STR_SHOP_ITEM_PRICE_LABEL_EMPTY_DRINK_CARTON, STR_SHOP_ITEM_SINGULAR_EMPTY_DRINK_CARTON, STR_SHOP_ITEM_PLURAL_EMPTY_DRINK_CARTON, STR_SHOP_ITEM_INDEFINITE_EMPTY_DRINK_CARTON, STR_SHOP_ITEM_DISPLAY_EMPTY_DRINK_CARTON }, 0 }, - /* SHOP_ITEM_EMPTY_JUICE_CUP */ { 0, 0, 0, 0, MONEY(0, 00), SPR_SHOP_ITEM_EMPTY_JUICE_CUP, { STR_SHOP_ITEM_PRICE_LABEL_EMPTY_JUICE_CUP, STR_SHOP_ITEM_SINGULAR_EMPTY_JUICE_CUP, STR_SHOP_ITEM_PLURAL_EMPTY_JUICE_CUP, STR_SHOP_ITEM_INDEFINITE_EMPTY_JUICE_CUP, STR_SHOP_ITEM_DISPLAY_EMPTY_JUICE_CUP }, 0 }, - /* SHOP_ITEM_ROAST_SAUSAGE */ { 5, 16, 16, 20, MONEY(1, 50), SPR_SHOP_ITEM_ROAST_SAUSAGE, { STR_SHOP_ITEM_PRICE_LABEL_ROAST_SAUSAGE, STR_SHOP_ITEM_SINGULAR_ROAST_SAUSAGE, STR_SHOP_ITEM_PLURAL_ROAST_SAUSAGE, STR_SHOP_ITEM_INDEFINITE_ROAST_SAUSAGE, STR_SHOP_ITEM_DISPLAY_ROAST_SAUSAGE }, SHOP_ITEM_FLAG_IS_FOOD }, - /* SHOP_ITEM_EMPTY_BOWL_BLUE */ { 0, 0, 0, 0, MONEY(0, 00), SPR_SHOP_ITEM_EMPTY_BOWL_BLUE, { STR_SHOP_ITEM_PRICE_LABEL_EMPTY_BOWL_BLUE, STR_SHOP_ITEM_SINGULAR_EMPTY_BOWL_BLUE, STR_SHOP_ITEM_PLURAL_EMPTY_BOWL_BLUE, STR_SHOP_ITEM_INDEFINITE_EMPTY_BOWL_BLUE, STR_SHOP_ITEM_DISPLAY_EMPTY_BOWL_BLUE }, 0 }, + /* ShopItem::Admission */ { 0, 0, 0, 0, MONEY(0, 00), 0, { STR_NONE, STR_NONE, STR_NONE, STR_NONE, STR_NONE }, 0 }, + /* ShopItem::Photo2 */ { 2, 30, 30, 30, MONEY(0, 00), SPR_SHOP_ITEM_PHOTO2, { STR_SHOP_ITEM_PRICE_LABEL_ON_RIDE_PHOTO, STR_SHOP_ITEM_SINGULAR_ON_RIDE_PHOTO, STR_SHOP_ITEM_PLURAL_ON_RIDE_PHOTO, STR_SHOP_ITEM_INDEFINITE_ON_RIDE_PHOTO, STR_SHOP_ITEM_DISPLAY_ON_RIDE_PHOTO }, SHOP_ITEM_FLAG_IS_PHOTO | SHOP_ITEM_FLAG_IS_SOUVENIR }, + /* ShopItem::Photo3 */ { 2, 30, 30, 30, MONEY(0, 00), SPR_SHOP_ITEM_PHOTO3, { STR_SHOP_ITEM_PRICE_LABEL_ON_RIDE_PHOTO, STR_SHOP_ITEM_SINGULAR_ON_RIDE_PHOTO, STR_SHOP_ITEM_PLURAL_ON_RIDE_PHOTO, STR_SHOP_ITEM_INDEFINITE_ON_RIDE_PHOTO, STR_SHOP_ITEM_DISPLAY_ON_RIDE_PHOTO }, SHOP_ITEM_FLAG_IS_PHOTO | SHOP_ITEM_FLAG_IS_SOUVENIR }, + /* ShopItem::Photo4 */ { 2, 30, 30, 30, MONEY(0, 00), SPR_SHOP_ITEM_PHOTO4, { STR_SHOP_ITEM_PRICE_LABEL_ON_RIDE_PHOTO, STR_SHOP_ITEM_SINGULAR_ON_RIDE_PHOTO, STR_SHOP_ITEM_PLURAL_ON_RIDE_PHOTO, STR_SHOP_ITEM_INDEFINITE_ON_RIDE_PHOTO, STR_SHOP_ITEM_DISPLAY_ON_RIDE_PHOTO }, SHOP_ITEM_FLAG_IS_PHOTO | SHOP_ITEM_FLAG_IS_SOUVENIR }, + /* ShopItem::Pretzel */ { 5, 11, 11, 11, MONEY(1, 10), SPR_SHOP_ITEM_PRETZEL, { STR_SHOP_ITEM_PRICE_LABEL_PRETZEL, STR_SHOP_ITEM_SINGULAR_PRETZEL, STR_SHOP_ITEM_PLURAL_PRETZEL, STR_SHOP_ITEM_INDEFINITE_PRETZEL, STR_SHOP_ITEM_DISPLAY_PRETZEL }, SHOP_ITEM_FLAG_IS_FOOD }, + /* ShopItem::Chocolate */ { 4, 13, 13, 20, MONEY(1, 20), SPR_SHOP_ITEM_CHOCOLATE, { STR_SHOP_ITEM_PRICE_LABEL_HOT_CHOCOLATE, STR_SHOP_ITEM_SINGULAR_HOT_CHOCOLATE, STR_SHOP_ITEM_PLURAL_HOT_CHOCOLATE, STR_SHOP_ITEM_INDEFINITE_HOT_CHOCOLATE, STR_SHOP_ITEM_DISPLAY_HOT_CHOCOLATE }, SHOP_ITEM_FLAG_IS_DRINK }, + /* ShopItem::IcedTea */ { 3, 10, 20, 10, MONEY(1, 10), SPR_SHOP_ITEM_ICED_TEA, { STR_SHOP_ITEM_PRICE_LABEL_ICED_TEA, STR_SHOP_ITEM_SINGULAR_ICED_TEA, STR_SHOP_ITEM_PLURAL_ICED_TEA, STR_SHOP_ITEM_INDEFINITE_ICED_TEA, STR_SHOP_ITEM_DISPLAY_ICED_TEA }, SHOP_ITEM_FLAG_IS_DRINK }, + /* ShopItem::FunnelCake */ { 5, 13, 11, 14, MONEY(1, 20), SPR_SHOP_ITEM_FUNNEL_CAKE, { STR_SHOP_ITEM_PRICE_LABEL_FUNNEL_CAKE, STR_SHOP_ITEM_SINGULAR_FUNNEL_CAKE, STR_SHOP_ITEM_PLURAL_FUNNEL_CAKE, STR_SHOP_ITEM_INDEFINITE_FUNNEL_CAKE, STR_SHOP_ITEM_DISPLAY_FUNNEL_CAKE }, SHOP_ITEM_FLAG_IS_FOOD }, + /* ShopItem::Sunglasses */ { 8, 15, 20, 12, MONEY(1, 50), SPR_SHOP_ITEM_SUNGLASSES, { STR_SHOP_ITEM_PRICE_LABEL_SUNGLASSES, STR_SHOP_ITEM_SINGULAR_SUNGLASSES, STR_SHOP_ITEM_PLURAL_SUNGLASSES, STR_SHOP_ITEM_INDEFINITE_SUNGLASSES, STR_SHOP_ITEM_DISPLAY_SUNGLASSES }, SHOP_ITEM_FLAG_IS_SOUVENIR }, + /* ShopItem::BeefNoodles */ { 7, 17, 17, 20, MONEY(1, 50), SPR_SHOP_ITEM_BEEF_NOODLES, { STR_SHOP_ITEM_PRICE_LABEL_BEEF_NOODLES, STR_SHOP_ITEM_SINGULAR_BEEF_NOODLES, STR_SHOP_ITEM_PLURAL_BEEF_NOODLES, STR_SHOP_ITEM_INDEFINITE_BEEF_NOODLES, STR_SHOP_ITEM_DISPLAY_BEEF_NOODLES }, SHOP_ITEM_FLAG_IS_FOOD }, + /* ShopItem::FriedRiceNoodles */ { 6, 17, 17, 20, MONEY(1, 50), SPR_SHOP_ITEM_FRIED_RICE_NOODLES, { STR_SHOP_ITEM_PRICE_LABEL_FRIED_RICE_NOODLES, STR_SHOP_ITEM_SINGULAR_FRIED_RICE_NOODLES, STR_SHOP_ITEM_PLURAL_FRIED_RICE_NOODLES, STR_SHOP_ITEM_INDEFINITE_FRIED_RICE_NOODLES, STR_SHOP_ITEM_DISPLAY_FRIED_RICE_NOODLES }, SHOP_ITEM_FLAG_IS_FOOD }, + /* ShopItem::WontonSoup */ { 4, 13, 13, 15, MONEY(1, 50), SPR_SHOP_ITEM_WONTON_SOUP, { STR_SHOP_ITEM_PRICE_LABEL_WONTON_SOUP, STR_SHOP_ITEM_SINGULAR_WONTON_SOUP, STR_SHOP_ITEM_PLURAL_WONTON_SOUP, STR_SHOP_ITEM_INDEFINITE_WONTON_SOUP, STR_SHOP_ITEM_DISPLAY_WONTON_SOUP }, SHOP_ITEM_FLAG_IS_FOOD }, + /* ShopItem::MeatballSoup */ { 5, 14, 14, 16, MONEY(1, 50), SPR_SHOP_ITEM_MEATBALL_SOUP, { STR_SHOP_ITEM_PRICE_LABEL_MEATBALL_SOUP, STR_SHOP_ITEM_SINGULAR_MEATBALL_SOUP, STR_SHOP_ITEM_PLURAL_MEATBALL_SOUP, STR_SHOP_ITEM_INDEFINITE_MEATBALL_SOUP, STR_SHOP_ITEM_DISPLAY_MEATBALL_SOUP }, SHOP_ITEM_FLAG_IS_FOOD }, + /* ShopItem::FruitJuice */ { 4, 11, 19, 11, MONEY(1, 20), SPR_SHOP_ITEM_FRUIT_JUICE, { STR_SHOP_ITEM_PRICE_LABEL_FRUIT_JUICE, STR_SHOP_ITEM_SINGULAR_FRUIT_JUICE, STR_SHOP_ITEM_PLURAL_FRUIT_JUICE, STR_SHOP_ITEM_INDEFINITE_FRUIT_JUICE, STR_SHOP_ITEM_DISPLAY_FRUIT_JUICE }, SHOP_ITEM_FLAG_IS_DRINK }, + /* ShopItem::SoybeanMilk */ { 4, 10, 14, 10, MONEY(1, 20), SPR_SHOP_ITEM_SOYBEAN_MILK, { STR_SHOP_ITEM_PRICE_LABEL_SOYBEAN_MILK, STR_SHOP_ITEM_SINGULAR_SOYBEAN_MILK, STR_SHOP_ITEM_PLURAL_SOYBEAN_MILK, STR_SHOP_ITEM_INDEFINITE_SOYBEAN_MILK, STR_SHOP_ITEM_DISPLAY_SOYBEAN_MILK }, SHOP_ITEM_FLAG_IS_DRINK }, + /* ShopItem::SuJeongGwa */ { 3, 11, 14, 11, MONEY(1, 20), SPR_SHOP_ITEM_SUJEONGGWA, { STR_SHOP_ITEM_PRICE_LABEL_SUJONGKWA, STR_SHOP_ITEM_SINGULAR_SUJONGKWA, STR_SHOP_ITEM_PLURAL_SUJONGKWA, STR_SHOP_ITEM_INDEFINITE_SUJONGKWA, STR_SHOP_ITEM_DISPLAY_SUJONGKWA }, SHOP_ITEM_FLAG_IS_DRINK }, + /* ShopItem::SubSandwich */ { 5, 19, 19, 17, MONEY(1, 50), SPR_SHOP_ITEM_SUB_SANDWICH, { STR_SHOP_ITEM_PRICE_LABEL_SUB_SANDWICH, STR_SHOP_ITEM_SINGULAR_SUB_SANDWICH, STR_SHOP_ITEM_PLURAL_SUB_SANDWICH, STR_SHOP_ITEM_INDEFINITE_SUB_SANDWICH, STR_SHOP_ITEM_DISPLAY_SUB_SANDWICH }, SHOP_ITEM_FLAG_IS_FOOD }, + /* ShopItem::Cookie */ { 4, 8, 8, 8, MONEY(0, 70), SPR_SHOP_ITEM_COOKIE, { STR_SHOP_ITEM_PRICE_LABEL_COOKIE, STR_SHOP_ITEM_SINGULAR_COOKIE, STR_SHOP_ITEM_PLURAL_COOKIE, STR_SHOP_ITEM_INDEFINITE_COOKIE, STR_SHOP_ITEM_DISPLAY_COOKIE }, SHOP_ITEM_FLAG_IS_FOOD }, + /* ShopItem::EmptyBowlRed */ { 0, 0, 0, 0, MONEY(0, 00), SPR_SHOP_ITEM_EMPTY_BOWL_RED, { STR_SHOP_ITEM_PRICE_LABEL_EMPTY_BOWL_RED, STR_SHOP_ITEM_SINGULAR_EMPTY_BOWL_RED, STR_SHOP_ITEM_PLURAL_EMPTY_BOWL_RED, STR_SHOP_ITEM_INDEFINITE_EMPTY_BOWL_RED, STR_SHOP_ITEM_DISPLAY_EMPTY_BOWL_RED }, 0 }, + /* ShopItem::EmptyDrinkCarton */ { 0, 0, 0, 0, MONEY(0, 00), SPR_SHOP_ITEM_EMPTY_DRINK_CARTON, { STR_SHOP_ITEM_PRICE_LABEL_EMPTY_DRINK_CARTON, STR_SHOP_ITEM_SINGULAR_EMPTY_DRINK_CARTON, STR_SHOP_ITEM_PLURAL_EMPTY_DRINK_CARTON, STR_SHOP_ITEM_INDEFINITE_EMPTY_DRINK_CARTON, STR_SHOP_ITEM_DISPLAY_EMPTY_DRINK_CARTON }, 0 }, + /* ShopItem::EmptyJuiceCup */ { 0, 0, 0, 0, MONEY(0, 00), SPR_SHOP_ITEM_EMPTY_JUICE_CUP, { STR_SHOP_ITEM_PRICE_LABEL_EMPTY_JUICE_CUP, STR_SHOP_ITEM_SINGULAR_EMPTY_JUICE_CUP, STR_SHOP_ITEM_PLURAL_EMPTY_JUICE_CUP, STR_SHOP_ITEM_INDEFINITE_EMPTY_JUICE_CUP, STR_SHOP_ITEM_DISPLAY_EMPTY_JUICE_CUP }, 0 }, + /* ShopItem::RoastSausage */ { 5, 16, 16, 20, MONEY(1, 50), SPR_SHOP_ITEM_ROAST_SAUSAGE, { STR_SHOP_ITEM_PRICE_LABEL_ROAST_SAUSAGE, STR_SHOP_ITEM_SINGULAR_ROAST_SAUSAGE, STR_SHOP_ITEM_PLURAL_ROAST_SAUSAGE, STR_SHOP_ITEM_INDEFINITE_ROAST_SAUSAGE, STR_SHOP_ITEM_DISPLAY_ROAST_SAUSAGE }, SHOP_ITEM_FLAG_IS_FOOD }, + /* ShopItem::EmptyBowlBlue */ { 0, 0, 0, 0, MONEY(0, 00), SPR_SHOP_ITEM_EMPTY_BOWL_BLUE, { STR_SHOP_ITEM_PRICE_LABEL_EMPTY_BOWL_BLUE, STR_SHOP_ITEM_SINGULAR_EMPTY_BOWL_BLUE, STR_SHOP_ITEM_PLURAL_EMPTY_BOWL_BLUE, STR_SHOP_ITEM_INDEFINITE_EMPTY_BOWL_BLUE, STR_SHOP_ITEM_DISPLAY_EMPTY_BOWL_BLUE }, 0 }, }; // clang-format on -money32 shop_item_get_common_price(Ride* forRide, const int32_t shopItem) +money32 shop_item_get_common_price(Ride* forRide, const ShopItem shopItem) { for (const auto& ride : GetRideManager()) { @@ -95,7 +110,7 @@ money32 shop_item_get_common_price(Ride* forRide, const int32_t shopItem) { return ride.price[1]; } - if (ShopItems[shopItem].IsPhoto() && (ride.lifecycle_flags & RIDE_LIFECYCLE_ON_RIDE_PHOTO)) + if (GetShopItemDescriptor(shopItem).IsPhoto() && (ride.lifecycle_flags & RIDE_LIFECYCLE_ON_RIDE_PHOTO)) { return ride.price[1]; } @@ -105,9 +120,9 @@ money32 shop_item_get_common_price(Ride* forRide, const int32_t shopItem) return MONEY32_UNDEFINED; } -bool shop_item_has_common_price(const int32_t shopItem) +bool shop_item_has_common_price(const ShopItem shopItem) { - return (gSamePriceThroughoutPark & (1ULL << shopItem)) != 0; + return (gSamePriceThroughoutPark & EnumToFlag(shopItem)) != 0; } bool ShopItemDescriptor::HasFlag(const uint16_t flag) const @@ -139,3 +154,8 @@ bool ShopItemDescriptor::IsPhoto() const { return HasFlag(SHOP_ITEM_FLAG_IS_PHOTO); } + +ShopItemDescriptor GetShopItemDescriptor(ShopItem item) +{ + return ShopItems[EnumValue(item)]; +} diff --git a/src/openrct2/ride/ShopItem.h b/src/openrct2/ride/ShopItem.h index 08cc87dddd..50b4ae780a 100644 --- a/src/openrct2/ride/ShopItem.h +++ b/src/openrct2/ride/ShopItem.h @@ -10,68 +10,75 @@ #pragma once #include "../common.h" - -using ShopItemIndex = uint8_t; +#include "../util/Util.h" struct Ride; -enum +enum class ShopItem : uint8_t { - SHOP_ITEM_BALLOON, - SHOP_ITEM_TOY, - SHOP_ITEM_MAP, - SHOP_ITEM_PHOTO, - SHOP_ITEM_UMBRELLA, - SHOP_ITEM_DRINK, - SHOP_ITEM_BURGER, - SHOP_ITEM_CHIPS, - SHOP_ITEM_ICE_CREAM, - SHOP_ITEM_CANDYFLOSS, - SHOP_ITEM_EMPTY_CAN, - SHOP_ITEM_RUBBISH, - SHOP_ITEM_EMPTY_BURGER_BOX, - SHOP_ITEM_PIZZA, - SHOP_ITEM_VOUCHER, - SHOP_ITEM_POPCORN, - SHOP_ITEM_HOT_DOG, - SHOP_ITEM_TENTACLE, - SHOP_ITEM_HAT, - SHOP_ITEM_TOFFEE_APPLE, - SHOP_ITEM_TSHIRT, - SHOP_ITEM_DOUGHNUT, - SHOP_ITEM_COFFEE, - SHOP_ITEM_EMPTY_CUP, - SHOP_ITEM_CHICKEN, - SHOP_ITEM_LEMONADE, - SHOP_ITEM_EMPTY_BOX, - SHOP_ITEM_EMPTY_BOTTLE = 27, - SHOP_ITEM_ADMISSION = 31, - SHOP_ITEM_PHOTO2 = 32, - SHOP_ITEM_PHOTO3, - SHOP_ITEM_PHOTO4, - SHOP_ITEM_PRETZEL, - SHOP_ITEM_CHOCOLATE, - SHOP_ITEM_ICED_TEA, - SHOP_ITEM_FUNNEL_CAKE, - SHOP_ITEM_SUNGLASSES, - SHOP_ITEM_BEEF_NOODLES, - SHOP_ITEM_FRIED_RICE_NOODLES, - SHOP_ITEM_WONTON_SOUP, - SHOP_ITEM_MEATBALL_SOUP, - SHOP_ITEM_FRUIT_JUICE, - SHOP_ITEM_SOYBEAN_MILK, - SHOP_ITEM_SUJEONGGWA, - SHOP_ITEM_SUB_SANDWICH, - SHOP_ITEM_COOKIE, - SHOP_ITEM_EMPTY_BOWL_RED, - SHOP_ITEM_EMPTY_DRINK_CARTON, - SHOP_ITEM_EMPTY_JUICE_CUP, - SHOP_ITEM_ROAST_SAUSAGE, - SHOP_ITEM_EMPTY_BOWL_BLUE, - SHOP_ITEM_COUNT = 56, - SHOP_ITEM_NONE = 255 + Balloon, + Toy, + Map, + Photo, + Umbrella, + Drink, + Burger, + Chips, + IceCream, + Candyfloss, + EmptyCan, + Rubbish, + EmptyBurgerBox, + Pizza, + Voucher, + Popcorn, + HotDog, + Tentacle, + Hat, + ToffeeApple, + TShirt, + Doughnut, + Coffee, + EmptyCup, + Chicken, + Lemonade, + EmptyBox, + EmptyBottle = 27, + Admission = 31, + Photo2 = 32, + Photo3, + Photo4, + Pretzel, + Chocolate, + IcedTea, + FunnelCake, + Sunglasses, + BeefNoodles, + FriedRiceNoodles, + WontonSoup, + MeatballSoup, + FruitJuice, + SoybeanMilk, + SuJeongGwa, + SubSandwich, + Cookie, + EmptyBowlRed, + EmptyDrinkCarton, + EmptyJuiceCup, + RoastSausage, + EmptyBowlBlue, + Count = 56, + None = 255 }; +ShopItem& operator++(ShopItem& d, int); + +ShopItem operator+(const ShopItem& lhs, const ShopItem& rhs); + +ShopItem operator-(const ShopItem& lhs, const ShopItem& rhs); + +using ShopItemIndex = ShopItem; + struct ShopItemStrings { rct_string_id PriceLabel; // Balloon price: @@ -108,8 +115,10 @@ enum SHOP_ITEM_FLAG_IS_PHOTO = (1 << 3), }; -extern const ShopItemDescriptor ShopItems[SHOP_ITEM_COUNT]; +extern const ShopItemDescriptor ShopItems[EnumValue(ShopItem::Count)]; extern uint64_t gSamePriceThroughoutPark; -money32 shop_item_get_common_price(Ride* forRide, const int32_t shopItem); -bool shop_item_has_common_price(const int32_t shopItem); +money32 shop_item_get_common_price(Ride* forRide, const ShopItem shopItem); +bool shop_item_has_common_price(const ShopItem shopItem); + +ShopItemDescriptor GetShopItemDescriptor(ShopItem item); diff --git a/src/openrct2/ride/coaster/meta/AirPoweredVerticalCoaster.h b/src/openrct2/ride/coaster/meta/AirPoweredVerticalCoaster.h index 5ef8f97e84..09a7bb97f9 100644 --- a/src/openrct2/ride/coaster/meta/AirPoweredVerticalCoaster.h +++ b/src/openrct2/ride/coaster/meta/AirPoweredVerticalCoaster.h @@ -41,7 +41,7 @@ constexpr const RideTypeDescriptor AirPoweredVerticalCoasterRTD = SET_FIELD(BuildCosts, { 200, 0, 45, }), SET_FIELD(DefaultPrices, { 20, 20 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_ROCK_STYLE_2), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 70), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_WHITE, COLOUR_BRIGHT_RED, COLOUR_DARK_BROWN }, diff --git a/src/openrct2/ride/coaster/meta/BobsleighCoaster.h b/src/openrct2/ride/coaster/meta/BobsleighCoaster.h index 08980ed166..f71545918f 100644 --- a/src/openrct2/ride/coaster/meta/BobsleighCoaster.h +++ b/src/openrct2/ride/coaster/meta/BobsleighCoaster.h @@ -43,7 +43,7 @@ constexpr const RideTypeDescriptor BobsleighCoasterRTD = SET_FIELD(BuildCosts, { 80, 5, 45, }), SET_FIELD(DefaultPrices, { 20, 20 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_ROCK), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 75), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_WHITE, COLOUR_BRIGHT_RED, COLOUR_WHITE }, diff --git a/src/openrct2/ride/coaster/meta/ClassicMiniRollerCoaster.h b/src/openrct2/ride/coaster/meta/ClassicMiniRollerCoaster.h index 1073ae9d52..ef3f48959d 100644 --- a/src/openrct2/ride/coaster/meta/ClassicMiniRollerCoaster.h +++ b/src/openrct2/ride/coaster/meta/ClassicMiniRollerCoaster.h @@ -46,7 +46,7 @@ constexpr const RideTypeDescriptor ClassicMiniRollerCoasterRTD = SET_FIELD(BuildCosts, { 45, 4, 40, }), SET_FIELD(DefaultPrices, { 20, 20 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_SUMMER), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 60), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_YELLOW, COLOUR_YELLOW, COLOUR_SATURATED_BROWN }, diff --git a/src/openrct2/ride/coaster/meta/CompactInvertedCoaster.h b/src/openrct2/ride/coaster/meta/CompactInvertedCoaster.h index d549f0bef8..6909e40528 100644 --- a/src/openrct2/ride/coaster/meta/CompactInvertedCoaster.h +++ b/src/openrct2/ride/coaster/meta/CompactInvertedCoaster.h @@ -43,7 +43,7 @@ constexpr const RideTypeDescriptor CompactInvertedCoasterRTD = SET_FIELD(BuildCosts, { 100, 5, 50, }), SET_FIELD(DefaultPrices, { 20, 20 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_TECHNO), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO2), + SET_FIELD(PhotoItem, ShopItem::Photo2), SET_FIELD(BonusValue, 80), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_BRIGHT_YELLOW, COLOUR_BRIGHT_YELLOW, COLOUR_BRIGHT_RED }, diff --git a/src/openrct2/ride/coaster/meta/CorkscrewRollerCoaster.h b/src/openrct2/ride/coaster/meta/CorkscrewRollerCoaster.h index 04351ec99e..3c8c1c0b32 100644 --- a/src/openrct2/ride/coaster/meta/CorkscrewRollerCoaster.h +++ b/src/openrct2/ride/coaster/meta/CorkscrewRollerCoaster.h @@ -48,7 +48,7 @@ constexpr const RideTypeDescriptor CorkscrewRollerCoasterRTD = SET_FIELD(BuildCosts, { 105, 5, 50, }), SET_FIELD(DefaultPrices, { 20, 20 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_ROCK), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 100), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_BORDEAUX_RED, COLOUR_BORDEAUX_RED, COLOUR_BLACK }, diff --git a/src/openrct2/ride/coaster/meta/FlyingRollerCoaster.h b/src/openrct2/ride/coaster/meta/FlyingRollerCoaster.h index af32d98ecf..459f061589 100644 --- a/src/openrct2/ride/coaster/meta/FlyingRollerCoaster.h +++ b/src/openrct2/ride/coaster/meta/FlyingRollerCoaster.h @@ -45,7 +45,7 @@ constexpr const RideTypeDescriptor FlyingRollerCoasterRTD = SET_FIELD(BuildCosts, { 125, 5, 50, }), SET_FIELD(DefaultPrices, { 20, 20 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_ROCK), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO2), + SET_FIELD(PhotoItem, ShopItem::Photo2), SET_FIELD(BonusValue, 100), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_OLIVE_GREEN, COLOUR_OLIVE_GREEN, COLOUR_TEAL }, @@ -85,7 +85,7 @@ constexpr const RideTypeDescriptor FlyingRollerCoasterAltRTD = SET_FIELD(BuildCosts, { 125, 5, 50, }), SET_FIELD(DefaultPrices, { 20, 20 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_ROCK), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO2), + SET_FIELD(PhotoItem, ShopItem::Photo2), SET_FIELD(BonusValue, 100), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_OLIVE_GREEN, COLOUR_OLIVE_GREEN, COLOUR_TEAL }, diff --git a/src/openrct2/ride/coaster/meta/GigaCoaster.h b/src/openrct2/ride/coaster/meta/GigaCoaster.h index a5d441abd4..a73b4ef050 100644 --- a/src/openrct2/ride/coaster/meta/GigaCoaster.h +++ b/src/openrct2/ride/coaster/meta/GigaCoaster.h @@ -43,7 +43,7 @@ constexpr const RideTypeDescriptor GigaCoasterRTD = SET_FIELD(BuildCosts, { 120, 5, 55, }), SET_FIELD(DefaultPrices, { 20, 20 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_ROCK_STYLE_3), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 120), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_BRIGHT_RED, COLOUR_BRIGHT_RED, COLOUR_WHITE }, diff --git a/src/openrct2/ride/coaster/meta/HeartlineTwisterCoaster.h b/src/openrct2/ride/coaster/meta/HeartlineTwisterCoaster.h index dbd7b604c1..bf13341e1f 100644 --- a/src/openrct2/ride/coaster/meta/HeartlineTwisterCoaster.h +++ b/src/openrct2/ride/coaster/meta/HeartlineTwisterCoaster.h @@ -42,7 +42,7 @@ constexpr const RideTypeDescriptor HeartlineTwisterCoasterRTD = SET_FIELD(BuildCosts, { 135, 7, 30, }), SET_FIELD(DefaultPrices, { 15, 20 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_TECHNO), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 35), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_WHITE, COLOUR_LIGHT_BLUE, COLOUR_WHITE }, diff --git a/src/openrct2/ride/coaster/meta/HybridCoaster.h b/src/openrct2/ride/coaster/meta/HybridCoaster.h index 3728bc224d..9ba4481b90 100644 --- a/src/openrct2/ride/coaster/meta/HybridCoaster.h +++ b/src/openrct2/ride/coaster/meta/HybridCoaster.h @@ -41,7 +41,7 @@ constexpr const RideTypeDescriptor HybridCoasterRTD = SET_FIELD(BuildCosts, { 110, 7, 55}), SET_FIELD(DefaultPrices, { 20, 20 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_ROCK_STYLE_2), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 120), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_LIGHT_ORANGE, COLOUR_LIGHT_ORANGE, COLOUR_DARK_BROWN}, diff --git a/src/openrct2/ride/coaster/meta/HyperTwister.h b/src/openrct2/ride/coaster/meta/HyperTwister.h index 26e2dada88..a8b4ec0225 100644 --- a/src/openrct2/ride/coaster/meta/HyperTwister.h +++ b/src/openrct2/ride/coaster/meta/HyperTwister.h @@ -47,7 +47,7 @@ constexpr const RideTypeDescriptor HyperTwisterRTD = SET_FIELD(BuildCosts, { 120, 5, 55, }), SET_FIELD(DefaultPrices, { 20, 20 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_ROCK), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 120), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_YELLOW, COLOUR_YELLOW, COLOUR_BORDEAUX_RED }, diff --git a/src/openrct2/ride/coaster/meta/Hypercoaster.h b/src/openrct2/ride/coaster/meta/Hypercoaster.h index 1a1fba3200..f497531c81 100644 --- a/src/openrct2/ride/coaster/meta/Hypercoaster.h +++ b/src/openrct2/ride/coaster/meta/Hypercoaster.h @@ -46,7 +46,7 @@ constexpr const RideTypeDescriptor HypercoasterRTD = SET_FIELD(BuildCosts, { 105, 5, 50, }), SET_FIELD(DefaultPrices, { 20, 20 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_ROCK), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 100), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_BORDEAUX_RED, COLOUR_BORDEAUX_RED, COLOUR_BLACK }, diff --git a/src/openrct2/ride/coaster/meta/InvertedHairpinCoaster.h b/src/openrct2/ride/coaster/meta/InvertedHairpinCoaster.h index 86b7f9863e..fa80cbe46d 100644 --- a/src/openrct2/ride/coaster/meta/InvertedHairpinCoaster.h +++ b/src/openrct2/ride/coaster/meta/InvertedHairpinCoaster.h @@ -43,7 +43,7 @@ constexpr const RideTypeDescriptor InvertedHairpinCoasterRTD = SET_FIELD(BuildCosts, { 67, 4, 40, }), SET_FIELD(DefaultPrices, { 20, 20 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_ROCK_STYLE_2), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO2), + SET_FIELD(PhotoItem, ShopItem::Photo2), SET_FIELD(BonusValue, 55), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_BRIGHT_YELLOW, COLOUR_BRIGHT_YELLOW, COLOUR_BRIGHT_RED }, diff --git a/src/openrct2/ride/coaster/meta/InvertedImpulseCoaster.h b/src/openrct2/ride/coaster/meta/InvertedImpulseCoaster.h index 5ffd1370a3..d3e787ffd8 100644 --- a/src/openrct2/ride/coaster/meta/InvertedImpulseCoaster.h +++ b/src/openrct2/ride/coaster/meta/InvertedImpulseCoaster.h @@ -43,7 +43,7 @@ constexpr const RideTypeDescriptor InvertedImpulseCoasterRTD = SET_FIELD(BuildCosts, { 125, 5, 25, }), SET_FIELD(DefaultPrices, { 20, 20 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_ROCK), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO2), + SET_FIELD(PhotoItem, ShopItem::Photo2), SET_FIELD(BonusValue, 75), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_BRIGHT_YELLOW, COLOUR_BRIGHT_YELLOW, COLOUR_BRIGHT_RED }, diff --git a/src/openrct2/ride/coaster/meta/InvertedRollerCoaster.h b/src/openrct2/ride/coaster/meta/InvertedRollerCoaster.h index 094ab0761f..6d50a74f5f 100644 --- a/src/openrct2/ride/coaster/meta/InvertedRollerCoaster.h +++ b/src/openrct2/ride/coaster/meta/InvertedRollerCoaster.h @@ -43,7 +43,7 @@ constexpr const RideTypeDescriptor InvertedRollerCoasterRTD = SET_FIELD(BuildCosts, { 110, 5, 50, }), SET_FIELD(DefaultPrices, { 20, 20 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_TECHNO), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO2), + SET_FIELD(PhotoItem, ShopItem::Photo2), SET_FIELD(BonusValue, 100), SET_FIELD(ColourPresets,TRACK_COLOUR_PRESETS( { COLOUR_BORDEAUX_RED, COLOUR_BORDEAUX_RED, COLOUR_BLACK }, diff --git a/src/openrct2/ride/coaster/meta/JuniorRollerCoaster.h b/src/openrct2/ride/coaster/meta/JuniorRollerCoaster.h index 4de9384e89..101532831b 100644 --- a/src/openrct2/ride/coaster/meta/JuniorRollerCoaster.h +++ b/src/openrct2/ride/coaster/meta/JuniorRollerCoaster.h @@ -47,7 +47,7 @@ constexpr const RideTypeDescriptor JuniorRollerCoasterRTD = SET_FIELD(BuildCosts, { 45, 4, 40, }), SET_FIELD(DefaultPrices, { 20, 20 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_SUMMER), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 60), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_YELLOW, COLOUR_YELLOW, COLOUR_SATURATED_BROWN }, diff --git a/src/openrct2/ride/coaster/meta/LIMLaunchedRollerCoaster.h b/src/openrct2/ride/coaster/meta/LIMLaunchedRollerCoaster.h index 146227865b..35f8900276 100644 --- a/src/openrct2/ride/coaster/meta/LIMLaunchedRollerCoaster.h +++ b/src/openrct2/ride/coaster/meta/LIMLaunchedRollerCoaster.h @@ -43,7 +43,7 @@ constexpr const RideTypeDescriptor LIMLaunchedRollerCoasterRTD = SET_FIELD(BuildCosts, { 95, 5, 50, }), SET_FIELD(DefaultPrices, { 20, 20 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_ROCK), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 55), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_BRIGHT_GREEN, COLOUR_BRIGHT_GREEN, COLOUR_WHITE }, diff --git a/src/openrct2/ride/coaster/meta/LayDownRollerCoaster.h b/src/openrct2/ride/coaster/meta/LayDownRollerCoaster.h index 512c654ea8..5900df08f2 100644 --- a/src/openrct2/ride/coaster/meta/LayDownRollerCoaster.h +++ b/src/openrct2/ride/coaster/meta/LayDownRollerCoaster.h @@ -43,7 +43,7 @@ constexpr const RideTypeDescriptor LayDownRollerCoasterRTD = SET_FIELD(BuildCosts, { 107, 5, 50, }), SET_FIELD(DefaultPrices, { 20, 20 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_ROCK), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO2), + SET_FIELD(PhotoItem, ShopItem::Photo2), SET_FIELD(BonusValue, 100), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_BRIGHT_RED, COLOUR_BRIGHT_RED, COLOUR_YELLOW }, @@ -81,7 +81,7 @@ constexpr const RideTypeDescriptor LayDownRollerCoasterAltRTD = SET_FIELD(BuildCosts, { 107, 5, 50, }), SET_FIELD(DefaultPrices, { 20, 20 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_ROCK), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO2), + SET_FIELD(PhotoItem, ShopItem::Photo2), SET_FIELD(BonusValue, 100), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_BRIGHT_RED, COLOUR_BRIGHT_RED, COLOUR_YELLOW }, diff --git a/src/openrct2/ride/coaster/meta/LoopingRollerCoaster.h b/src/openrct2/ride/coaster/meta/LoopingRollerCoaster.h index 42bae1f1c6..2374d1dbc0 100644 --- a/src/openrct2/ride/coaster/meta/LoopingRollerCoaster.h +++ b/src/openrct2/ride/coaster/meta/LoopingRollerCoaster.h @@ -43,7 +43,7 @@ constexpr const RideTypeDescriptor LoopingRollerCoasterRTD = SET_FIELD(BuildCosts, { 90, 5, 50, }), SET_FIELD(DefaultPrices, { 20, 20 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_ROCK), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 95), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_LIGHT_BROWN, COLOUR_LIGHT_BROWN, COLOUR_BLACK }, diff --git a/src/openrct2/ride/coaster/meta/MineRide.h b/src/openrct2/ride/coaster/meta/MineRide.h index 39c63a7e0b..82f3d4c3ce 100644 --- a/src/openrct2/ride/coaster/meta/MineRide.h +++ b/src/openrct2/ride/coaster/meta/MineRide.h @@ -43,7 +43,7 @@ constexpr const RideTypeDescriptor MineRideRTD = SET_FIELD(BuildCosts, { 85, 4, 40, }), SET_FIELD(DefaultPrices, { 20, 20 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_WILD_WEST), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 70), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_DARK_BROWN, COLOUR_DARK_BROWN, COLOUR_BLACK }, diff --git a/src/openrct2/ride/coaster/meta/MineTrainCoaster.h b/src/openrct2/ride/coaster/meta/MineTrainCoaster.h index 63d99f4855..b2133f19af 100644 --- a/src/openrct2/ride/coaster/meta/MineTrainCoaster.h +++ b/src/openrct2/ride/coaster/meta/MineTrainCoaster.h @@ -43,7 +43,7 @@ constexpr const RideTypeDescriptor MineTrainCoasterRTD = SET_FIELD(BuildCosts, { 82, 6, 50, }), SET_FIELD(DefaultPrices, { 20, 20 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_WILD_WEST), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 85), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_DARK_BROWN, COLOUR_GREY, COLOUR_DARK_BROWN }, diff --git a/src/openrct2/ride/coaster/meta/MiniRollerCoaster.h b/src/openrct2/ride/coaster/meta/MiniRollerCoaster.h index f857beb40c..1d6b4991b3 100644 --- a/src/openrct2/ride/coaster/meta/MiniRollerCoaster.h +++ b/src/openrct2/ride/coaster/meta/MiniRollerCoaster.h @@ -43,7 +43,7 @@ constexpr const RideTypeDescriptor MiniRollerCoasterRTD = SET_FIELD(BuildCosts, { 65, 4, 40, }), SET_FIELD(DefaultPrices, { 20, 20 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_SUMMER), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 60), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_GREY, COLOUR_GREY, COLOUR_DARK_BROWN }, diff --git a/src/openrct2/ride/coaster/meta/MiniSuspendedCoaster.h b/src/openrct2/ride/coaster/meta/MiniSuspendedCoaster.h index d608b21d9b..32c11d91dc 100644 --- a/src/openrct2/ride/coaster/meta/MiniSuspendedCoaster.h +++ b/src/openrct2/ride/coaster/meta/MiniSuspendedCoaster.h @@ -44,7 +44,7 @@ constexpr const RideTypeDescriptor MiniSuspendedCoasterRTD = SET_FIELD(BuildCosts, { 60, 5, 40, }), SET_FIELD(DefaultPrices, { 20, 20 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_WILD_WEST), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO2), + SET_FIELD(PhotoItem, ShopItem::Photo2), SET_FIELD(BonusValue, 50), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_BLACK, COLOUR_BLACK, COLOUR_SATURATED_BROWN }, diff --git a/src/openrct2/ride/coaster/meta/MultiDimensionRollerCoaster.h b/src/openrct2/ride/coaster/meta/MultiDimensionRollerCoaster.h index 1bd21c2874..7e049d21fd 100644 --- a/src/openrct2/ride/coaster/meta/MultiDimensionRollerCoaster.h +++ b/src/openrct2/ride/coaster/meta/MultiDimensionRollerCoaster.h @@ -44,7 +44,7 @@ constexpr const RideTypeDescriptor MultiDimensionRollerCoasterRTD = SET_FIELD(BuildCosts, { 180, 5, 50, }), SET_FIELD(DefaultPrices, { 20, 20 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_ROCK_STYLE_3), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO2), + SET_FIELD(PhotoItem, ShopItem::Photo2), SET_FIELD(BonusValue, 100), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_BRIGHT_PINK, COLOUR_YELLOW, COLOUR_YELLOW }, @@ -82,7 +82,7 @@ constexpr const RideTypeDescriptor MultiDimensionRollerCoasterAltRTD = SET_FIELD(BuildCosts, { 180, 5, 50, }), SET_FIELD(DefaultPrices, { 20, 20 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_ROCK_STYLE_3), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO2), + SET_FIELD(PhotoItem, ShopItem::Photo2), SET_FIELD(BonusValue, 100), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_BRIGHT_PINK, COLOUR_YELLOW, COLOUR_YELLOW }, diff --git a/src/openrct2/ride/coaster/meta/ReverseFreefallCoaster.h b/src/openrct2/ride/coaster/meta/ReverseFreefallCoaster.h index 83397dd300..3384385a1e 100644 --- a/src/openrct2/ride/coaster/meta/ReverseFreefallCoaster.h +++ b/src/openrct2/ride/coaster/meta/ReverseFreefallCoaster.h @@ -41,7 +41,7 @@ constexpr const RideTypeDescriptor ReverseFreefallCoasterRTD = SET_FIELD(BuildCosts, { 200, 0, 45, }), SET_FIELD(DefaultPrices, { 20, 20 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_ROCK), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 70), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_DARK_GREEN, COLOUR_YELLOW, COLOUR_DARK_GREEN }, diff --git a/src/openrct2/ride/coaster/meta/ReverserRollerCoaster.h b/src/openrct2/ride/coaster/meta/ReverserRollerCoaster.h index 7840623d0f..76301d644f 100644 --- a/src/openrct2/ride/coaster/meta/ReverserRollerCoaster.h +++ b/src/openrct2/ride/coaster/meta/ReverserRollerCoaster.h @@ -42,7 +42,7 @@ constexpr const RideTypeDescriptor ReverserRollerCoasterRTD = SET_FIELD(BuildCosts, { 55, 6, 37, }), SET_FIELD(DefaultPrices, { 20, 20 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_TECHNO), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO3), + SET_FIELD(PhotoItem, ShopItem::Photo3), SET_FIELD(BonusValue, 65), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_DARK_BROWN, COLOUR_LIGHT_BROWN, COLOUR_DARK_BROWN }, diff --git a/src/openrct2/ride/coaster/meta/SideFrictionRollerCoaster.h b/src/openrct2/ride/coaster/meta/SideFrictionRollerCoaster.h index 3451c84530..13b1482f9e 100644 --- a/src/openrct2/ride/coaster/meta/SideFrictionRollerCoaster.h +++ b/src/openrct2/ride/coaster/meta/SideFrictionRollerCoaster.h @@ -43,7 +43,7 @@ constexpr const RideTypeDescriptor SideFrictionRollerCoasterRTD = SET_FIELD(BuildCosts, { 55, 6, 37, }), SET_FIELD(DefaultPrices, { 20, 20 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_GENTLE), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO3), + SET_FIELD(PhotoItem, ShopItem::Photo3), SET_FIELD(BonusValue, 65), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_WHITE, COLOUR_DARK_BROWN, COLOUR_WHITE }, diff --git a/src/openrct2/ride/coaster/meta/SpinningWildMouse.h b/src/openrct2/ride/coaster/meta/SpinningWildMouse.h index 0ac8f412ad..5a7dccf28f 100644 --- a/src/openrct2/ride/coaster/meta/SpinningWildMouse.h +++ b/src/openrct2/ride/coaster/meta/SpinningWildMouse.h @@ -43,7 +43,7 @@ constexpr const RideTypeDescriptor SpinningWildMouseRTD = SET_FIELD(BuildCosts, { 55, 4, 40, }), SET_FIELD(DefaultPrices, { 20, 20 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_ROCK), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 55), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_LIGHT_BLUE, COLOUR_LIGHT_BLUE, COLOUR_YELLOW }, diff --git a/src/openrct2/ride/coaster/meta/SpiralRollerCoaster.h b/src/openrct2/ride/coaster/meta/SpiralRollerCoaster.h index 45b520d20c..12e6a20755 100644 --- a/src/openrct2/ride/coaster/meta/SpiralRollerCoaster.h +++ b/src/openrct2/ride/coaster/meta/SpiralRollerCoaster.h @@ -43,7 +43,7 @@ constexpr const RideTypeDescriptor SpiralRollerCoasterRTD = SET_FIELD(BuildCosts, { 70, 5, 50, }), SET_FIELD(DefaultPrices, { 20, 20 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_ROCK_STYLE_3), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 85), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_BORDEAUX_RED, COLOUR_BORDEAUX_RED, COLOUR_DARK_GREEN }, diff --git a/src/openrct2/ride/coaster/meta/StandUpRollerCoaster.h b/src/openrct2/ride/coaster/meta/StandUpRollerCoaster.h index df49fd372b..17c354bdd8 100644 --- a/src/openrct2/ride/coaster/meta/StandUpRollerCoaster.h +++ b/src/openrct2/ride/coaster/meta/StandUpRollerCoaster.h @@ -43,7 +43,7 @@ constexpr const RideTypeDescriptor StandUpRollerCoasterRTD = SET_FIELD(BuildCosts, { 100, 5, 50, }), SET_FIELD(DefaultPrices, { 20, 20 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_TECHNO), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 90), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_BRIGHT_RED, COLOUR_BRIGHT_RED, COLOUR_BLACK }, diff --git a/src/openrct2/ride/coaster/meta/SteelWildMouse.h b/src/openrct2/ride/coaster/meta/SteelWildMouse.h index a94a18af1b..45b828e895 100644 --- a/src/openrct2/ride/coaster/meta/SteelWildMouse.h +++ b/src/openrct2/ride/coaster/meta/SteelWildMouse.h @@ -46,7 +46,7 @@ constexpr const RideTypeDescriptor SteelWildMouseRTD = SET_FIELD(BuildCosts, { 55, 4, 40, }), SET_FIELD(DefaultPrices, { 20, 20 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_ROCK), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 55), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_LIGHT_BLUE, COLOUR_LIGHT_BLUE, COLOUR_YELLOW }, diff --git a/src/openrct2/ride/coaster/meta/Steeplechase.h b/src/openrct2/ride/coaster/meta/Steeplechase.h index 488bbdfa20..ea84b71a93 100644 --- a/src/openrct2/ride/coaster/meta/Steeplechase.h +++ b/src/openrct2/ride/coaster/meta/Steeplechase.h @@ -43,7 +43,7 @@ constexpr const RideTypeDescriptor SteeplechaseRTD = SET_FIELD(BuildCosts, { 57, 4, 40, }), SET_FIELD(DefaultPrices, { 20, 20 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_ROCK), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 60), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_LIGHT_BLUE, COLOUR_LIGHT_BLUE, COLOUR_BLACK }, diff --git a/src/openrct2/ride/coaster/meta/SuspendedSwingingCoaster.h b/src/openrct2/ride/coaster/meta/SuspendedSwingingCoaster.h index 3fbb9ae9bd..4fa2861672 100644 --- a/src/openrct2/ride/coaster/meta/SuspendedSwingingCoaster.h +++ b/src/openrct2/ride/coaster/meta/SuspendedSwingingCoaster.h @@ -43,7 +43,7 @@ constexpr const RideTypeDescriptor SuspendedSwingingCoasterRTD = SET_FIELD(BuildCosts, { 95, 5, 50, }), SET_FIELD(DefaultPrices, { 20, 20 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_ROCK), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO2), + SET_FIELD(PhotoItem, ShopItem::Photo2), SET_FIELD(BonusValue, 90), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_OLIVE_GREEN, COLOUR_OLIVE_GREEN, COLOUR_LIGHT_BROWN }, diff --git a/src/openrct2/ride/coaster/meta/TwisterRollerCoaster.h b/src/openrct2/ride/coaster/meta/TwisterRollerCoaster.h index 04cd0d98f0..f6c7597726 100644 --- a/src/openrct2/ride/coaster/meta/TwisterRollerCoaster.h +++ b/src/openrct2/ride/coaster/meta/TwisterRollerCoaster.h @@ -51,7 +51,7 @@ constexpr const RideTypeDescriptor TwisterRollerCoasterRTD = SET_FIELD(BuildCosts, { 120, 5, 55, }), SET_FIELD(DefaultPrices, { 20, 20 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_ROCK), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 120), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_YELLOW, COLOUR_YELLOW, COLOUR_BORDEAUX_RED }, diff --git a/src/openrct2/ride/coaster/meta/VerticalDropCoaster.h b/src/openrct2/ride/coaster/meta/VerticalDropCoaster.h index d2ed021cfe..e2b180f293 100644 --- a/src/openrct2/ride/coaster/meta/VerticalDropCoaster.h +++ b/src/openrct2/ride/coaster/meta/VerticalDropCoaster.h @@ -43,7 +43,7 @@ constexpr const RideTypeDescriptor VerticalDropCoasterRTD = SET_FIELD(BuildCosts, { 120, 5, 42, }), SET_FIELD(DefaultPrices, { 20, 20 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_ROCK), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 95), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_BLACK, COLOUR_GREY, COLOUR_BLACK }, diff --git a/src/openrct2/ride/coaster/meta/VirginiaReel.h b/src/openrct2/ride/coaster/meta/VirginiaReel.h index 5dbc3e6e1a..0e867f273b 100644 --- a/src/openrct2/ride/coaster/meta/VirginiaReel.h +++ b/src/openrct2/ride/coaster/meta/VirginiaReel.h @@ -42,7 +42,7 @@ constexpr const RideTypeDescriptor VirginiaReelRTD = SET_FIELD(BuildCosts, { 53, 6, 25, }), SET_FIELD(DefaultPrices, { 20, 20 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_ROCK), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO3), + SET_FIELD(PhotoItem, ShopItem::Photo3), SET_FIELD(BonusValue, 50), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_SATURATED_BROWN, COLOUR_GREY, COLOUR_SATURATED_BROWN }, diff --git a/src/openrct2/ride/coaster/meta/WaterCoaster.h b/src/openrct2/ride/coaster/meta/WaterCoaster.h index e424e6f574..b70a2189b5 100644 --- a/src/openrct2/ride/coaster/meta/WaterCoaster.h +++ b/src/openrct2/ride/coaster/meta/WaterCoaster.h @@ -45,7 +45,7 @@ constexpr const RideTypeDescriptor WaterCoasterRTD = SET_FIELD(BuildCosts, { 55, 4, 40, }), SET_FIELD(DefaultPrices, { 20, 20 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_WATER), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO4), + SET_FIELD(PhotoItem, ShopItem::Photo4), SET_FIELD(BonusValue, 60), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_DARK_GREEN, COLOUR_DARK_GREEN, COLOUR_BLACK }, diff --git a/src/openrct2/ride/coaster/meta/WoodenRollerCoaster.h b/src/openrct2/ride/coaster/meta/WoodenRollerCoaster.h index e9a29c8671..63285a2648 100644 --- a/src/openrct2/ride/coaster/meta/WoodenRollerCoaster.h +++ b/src/openrct2/ride/coaster/meta/WoodenRollerCoaster.h @@ -43,7 +43,7 @@ constexpr const RideTypeDescriptor WoodenRollerCoasterRTD = SET_FIELD(BuildCosts, { 75, 7, 50, }), SET_FIELD(DefaultPrices, { 20, 20 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_WILD_WEST), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO3), + SET_FIELD(PhotoItem, ShopItem::Photo3), SET_FIELD(BonusValue, 105), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_BORDEAUX_RED, COLOUR_BLACK, COLOUR_WHITE }, diff --git a/src/openrct2/ride/coaster/meta/WoodenWildMouse.h b/src/openrct2/ride/coaster/meta/WoodenWildMouse.h index 05550fda46..69dd57d352 100644 --- a/src/openrct2/ride/coaster/meta/WoodenWildMouse.h +++ b/src/openrct2/ride/coaster/meta/WoodenWildMouse.h @@ -44,7 +44,7 @@ constexpr const RideTypeDescriptor WoodenWildMouseRTD = SET_FIELD(BuildCosts, { 50, 6, 40, }), SET_FIELD(DefaultPrices, { 20, 20 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_WILD_WEST), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO3), + SET_FIELD(PhotoItem, ShopItem::Photo3), SET_FIELD(BonusValue, 55), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_BRIGHT_RED, COLOUR_BRIGHT_RED, COLOUR_WHITE }, diff --git a/src/openrct2/ride/gentle/meta/CarRide.h b/src/openrct2/ride/gentle/meta/CarRide.h index fa2fb67ec5..959d4dabec 100644 --- a/src/openrct2/ride/gentle/meta/CarRide.h +++ b/src/openrct2/ride/gentle/meta/CarRide.h @@ -47,7 +47,7 @@ constexpr const RideTypeDescriptor CarRideRTD = SET_FIELD(BuildCosts, { 25, 5, 30, }), SET_FIELD(DefaultPrices, { 15, 0 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_SUMMER), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 50), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_SATURATED_BROWN, COLOUR_SATURATED_BROWN, COLOUR_GREY }, diff --git a/src/openrct2/ride/gentle/meta/Circus.h b/src/openrct2/ride/gentle/meta/Circus.h index 6a98b3b3f5..a60c25e960 100644 --- a/src/openrct2/ride/gentle/meta/Circus.h +++ b/src/openrct2/ride/gentle/meta/Circus.h @@ -44,7 +44,7 @@ constexpr const RideTypeDescriptor CircusRTD = SET_FIELD(BuildCosts, { 125, 2, 1, }), SET_FIELD(DefaultPrices, { 15, 0 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_CIRCUS_SHOW), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 39), SET_FIELD(ColourPresets, DEFAULT_FLAT_RIDE_COLOUR_PRESET), SET_FIELD(ColourPreview, { 0, 0 }), diff --git a/src/openrct2/ride/gentle/meta/CrookedHouse.h b/src/openrct2/ride/gentle/meta/CrookedHouse.h index f9210b4959..7f193da372 100644 --- a/src/openrct2/ride/gentle/meta/CrookedHouse.h +++ b/src/openrct2/ride/gentle/meta/CrookedHouse.h @@ -44,7 +44,7 @@ constexpr const RideTypeDescriptor CrookedHouseRTD = SET_FIELD(BuildCosts, { 65, 2, 1, }), SET_FIELD(DefaultPrices, { 10, 0 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_GENTLE), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 22), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_BRIGHT_RED, COLOUR_BLACK, COLOUR_GREY }, diff --git a/src/openrct2/ride/gentle/meta/Dodgems.h b/src/openrct2/ride/gentle/meta/Dodgems.h index 66eb318ece..6ca010b8a6 100644 --- a/src/openrct2/ride/gentle/meta/Dodgems.h +++ b/src/openrct2/ride/gentle/meta/Dodgems.h @@ -44,7 +44,7 @@ constexpr const RideTypeDescriptor DodgemsRTD = SET_FIELD(BuildCosts, { 55, 2, 1, }), SET_FIELD(DefaultPrices, { 15, 0 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_DODGEMS_BEAT), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 35), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_BRIGHT_RED, COLOUR_SATURATED_BROWN, COLOUR_SATURATED_BROWN }, diff --git a/src/openrct2/ride/gentle/meta/FerrisWheel.h b/src/openrct2/ride/gentle/meta/FerrisWheel.h index 8c248696fd..dd56771cc5 100644 --- a/src/openrct2/ride/gentle/meta/FerrisWheel.h +++ b/src/openrct2/ride/gentle/meta/FerrisWheel.h @@ -44,7 +44,7 @@ constexpr const RideTypeDescriptor FerrisWheelRTD = SET_FIELD(BuildCosts, { 225, 2, 1, }), SET_FIELD(DefaultPrices, { 10, 0 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_SUMMER), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 45), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_BLACK, COLOUR_BLACK, COLOUR_BLACK }, diff --git a/src/openrct2/ride/gentle/meta/FlyingSaucers.h b/src/openrct2/ride/gentle/meta/FlyingSaucers.h index bc68a4e065..41f49a4b18 100644 --- a/src/openrct2/ride/gentle/meta/FlyingSaucers.h +++ b/src/openrct2/ride/gentle/meta/FlyingSaucers.h @@ -45,7 +45,7 @@ constexpr const RideTypeDescriptor FlyingSaucersRTD = SET_FIELD(BuildCosts, { 70, 4, 1, }), SET_FIELD(DefaultPrices, { 15, 0 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_ROCK), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 35), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_DARK_PURPLE, COLOUR_GREY, COLOUR_BLACK }, diff --git a/src/openrct2/ride/gentle/meta/GhostTrain.h b/src/openrct2/ride/gentle/meta/GhostTrain.h index b68aa9d7f5..7d1fd0df29 100644 --- a/src/openrct2/ride/gentle/meta/GhostTrain.h +++ b/src/openrct2/ride/gentle/meta/GhostTrain.h @@ -46,7 +46,7 @@ constexpr const RideTypeDescriptor GhostTrainRTD = SET_FIELD(BuildCosts, { 26, 5, 30, }), SET_FIELD(DefaultPrices, { 15, 0 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_HORROR), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 50), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_DARK_GREEN, COLOUR_BORDEAUX_RED, COLOUR_BLACK }, diff --git a/src/openrct2/ride/gentle/meta/HauntedHouse.h b/src/openrct2/ride/gentle/meta/HauntedHouse.h index 9cea400f24..96d48b9a99 100644 --- a/src/openrct2/ride/gentle/meta/HauntedHouse.h +++ b/src/openrct2/ride/gentle/meta/HauntedHouse.h @@ -44,7 +44,7 @@ constexpr const RideTypeDescriptor HauntedHouseRTD = SET_FIELD(BuildCosts, { 85, 2, 1, }), SET_FIELD(DefaultPrices, { 10, 0 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_HORROR), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 22), SET_FIELD(ColourPresets, DEFAULT_FLAT_RIDE_COLOUR_PRESET), SET_FIELD(ColourPreview, { 0, 0 }), diff --git a/src/openrct2/ride/gentle/meta/Maze.h b/src/openrct2/ride/gentle/meta/Maze.h index ec4b936bdf..57e8243971 100644 --- a/src/openrct2/ride/gentle/meta/Maze.h +++ b/src/openrct2/ride/gentle/meta/Maze.h @@ -42,7 +42,7 @@ constexpr const RideTypeDescriptor MazeRTD = SET_FIELD(BuildCosts, { 55, 2, 8, }), SET_FIELD(DefaultPrices, { 10, 0 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_SUMMER), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 40), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_GREY, COLOUR_GREY, COLOUR_GREY }, diff --git a/src/openrct2/ride/gentle/meta/MerryGoRound.h b/src/openrct2/ride/gentle/meta/MerryGoRound.h index 907d85339f..98bf5a2e03 100644 --- a/src/openrct2/ride/gentle/meta/MerryGoRound.h +++ b/src/openrct2/ride/gentle/meta/MerryGoRound.h @@ -44,7 +44,7 @@ constexpr const RideTypeDescriptor MerryGoRoundRTD = SET_FIELD(BuildCosts, { 115, 2, 1, }), SET_FIELD(DefaultPrices, { 10, 0 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_FAIRGROUND_ORGAN), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 45), SET_FIELD(ColourPresets, DEFAULT_FLAT_RIDE_COLOUR_PRESET), SET_FIELD(ColourPreview, { 0, 0 }), diff --git a/src/openrct2/ride/gentle/meta/MiniGolf.h b/src/openrct2/ride/gentle/meta/MiniGolf.h index f4bcdd406b..b68f2b68bf 100644 --- a/src/openrct2/ride/gentle/meta/MiniGolf.h +++ b/src/openrct2/ride/gentle/meta/MiniGolf.h @@ -43,7 +43,7 @@ constexpr const RideTypeDescriptor MiniGolfRTD = SET_FIELD(BuildCosts, { 50, 7, 20, }), SET_FIELD(DefaultPrices, { 10, 0 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_SUMMER), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 23), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_SATURATED_GREEN, COLOUR_DARK_BROWN, COLOUR_BLACK }, diff --git a/src/openrct2/ride/gentle/meta/MiniHelicopters.h b/src/openrct2/ride/gentle/meta/MiniHelicopters.h index c9d047c899..624f94f23b 100644 --- a/src/openrct2/ride/gentle/meta/MiniHelicopters.h +++ b/src/openrct2/ride/gentle/meta/MiniHelicopters.h @@ -46,7 +46,7 @@ constexpr const RideTypeDescriptor MiniHelicoptersRTD = SET_FIELD(BuildCosts, { 25, 5, 30, }), SET_FIELD(DefaultPrices, { 15, 0 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_SUMMER), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 45), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_DARK_PURPLE, COLOUR_YELLOW, COLOUR_DARK_PURPLE }, diff --git a/src/openrct2/ride/gentle/meta/MonorailCycles.h b/src/openrct2/ride/gentle/meta/MonorailCycles.h index f331d02b67..1d1f3f4983 100644 --- a/src/openrct2/ride/gentle/meta/MonorailCycles.h +++ b/src/openrct2/ride/gentle/meta/MonorailCycles.h @@ -45,7 +45,7 @@ constexpr const RideTypeDescriptor MonorailCyclesRTD = SET_FIELD(BuildCosts, { 20, 5, 30, }), SET_FIELD(DefaultPrices, { 15, 0 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_SUMMER), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 45), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_DARK_BROWN, COLOUR_GREY, COLOUR_DARK_BROWN }, diff --git a/src/openrct2/ride/gentle/meta/MonsterTrucks.h b/src/openrct2/ride/gentle/meta/MonsterTrucks.h index 7c1a7fac56..a7fb0fbe36 100644 --- a/src/openrct2/ride/gentle/meta/MonsterTrucks.h +++ b/src/openrct2/ride/gentle/meta/MonsterTrucks.h @@ -46,7 +46,7 @@ constexpr const RideTypeDescriptor MonsterTrucksRTD = SET_FIELD(BuildCosts, { 25, 5, 30, }), SET_FIELD(DefaultPrices, { 15, 0 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_SUMMER), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 50), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_SATURATED_BROWN, COLOUR_SATURATED_BROWN, COLOUR_GREY }, diff --git a/src/openrct2/ride/gentle/meta/ObservationTower.h b/src/openrct2/ride/gentle/meta/ObservationTower.h index df18d1107e..3001175af8 100644 --- a/src/openrct2/ride/gentle/meta/ObservationTower.h +++ b/src/openrct2/ride/gentle/meta/ObservationTower.h @@ -44,7 +44,7 @@ constexpr const RideTypeDescriptor ObservationTowerRTD = SET_FIELD(BuildCosts, { 37, 0, 4, }), SET_FIELD(DefaultPrices, { 10, 0 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_SUMMER), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 45), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_BRIGHT_RED, COLOUR_BLACK, COLOUR_GREY }, diff --git a/src/openrct2/ride/gentle/meta/SpaceRings.h b/src/openrct2/ride/gentle/meta/SpaceRings.h index d4293376e3..f61b2e7a90 100644 --- a/src/openrct2/ride/gentle/meta/SpaceRings.h +++ b/src/openrct2/ride/gentle/meta/SpaceRings.h @@ -44,7 +44,7 @@ constexpr const RideTypeDescriptor SpaceRingsRTD = SET_FIELD(BuildCosts, { 72, 2, 1, }), SET_FIELD(DefaultPrices, { 5, 0 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_GENTLE), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 30), SET_FIELD(ColourPresets, DEFAULT_FLAT_RIDE_COLOUR_PRESET), SET_FIELD(ColourPreview, { 0, 0 }), diff --git a/src/openrct2/ride/gentle/meta/SpiralSlide.h b/src/openrct2/ride/gentle/meta/SpiralSlide.h index dd651a68d2..0abf17a7e2 100644 --- a/src/openrct2/ride/gentle/meta/SpiralSlide.h +++ b/src/openrct2/ride/gentle/meta/SpiralSlide.h @@ -44,7 +44,7 @@ constexpr const RideTypeDescriptor SpiralSlideRTD = SET_FIELD(BuildCosts, { 165, 2, 1, }), SET_FIELD(DefaultPrices, { 15, 0 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_SUMMER), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 40), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_BRIGHT_RED, COLOUR_YELLOW, COLOUR_DARK_BROWN }, diff --git a/src/openrct2/ride/shops/meta/CashMachine.h b/src/openrct2/ride/shops/meta/CashMachine.h index 17113cb575..37357a096e 100644 --- a/src/openrct2/ride/shops/meta/CashMachine.h +++ b/src/openrct2/ride/shops/meta/CashMachine.h @@ -41,7 +41,7 @@ constexpr const RideTypeDescriptor CashMachineRTD = SET_FIELD(BuildCosts, { 400, 0, 1, }), SET_FIELD(DefaultPrices, { 0, 0 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_GENTLE), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 5), SET_FIELD(ColourPresets, DEFAULT_FLAT_RIDE_COLOUR_PRESET), SET_FIELD(ColourPreview, { 0, 0 }), diff --git a/src/openrct2/ride/shops/meta/DrinkStall.h b/src/openrct2/ride/shops/meta/DrinkStall.h index 9f728edf9a..c60b7935c3 100644 --- a/src/openrct2/ride/shops/meta/DrinkStall.h +++ b/src/openrct2/ride/shops/meta/DrinkStall.h @@ -42,7 +42,7 @@ constexpr const RideTypeDescriptor DrinkStallRTD = SET_FIELD(BuildCosts, { 500, 0, 1, }), SET_FIELD(DefaultPrices, { 0, 0 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_GENTLE), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 15), SET_FIELD(ColourPresets, DEFAULT_STALL_COLOUR_PRESET), SET_FIELD(ColourPreview, { 0, 0 }), diff --git a/src/openrct2/ride/shops/meta/FirstAid.h b/src/openrct2/ride/shops/meta/FirstAid.h index cf52873931..a2dc2da89f 100644 --- a/src/openrct2/ride/shops/meta/FirstAid.h +++ b/src/openrct2/ride/shops/meta/FirstAid.h @@ -42,7 +42,7 @@ constexpr const RideTypeDescriptor FirstAidRTD = SET_FIELD(BuildCosts, { 500, 0, 1, }), SET_FIELD(DefaultPrices, { 0, 0 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_GENTLE), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 5), SET_FIELD(ColourPresets, DEFAULT_FLAT_RIDE_COLOUR_PRESET), SET_FIELD(ColourPreview, { 0, 0 }), diff --git a/src/openrct2/ride/shops/meta/FoodStall.h b/src/openrct2/ride/shops/meta/FoodStall.h index f88065ce7f..be0cbc3d20 100644 --- a/src/openrct2/ride/shops/meta/FoodStall.h +++ b/src/openrct2/ride/shops/meta/FoodStall.h @@ -42,7 +42,7 @@ constexpr const RideTypeDescriptor FoodStallRTD = SET_FIELD(BuildCosts, { 600, 0, 1, }), SET_FIELD(DefaultPrices, { 0, 0 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_GENTLE), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 15), SET_FIELD(ColourPresets, DEFAULT_STALL_COLOUR_PRESET), SET_FIELD(ColourPreview, { 0, 0 }), diff --git a/src/openrct2/ride/shops/meta/InformationKiosk.h b/src/openrct2/ride/shops/meta/InformationKiosk.h index 80c96ee2ca..03a35fdc63 100644 --- a/src/openrct2/ride/shops/meta/InformationKiosk.h +++ b/src/openrct2/ride/shops/meta/InformationKiosk.h @@ -42,7 +42,7 @@ constexpr const RideTypeDescriptor InformationKioskRTD = SET_FIELD(BuildCosts, { 500, 0, 1, }), SET_FIELD(DefaultPrices, { 0, 0 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_GENTLE), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 15), SET_FIELD(ColourPresets, DEFAULT_STALL_COLOUR_PRESET), SET_FIELD(ColourPreview, { 0, 0 }), diff --git a/src/openrct2/ride/shops/meta/Shop.h b/src/openrct2/ride/shops/meta/Shop.h index 77151c314d..587bae9d18 100644 --- a/src/openrct2/ride/shops/meta/Shop.h +++ b/src/openrct2/ride/shops/meta/Shop.h @@ -42,7 +42,7 @@ constexpr const RideTypeDescriptor ShopRTD = SET_FIELD(BuildCosts, { 400, 0, 1, }), SET_FIELD(DefaultPrices, { 0, 0 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_GENTLE), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 15), SET_FIELD(ColourPresets, DEFAULT_STALL_COLOUR_PRESET), SET_FIELD(ColourPreview, { 0, 0 }), diff --git a/src/openrct2/ride/shops/meta/Toilets.h b/src/openrct2/ride/shops/meta/Toilets.h index 821aedb137..0959d9c791 100644 --- a/src/openrct2/ride/shops/meta/Toilets.h +++ b/src/openrct2/ride/shops/meta/Toilets.h @@ -42,7 +42,7 @@ constexpr const RideTypeDescriptor ToiletsRTD = SET_FIELD(BuildCosts, { 450, 0, 1, }), SET_FIELD(DefaultPrices, { 0, 0 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_GENTLE), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 5), SET_FIELD(ColourPresets, DEFAULT_FLAT_RIDE_COLOUR_PRESET), SET_FIELD(ColourPreview, { 0, 0 }), diff --git a/src/openrct2/ride/thrill/meta/3DCinema.h b/src/openrct2/ride/thrill/meta/3DCinema.h index 9bd5f54a49..d77841f6b1 100644 --- a/src/openrct2/ride/thrill/meta/3DCinema.h +++ b/src/openrct2/ride/thrill/meta/3DCinema.h @@ -44,7 +44,7 @@ constexpr const RideTypeDescriptor CinemaRTD = SET_FIELD(BuildCosts, { 140, 2, 1, }), SET_FIELD(DefaultPrices, { 20, 0 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_ROCK), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 45), SET_FIELD(ColourPresets, DEFAULT_FLAT_RIDE_COLOUR_PRESET), SET_FIELD(ColourPreview, { 0, 0 }), diff --git a/src/openrct2/ride/thrill/meta/Enterprise.h b/src/openrct2/ride/thrill/meta/Enterprise.h index 562daf0b6f..4da9f3b4cd 100644 --- a/src/openrct2/ride/thrill/meta/Enterprise.h +++ b/src/openrct2/ride/thrill/meta/Enterprise.h @@ -44,7 +44,7 @@ constexpr const RideTypeDescriptor EnterpriseRTD = SET_FIELD(BuildCosts, { 100, 2, 1, }), SET_FIELD(DefaultPrices, { 20, 0 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_ROCK_STYLE_2), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 45), SET_FIELD(ColourPresets, DEFAULT_FLAT_RIDE_COLOUR_PRESET), SET_FIELD(ColourPreview, { 0, 0 }), diff --git a/src/openrct2/ride/thrill/meta/GoKarts.h b/src/openrct2/ride/thrill/meta/GoKarts.h index 746d1616ce..0bae76b34e 100644 --- a/src/openrct2/ride/thrill/meta/GoKarts.h +++ b/src/openrct2/ride/thrill/meta/GoKarts.h @@ -43,7 +43,7 @@ constexpr const RideTypeDescriptor GoKartsRTD = SET_FIELD(BuildCosts, { 62, 4, 20, }), SET_FIELD(DefaultPrices, { 20, 0 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_TECHNO), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 55), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_BORDEAUX_RED, COLOUR_BORDEAUX_RED, COLOUR_DARK_BROWN }, diff --git a/src/openrct2/ride/thrill/meta/LaunchedFreefall.h b/src/openrct2/ride/thrill/meta/LaunchedFreefall.h index 34e6441721..e81bf617d3 100644 --- a/src/openrct2/ride/thrill/meta/LaunchedFreefall.h +++ b/src/openrct2/ride/thrill/meta/LaunchedFreefall.h @@ -44,7 +44,7 @@ constexpr const RideTypeDescriptor LaunchedFreefallRTD = SET_FIELD(BuildCosts, { 50, 0, 4, }), SET_FIELD(DefaultPrices, { 20, 0 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_TECHNO), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 65), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_WHITE, COLOUR_BRIGHT_RED, COLOUR_LIGHT_PURPLE }, diff --git a/src/openrct2/ride/thrill/meta/MagicCarpet.h b/src/openrct2/ride/thrill/meta/MagicCarpet.h index 587824a2bf..0c1b10d4ef 100644 --- a/src/openrct2/ride/thrill/meta/MagicCarpet.h +++ b/src/openrct2/ride/thrill/meta/MagicCarpet.h @@ -45,7 +45,7 @@ constexpr const RideTypeDescriptor MagicCarpetRTD = SET_FIELD(BuildCosts, { 198, 2, 1, }), SET_FIELD(DefaultPrices, { 15, 0 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_EGYPTIAN), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 35), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_DARK_PURPLE, COLOUR_WHITE, COLOUR_BLACK }, diff --git a/src/openrct2/ride/thrill/meta/MotionSimulator.h b/src/openrct2/ride/thrill/meta/MotionSimulator.h index 431b4fab1d..ad1cc195a5 100644 --- a/src/openrct2/ride/thrill/meta/MotionSimulator.h +++ b/src/openrct2/ride/thrill/meta/MotionSimulator.h @@ -44,7 +44,7 @@ constexpr const RideTypeDescriptor MotionSimulatorRTD = SET_FIELD(BuildCosts, { 220, 2, 1, }), SET_FIELD(DefaultPrices, { 20, 0 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_ROCK), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 45), SET_FIELD(ColourPresets, DEFAULT_FLAT_RIDE_COLOUR_PRESET), SET_FIELD(ColourPreview, { 0, 0 }), diff --git a/src/openrct2/ride/thrill/meta/RotoDrop.h b/src/openrct2/ride/thrill/meta/RotoDrop.h index f20157b0e9..84b8b89964 100644 --- a/src/openrct2/ride/thrill/meta/RotoDrop.h +++ b/src/openrct2/ride/thrill/meta/RotoDrop.h @@ -45,7 +45,7 @@ constexpr const RideTypeDescriptor RotoDropRTD = SET_FIELD(BuildCosts, { 55, 0, 4, }), SET_FIELD(DefaultPrices, { 20, 0 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_ROCK), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 45), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_BORDEAUX_RED, COLOUR_YELLOW, COLOUR_GREY }, diff --git a/src/openrct2/ride/thrill/meta/SwingingInverterShip.h b/src/openrct2/ride/thrill/meta/SwingingInverterShip.h index 7c66602331..9d521055bd 100644 --- a/src/openrct2/ride/thrill/meta/SwingingInverterShip.h +++ b/src/openrct2/ride/thrill/meta/SwingingInverterShip.h @@ -44,7 +44,7 @@ constexpr const RideTypeDescriptor SwingingInverterShipRTD = SET_FIELD(BuildCosts, { 212, 2, 1, }), SET_FIELD(DefaultPrices, { 15, 0 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_TECHNO), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 35), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_BORDEAUX_RED, COLOUR_YELLOW, COLOUR_BLACK }, diff --git a/src/openrct2/ride/thrill/meta/SwingingShip.h b/src/openrct2/ride/thrill/meta/SwingingShip.h index 7056701d31..738c906b30 100644 --- a/src/openrct2/ride/thrill/meta/SwingingShip.h +++ b/src/openrct2/ride/thrill/meta/SwingingShip.h @@ -45,7 +45,7 @@ constexpr const RideTypeDescriptor SwingingShipRTD = SET_FIELD(BuildCosts, { 155, 2, 1, }), SET_FIELD(DefaultPrices, { 15, 0 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_PIRATES), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 35), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_DARK_BROWN, COLOUR_DARK_BROWN, COLOUR_BLACK }, diff --git a/src/openrct2/ride/thrill/meta/TopSpin.h b/src/openrct2/ride/thrill/meta/TopSpin.h index b7b9bae4f6..badae25530 100644 --- a/src/openrct2/ride/thrill/meta/TopSpin.h +++ b/src/openrct2/ride/thrill/meta/TopSpin.h @@ -44,7 +44,7 @@ constexpr const RideTypeDescriptor TopSpinRTD = SET_FIELD(BuildCosts, { 145, 2, 1, }), SET_FIELD(DefaultPrices, { 20, 0 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_TECHNO), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 55), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_BRIGHT_RED, COLOUR_YELLOW, COLOUR_YELLOW }, diff --git a/src/openrct2/ride/thrill/meta/Twist.h b/src/openrct2/ride/thrill/meta/Twist.h index 8e6280592b..83f6f223f7 100644 --- a/src/openrct2/ride/thrill/meta/Twist.h +++ b/src/openrct2/ride/thrill/meta/Twist.h @@ -43,7 +43,7 @@ constexpr const RideTypeDescriptor TwistRTD = SET_FIELD(BuildCosts, { 90, 2, 1, }), SET_FIELD(DefaultPrices, { 10, 0 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_GENTLE), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 40), SET_FIELD(ColourPresets, DEFAULT_FLAT_RIDE_COLOUR_PRESET), SET_FIELD(ColourPreview, { 0, 0 }), diff --git a/src/openrct2/ride/transport/meta/Chairlift.h b/src/openrct2/ride/transport/meta/Chairlift.h index c116418137..3f7a110347 100644 --- a/src/openrct2/ride/transport/meta/Chairlift.h +++ b/src/openrct2/ride/transport/meta/Chairlift.h @@ -45,7 +45,7 @@ constexpr const RideTypeDescriptor ChairliftRTD = SET_FIELD(BuildCosts, { 65, 1, 30, }), SET_FIELD(DefaultPrices, { 10, 0 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_SUMMER), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 55), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_BORDEAUX_RED, COLOUR_BORDEAUX_RED, COLOUR_GREY }, diff --git a/src/openrct2/ride/transport/meta/Lift.h b/src/openrct2/ride/transport/meta/Lift.h index 7f036b89cf..33d557d756 100644 --- a/src/openrct2/ride/transport/meta/Lift.h +++ b/src/openrct2/ride/transport/meta/Lift.h @@ -44,7 +44,7 @@ constexpr const RideTypeDescriptor LiftRTD = SET_FIELD(BuildCosts, { 39, 0, 4, }), SET_FIELD(DefaultPrices, { 10, 0 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_SUMMER), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 45), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_BORDEAUX_RED, COLOUR_BORDEAUX_RED, COLOUR_GREY }, diff --git a/src/openrct2/ride/transport/meta/MiniatureRailway.h b/src/openrct2/ride/transport/meta/MiniatureRailway.h index 06791b7edf..12bcce0f79 100644 --- a/src/openrct2/ride/transport/meta/MiniatureRailway.h +++ b/src/openrct2/ride/transport/meta/MiniatureRailway.h @@ -46,7 +46,7 @@ constexpr const RideTypeDescriptor MiniatureRailwayRTD = SET_FIELD(BuildCosts, { 35, 6, 50, }), SET_FIELD(DefaultPrices, { 10, 0 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_SUMMER), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 50), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_LIGHT_BLUE, COLOUR_WHITE, COLOUR_DARK_BROWN }, diff --git a/src/openrct2/ride/transport/meta/Monorail.h b/src/openrct2/ride/transport/meta/Monorail.h index ef776976db..9c68694177 100644 --- a/src/openrct2/ride/transport/meta/Monorail.h +++ b/src/openrct2/ride/transport/meta/Monorail.h @@ -46,7 +46,7 @@ constexpr const RideTypeDescriptor MonorailRTD = SET_FIELD(BuildCosts, { 42, 5, 50, }), SET_FIELD(DefaultPrices, { 10, 0 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_SUMMER), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 60), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_GREY, COLOUR_GREY, COLOUR_DARK_OLIVE_GREEN }, diff --git a/src/openrct2/ride/transport/meta/SuspendedMonorail.h b/src/openrct2/ride/transport/meta/SuspendedMonorail.h index 6e69c435ed..88c46671a3 100644 --- a/src/openrct2/ride/transport/meta/SuspendedMonorail.h +++ b/src/openrct2/ride/transport/meta/SuspendedMonorail.h @@ -47,7 +47,7 @@ constexpr const RideTypeDescriptor SuspendedMonorailRTD = SET_FIELD(BuildCosts, { 65, 5, 50, }), SET_FIELD(DefaultPrices, { 10, 0 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_SUMMER), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 60), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_BORDEAUX_RED, COLOUR_BLACK, COLOUR_BLACK }, diff --git a/src/openrct2/ride/water/meta/BoatHire.h b/src/openrct2/ride/water/meta/BoatHire.h index a17745217c..4f0c8cd8a0 100644 --- a/src/openrct2/ride/water/meta/BoatHire.h +++ b/src/openrct2/ride/water/meta/BoatHire.h @@ -43,7 +43,7 @@ constexpr const RideTypeDescriptor BoatHireRTD = SET_FIELD(BuildCosts, { 55, 5, 5, }), SET_FIELD(DefaultPrices, { 10, 0 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_WATER), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 40), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_MOSS_GREEN, COLOUR_MOSS_GREEN, COLOUR_WHITE }, diff --git a/src/openrct2/ride/water/meta/DinghySlide.h b/src/openrct2/ride/water/meta/DinghySlide.h index 45e7d2b2d1..c40b35f541 100644 --- a/src/openrct2/ride/water/meta/DinghySlide.h +++ b/src/openrct2/ride/water/meta/DinghySlide.h @@ -55,7 +55,7 @@ constexpr const RideTypeDescriptor DinghySlideRTD = SET_FIELD(BuildCosts, { 40, 4, 40, }), SET_FIELD(DefaultPrices, { 20, 20 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_WATER), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO4), + SET_FIELD(PhotoItem, ShopItem::Photo4), SET_FIELD(BonusValue, 55), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_DARK_GREEN, COLOUR_SATURATED_BROWN, COLOUR_DARK_GREEN }, diff --git a/src/openrct2/ride/water/meta/LogFlume.h b/src/openrct2/ride/water/meta/LogFlume.h index a7be962160..017fd299da 100644 --- a/src/openrct2/ride/water/meta/LogFlume.h +++ b/src/openrct2/ride/water/meta/LogFlume.h @@ -46,7 +46,7 @@ constexpr const RideTypeDescriptor LogFlumeRTD = SET_FIELD(BuildCosts, { 45, 5, 40, }), SET_FIELD(DefaultPrices, { 20, 20 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_WATER), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO4), + SET_FIELD(PhotoItem, ShopItem::Photo4), SET_FIELD(BonusValue, 65), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_DARK_BROWN, COLOUR_DARK_BROWN, COLOUR_GREY }, diff --git a/src/openrct2/ride/water/meta/RiverRafts.h b/src/openrct2/ride/water/meta/RiverRafts.h index 98f9c7931a..d153f9ab63 100644 --- a/src/openrct2/ride/water/meta/RiverRafts.h +++ b/src/openrct2/ride/water/meta/RiverRafts.h @@ -46,7 +46,7 @@ constexpr const RideTypeDescriptor RiverRaftsRTD = SET_FIELD(BuildCosts, { 40, 5, 30, }), SET_FIELD(DefaultPrices, { 10, 20 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_GENTLE), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO4), + SET_FIELD(PhotoItem, ShopItem::Photo4), SET_FIELD(BonusValue, 65), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_BLACK, COLOUR_BLACK, COLOUR_SATURATED_BROWN }, diff --git a/src/openrct2/ride/water/meta/RiverRapids.h b/src/openrct2/ride/water/meta/RiverRapids.h index c5fa66e411..89357f0e67 100644 --- a/src/openrct2/ride/water/meta/RiverRapids.h +++ b/src/openrct2/ride/water/meta/RiverRapids.h @@ -47,7 +47,7 @@ constexpr const RideTypeDescriptor RiverRapidsRTD = SET_FIELD(BuildCosts, { 62, 6, 40, }), SET_FIELD(DefaultPrices, { 20, 20 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_WATER), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO4), + SET_FIELD(PhotoItem, ShopItem::Photo4), SET_FIELD(BonusValue, 70), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_WHITE, COLOUR_BLACK, COLOUR_DARK_BROWN }, diff --git a/src/openrct2/ride/water/meta/SplashBoats.h b/src/openrct2/ride/water/meta/SplashBoats.h index 194c5c0a2d..9390ebcc12 100644 --- a/src/openrct2/ride/water/meta/SplashBoats.h +++ b/src/openrct2/ride/water/meta/SplashBoats.h @@ -46,7 +46,7 @@ constexpr const RideTypeDescriptor SplashBoatsRTD = SET_FIELD(BuildCosts, { 57, 5, 30, }), SET_FIELD(DefaultPrices, { 20, 20 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_WATER), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO4), + SET_FIELD(PhotoItem, ShopItem::Photo4), SET_FIELD(BonusValue, 65), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_DARK_BROWN, COLOUR_DARK_BROWN, COLOUR_BLACK }, diff --git a/src/openrct2/ride/water/meta/SubmarineRide.h b/src/openrct2/ride/water/meta/SubmarineRide.h index db829ae262..4d88ba60db 100644 --- a/src/openrct2/ride/water/meta/SubmarineRide.h +++ b/src/openrct2/ride/water/meta/SubmarineRide.h @@ -45,7 +45,7 @@ constexpr const RideTypeDescriptor SubmarineRideRTD = SET_FIELD(BuildCosts, { 70, 0, 5, }), SET_FIELD(DefaultPrices, { 10, 0 }), SET_FIELD(DefaultMusic, MUSIC_STYLE_WATER), - SET_FIELD(PhotoItem, SHOP_ITEM_PHOTO), + SET_FIELD(PhotoItem, ShopItem::Photo), SET_FIELD(BonusValue, 40), SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( { COLOUR_GREY, COLOUR_GREY, COLOUR_BLACK }, diff --git a/src/openrct2/scripting/ScObject.hpp b/src/openrct2/scripting/ScObject.hpp index c8561cf590..1b044b3cc3 100644 --- a/src/openrct2/scripting/ScObject.hpp +++ b/src/openrct2/scripting/ScObject.hpp @@ -887,7 +887,7 @@ namespace OpenRCT2::Scripting auto entry = GetLegacyData(); if (entry != nullptr) { - return entry->shop_item[0]; + return EnumValue(entry->shop_item[0]); } return 0; } @@ -897,7 +897,7 @@ namespace OpenRCT2::Scripting auto entry = GetLegacyData(); if (entry != nullptr) { - return entry->shop_item[1]; + return EnumValue(entry->shop_item[1]); } return 0; }