mirror of https://github.com/OpenRCT2/OpenRCT2.git
* refactor: integrated PEEP_ITEM into SHOP_ITEM * refactor: converted merged enum to flag Only former occurrences of PEEP_ITEM * cleanUp: code cleaned after merging * refactor: converted ShopItem to strong enum code reformatting * refactor: ShopItem enum items renamed code formatted * refactor: new getter and setter functions for Item...Flags * refactor: replaced all occurrences of ItemStandardFlags with appropriate getter and setter functions. COMPARE_FIELD macro needs to be commented out or the flag has to stay public. * refactor: all occurrences of ItemExtraFlags replaced with proper function calls. COMPARE_FIELD macro issue not resolved. * refactor: introduced new variable for unified item flags * refactor: adapted accessor functions accessor functions were modified to accommodate both standard and extra ShopItem flags * refactor: ItemExtraFlags accessor functions are replaced with general functions * refactor: reverted to original uint32_t flag variables * refactor: implemented suggested changes * refactor: integrate additional comments * refactor: incorporated requested changes * refactor: incorporated requested changes added static_cast<PeepThoughtType> in lines 1572 and 1590
This commit is contained in:
parent
8ce924bd64
commit
3de233c796
|
@ -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<rct_string_id>(ShopItems[campaign->ShopItemType].Naming.Plural);
|
||||
ft.Add<rct_string_id>(GetShopItemDescriptor(campaign->ShopItemType).Naming.Plural);
|
||||
break;
|
||||
default:
|
||||
{
|
||||
|
|
|
@ -1839,15 +1839,15 @@ void window_guest_inventory_update(rct_window* w)
|
|||
}
|
||||
}
|
||||
|
||||
static std::pair<rct_string_id, Formatter> window_guest_inventory_format_item(Peep* peep, int32_t item)
|
||||
static std::pair<rct_string_id, Formatter> 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<uint32_t>(ShopItems[item].Image);
|
||||
ft.Add<rct_string_id>(ShopItems[item].Naming.Display);
|
||||
ft.Add<uint32_t>(GetShopItemDescriptor(item).Image);
|
||||
ft.Add<rct_string_id>(GetShopItemDescriptor(item).Naming.Display);
|
||||
ft.Add<rct_string_id>(STR_STRING);
|
||||
ft.Add<const char*>(parkName);
|
||||
|
||||
|
@ -1855,11 +1855,11 @@ static std::pair<rct_string_id, Formatter> window_guest_inventory_format_item(Pe
|
|||
Ride* ride{};
|
||||
switch (item)
|
||||
{
|
||||
case SHOP_ITEM_BALLOON:
|
||||
case ShopItem::Balloon:
|
||||
ft.Rewind();
|
||||
ft.Add<uint32_t>(SPRITE_ID_PALETTE_COLOUR_1(peep->BalloonColour) | ShopItems[item].Image);
|
||||
ft.Add<uint32_t>(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<rct_string_id, Formatter> window_guest_inventory_format_item(Pe
|
|||
}
|
||||
|
||||
break;
|
||||
case SHOP_ITEM_UMBRELLA:
|
||||
case ShopItem::Umbrella:
|
||||
ft.Rewind();
|
||||
ft.Add<uint32_t>(SPRITE_ID_PALETTE_COLOUR_1(peep->UmbrellaColour) | ShopItems[item].Image);
|
||||
ft.Add<uint32_t>(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<rct_string_id, Formatter> window_guest_inventory_format_item(Pe
|
|||
ft.Rewind();
|
||||
ft.Increment(6);
|
||||
ft.Add<rct_string_id>(STR_PEEP_INVENTORY_VOUCHER_FOOD_OR_DRINK_FREE);
|
||||
ft.Add<rct_string_id>(ShopItems[peep->VoucherShopItem].Naming.Singular);
|
||||
ft.Add<rct_string_id>(GetShopItemDescriptor(peep->VoucherShopItem).Naming.Singular);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case SHOP_ITEM_HAT:
|
||||
case ShopItem::Hat:
|
||||
ft.Rewind();
|
||||
ft.Add<uint32_t>(SPRITE_ID_PALETTE_COLOUR_1(peep->HatColour) | ShopItems[item].Image);
|
||||
ft.Add<uint32_t>(SPRITE_ID_PALETTE_COLOUR_1(peep->HatColour) | GetShopItemDescriptor(item).Image);
|
||||
break;
|
||||
case SHOP_ITEM_TSHIRT:
|
||||
case ShopItem::TShirt:
|
||||
ft.Rewind();
|
||||
ft.Add<uint32_t>(SPRITE_ID_PALETTE_COLOUR_1(peep->TshirtColour) | ShopItems[item].Image);
|
||||
ft.Add<uint32_t>(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<rct_string_id, Formatter> 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<rct_string_id, Formatter> 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<rct_string_id, Formatter> 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;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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<rct_string_id>(ShopItems[shopItem].Naming.Plural);
|
||||
ft.Add<rct_string_id>(GetShopItemDescriptor(shopItem).Naming.Plural);
|
||||
ft.Add<uint32_t>(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<rct_string_id>(ShopItems[shopItem].Naming.Plural);
|
||||
ft.Add<rct_string_id>(GetShopItemDescriptor(shopItem).Naming.Plural);
|
||||
ft.Add<uint32_t>(ride->no_secondary_items_sold);
|
||||
gfx_draw_string_left(dpi, STR_ITEMS_SOLD, ft.Data(), COLOUR_BLACK, screenCoords);
|
||||
screenCoords.y += LIST_ROW_HEIGHT;
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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<money16>(price);
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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++;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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<rct_string_id>(ShopItems[campaign.ShopItemType].Naming.Plural);
|
||||
ft.Add<rct_string_id>(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;
|
||||
}
|
||||
|
|
|
@ -83,8 +83,8 @@ void RideObject::ReadLegacy(IReadObjectContext* context, IStream* stream)
|
|||
_legacyType.max_height = stream->ReadValue<uint8_t>();
|
||||
// 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<uint8_t>();
|
||||
_legacyType.shop_item[1] = stream->ReadValue<uint8_t>();
|
||||
_legacyType.shop_item[0] = static_cast<ShopItem>(stream->ReadValue<uint8_t>());
|
||||
_legacyType.shop_item[1] = static_cast<ShopItem>(stream->ReadValue<uint8_t>());
|
||||
|
||||
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<uint8_t>(RIDE_CATEGORY_TRANSPORT);
|
||||
}
|
||||
|
||||
uint8_t RideObject::ParseShopItem(const std::string& s)
|
||||
ShopItem RideObject::ParseShopItem(const std::string& s)
|
||||
{
|
||||
static const std::unordered_map<std::string, uint8_t> 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<std::string, ShopItem> 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<uint8_t>(SHOP_ITEM_NONE);
|
||||
return (result != LookupTable.end()) ? result->second : ShopItem::None;
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
};
|
||||
|
|
|
@ -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<ShopItem>(chosen_food));
|
||||
|
||||
uint8_t discard_container = peep_item_containers[chosen_food];
|
||||
if (discard_container != 0xFF)
|
||||
{
|
||||
ItemStandardFlags |= (1 << discard_container);
|
||||
GiveItem(static_cast<ShopItem>(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<ShopItem>(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<ShopItem>(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<PeepThoughtType>(
|
||||
(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<uint8_t>(shopItem - ShopItem::Photo2)
|
||||
: PEEP_THOUGHT_TYPE_BALLOON_MUCH + static_cast<uint8_t>(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<PeepThoughtType>(
|
||||
(shopItem >= 32 ? (PEEP_THOUGHT_TYPE_PHOTO2 + (shopItem - 32))
|
||||
: (PEEP_THOUGHT_TYPE_BALLOON + shopItem)));
|
||||
shopItem >= ShopItem::Photo2
|
||||
? PEEP_THOUGHT_TYPE_PHOTO2 + static_cast<uint8_t>(shopItem - ShopItem::Photo2)
|
||||
: PEEP_THOUGHT_TYPE_BALLOON + static_cast<uint8_t>(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<rct_string_id>(ShopItems[shopItem].Naming.Indefinite);
|
||||
ft.Add<rct_string_id>(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<ExpenditureType>(static_cast<int32_t>(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<MAX_RIDES> 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<typename T> static void peep_head_for_nearest_ride(Guest* peep, bool co
|
|||
}
|
||||
|
||||
std::bitset<MAX_RIDES> 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<ShopItem>(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<ShopItem>(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<ShopItem>(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<Direction>(scenario_rand() & 3) }, litterType);
|
||||
ItemStandardFlags &= ~(1 << cur_container);
|
||||
RemoveItem(static_cast<ShopItem>(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<ShopItem>(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<Direction>(scenario_rand() & 3) }, litterType);
|
||||
ItemExtraFlags &= ~(1 << cur_container);
|
||||
RemoveItem(static_cast<ShopItem>(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;
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
#include "../world/Map.h"
|
||||
#include "RideRatings.h"
|
||||
#include "RideTypes.h"
|
||||
#include "ShopItem.h"
|
||||
#include "Vehicle.h"
|
||||
|
||||
#include <limits>
|
||||
|
@ -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;
|
||||
|
||||
|
|
|
@ -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<uint32_t>(SPR_NONE), static_cast<uint32_t>(SPR_NONE) }),
|
||||
|
|
|
@ -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<uint8_t>(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)];
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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},
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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 }),
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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 }),
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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 }),
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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 }),
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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 }),
|
||||
|
|
|
@ -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 }),
|
||||
|
|
|
@ -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 }),
|
||||
|
|
|
@ -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 }),
|
||||
|
|
|
@ -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 }),
|
||||
|
|
|
@ -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 }),
|
||||
|
|
|
@ -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 }),
|
||||
|
|
|
@ -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 }),
|
||||
|
|
|
@ -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 }),
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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 }),
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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 }),
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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 },
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue