diff --git a/src/openrct2-ui/windows/Cheats.cpp b/src/openrct2-ui/windows/Cheats.cpp index 293340ba38..81cb8b22ec 100644 --- a/src/openrct2-ui/windows/Cheats.cpp +++ b/src/openrct2-ui/windows/Cheats.cpp @@ -28,8 +28,8 @@ #include #include -#define CHEATS_MONEY_DEFAULT MONEY(10000, 00) -#define CHEATS_MONEY_INCREMENT_DIV MONEY(5000, 00) +constexpr auto CHEATS_MONEY_DEFAULT = 10000.00_GBP; +constexpr auto CHEATS_MONEY_INCREMENT_DIV = 5000.00_GBP; // clang-format off enum @@ -462,7 +462,7 @@ public: case WINDOW_CHEATS_PAGE_GUESTS: { auto ft = Formatter::Common(); - ft.Add(MONEY(1000, 00)); + ft.Add(1000.00_GBP); SetCheckboxValue(WIDX_GUEST_IGNORE_RIDE_INTENSITY, gCheatsIgnoreRideIntensity); SetCheckboxValue(WIDX_DISABLE_VANDALISM, gCheatsDisableVandalism); SetCheckboxValue(WIDX_DISABLE_LITTERING, gCheatsDisableLittering); diff --git a/src/openrct2-ui/windows/CustomCurrency.cpp b/src/openrct2-ui/windows/CustomCurrency.cpp index 8ddbfb9996..4c9c55b279 100644 --- a/src/openrct2-ui/windows/CustomCurrency.cpp +++ b/src/openrct2-ui/windows/CustomCurrency.cpp @@ -189,7 +189,7 @@ public: void OnDraw(rct_drawpixelinfo& dpi) override { auto ft = Formatter::Common(); - ft.Add(MONEY(10, 0)); + ft.Add(10.00_GBP); DrawWidgets(dpi); diff --git a/src/openrct2-ui/windows/EditorObjectiveOptions.cpp b/src/openrct2-ui/windows/EditorObjectiveOptions.cpp index 03252d3396..6beb44656d 100644 --- a/src/openrct2-ui/windows/EditorObjectiveOptions.cpp +++ b/src/openrct2-ui/windows/EditorObjectiveOptions.cpp @@ -308,13 +308,13 @@ static void WindowEditorObjectiveOptionsSetObjective(rct_window* w, int32_t obje break; case OBJECTIVE_PARK_VALUE_BY: gScenarioObjective.Year = 3; - gScenarioObjective.Currency = MONEY(50000, 00); + gScenarioObjective.Currency = 50000.00_GBP; break; case OBJECTIVE_GUESTS_AND_RATING: gScenarioObjective.NumGuests = 2000; break; case OBJECTIVE_MONTHLY_RIDE_INCOME: - gScenarioObjective.Currency = MONEY(10000, 00); + gScenarioObjective.Currency = 10000.00_GBP; break; case OBJECTIVE_10_ROLLERCOASTERS_LENGTH: gScenarioObjective.MinimumLength = 1200; @@ -323,10 +323,10 @@ static void WindowEditorObjectiveOptionsSetObjective(rct_window* w, int32_t obje gScenarioObjective.MinimumExcitement = FIXED_2DP(6, 70); break; case OBJECTIVE_REPAY_LOAN_AND_PARK_VALUE: - gScenarioObjective.Currency = MONEY(50000, 00); + gScenarioObjective.Currency = 50000.00_GBP; break; case OBJECTIVE_MONTHLY_FOOD_INCOME: - gScenarioObjective.Currency = MONEY(1000, 00); + gScenarioObjective.Currency = 1000.00_GBP; break; } } @@ -437,24 +437,24 @@ static void WindowEditorObjectiveOptionsArg1Increase(rct_window* w) case OBJECTIVE_PARK_VALUE_BY: case OBJECTIVE_MONTHLY_RIDE_INCOME: case OBJECTIVE_REPAY_LOAN_AND_PARK_VALUE: - if (gScenarioObjective.Currency >= MONEY(2000000, 00)) + if (gScenarioObjective.Currency >= 2000000.00_GBP) { context_show_error(STR_CANT_INCREASE_FURTHER, STR_NONE, {}); } else { - gScenarioObjective.Currency += MONEY(1000, 0); + gScenarioObjective.Currency += 1000.00_GBP; w->Invalidate(); } break; case OBJECTIVE_MONTHLY_FOOD_INCOME: - if (gScenarioObjective.Currency >= MONEY(2000000, 00)) + if (gScenarioObjective.Currency >= 2000000.00_GBP) { context_show_error(STR_CANT_INCREASE_FURTHER, STR_NONE, {}); } else { - gScenarioObjective.Currency += MONEY(100, 0); + gScenarioObjective.Currency += 100.00_GBP; w->Invalidate(); } break; @@ -501,24 +501,24 @@ static void WindowEditorObjectiveOptionsArg1Decrease(rct_window* w) case OBJECTIVE_PARK_VALUE_BY: case OBJECTIVE_MONTHLY_RIDE_INCOME: case OBJECTIVE_REPAY_LOAN_AND_PARK_VALUE: - if (gScenarioObjective.Currency <= MONEY(1000, 00)) + if (gScenarioObjective.Currency <= 1000.00_GBP) { context_show_error(STR_CANT_REDUCE_FURTHER, STR_NONE, {}); } else { - gScenarioObjective.Currency -= MONEY(1000, 0); + gScenarioObjective.Currency -= 1000.00_GBP; w->Invalidate(); } break; case OBJECTIVE_MONTHLY_FOOD_INCOME: - if (gScenarioObjective.Currency <= MONEY(1000, 00)) + if (gScenarioObjective.Currency <= 1000.00_GBP) { context_show_error(STR_CANT_REDUCE_FURTHER, STR_NONE, {}); } else { - gScenarioObjective.Currency -= MONEY(100, 0); + gScenarioObjective.Currency -= 100.00_GBP; w->Invalidate(); } break; diff --git a/src/openrct2-ui/windows/EditorScenarioOptions.cpp b/src/openrct2-ui/windows/EditorScenarioOptions.cpp index 535189a9c4..c09cf61c4c 100644 --- a/src/openrct2-ui/windows/EditorScenarioOptions.cpp +++ b/src/openrct2-ui/windows/EditorScenarioOptions.cpp @@ -449,10 +449,9 @@ static void WindowEditorScenarioOptionsFinancialMousedown(rct_window* w, rct_wid switch (widgetIndex) { case WIDX_INITIAL_CASH_INCREASE: - if (gInitialCash < MONEY(1000000, 00)) + if (gInitialCash < 1000000.00_GBP) { - auto scenarioSetSetting = ScenarioSetSettingAction( - ScenarioSetSetting::InitialCash, gInitialCash + MONEY(500, 00)); + auto scenarioSetSetting = ScenarioSetSettingAction(ScenarioSetSetting::InitialCash, gInitialCash + 500.00_GBP); GameActions::Execute(&scenarioSetSetting); } else @@ -462,10 +461,9 @@ static void WindowEditorScenarioOptionsFinancialMousedown(rct_window* w, rct_wid w->Invalidate(); break; case WIDX_INITIAL_CASH_DECREASE: - if (gInitialCash > MONEY(0, 00)) + if (gInitialCash > 0.00_GBP) { - auto scenarioSetSetting = ScenarioSetSettingAction( - ScenarioSetSetting::InitialCash, gInitialCash - MONEY(500, 00)); + auto scenarioSetSetting = ScenarioSetSettingAction(ScenarioSetSetting::InitialCash, gInitialCash - 500.00_GBP); GameActions::Execute(&scenarioSetSetting); } else @@ -475,10 +473,9 @@ static void WindowEditorScenarioOptionsFinancialMousedown(rct_window* w, rct_wid w->Invalidate(); break; case WIDX_INITIAL_LOAN_INCREASE: - if (gBankLoan < MONEY(5000000, 00)) + if (gBankLoan < 5000000.00_GBP) { - auto scenarioSetSetting = ScenarioSetSettingAction( - ScenarioSetSetting::InitialLoan, gBankLoan + MONEY(1000, 00)); + auto scenarioSetSetting = ScenarioSetSettingAction(ScenarioSetSetting::InitialLoan, gBankLoan + 1000.00_GBP); GameActions::Execute(&scenarioSetSetting); } else @@ -488,10 +485,9 @@ static void WindowEditorScenarioOptionsFinancialMousedown(rct_window* w, rct_wid w->Invalidate(); break; case WIDX_INITIAL_LOAN_DECREASE: - if (gBankLoan > MONEY(0, 00)) + if (gBankLoan > 0.00_GBP) { - auto scenarioSetSetting = ScenarioSetSettingAction( - ScenarioSetSetting::InitialLoan, gBankLoan - MONEY(1000, 00)); + auto scenarioSetSetting = ScenarioSetSettingAction(ScenarioSetSetting::InitialLoan, gBankLoan - 1000.00_GBP); GameActions::Execute(&scenarioSetSetting); } else @@ -501,10 +497,10 @@ static void WindowEditorScenarioOptionsFinancialMousedown(rct_window* w, rct_wid w->Invalidate(); break; case WIDX_MAXIMUM_LOAN_INCREASE: - if (gMaxBankLoan < MONEY(5000000, 00)) + if (gMaxBankLoan < 5000000.00_GBP) { auto scenarioSetSetting = ScenarioSetSettingAction( - ScenarioSetSetting::MaximumLoanSize, gMaxBankLoan + MONEY(1000, 00)); + ScenarioSetSetting::MaximumLoanSize, gMaxBankLoan + 1000.00_GBP); GameActions::Execute(&scenarioSetSetting); } else @@ -514,10 +510,10 @@ static void WindowEditorScenarioOptionsFinancialMousedown(rct_window* w, rct_wid w->Invalidate(); break; case WIDX_MAXIMUM_LOAN_DECREASE: - if (gMaxBankLoan > MONEY(0, 00)) + if (gMaxBankLoan > 0.00_GBP) { auto scenarioSetSetting = ScenarioSetSettingAction( - ScenarioSetSetting::MaximumLoanSize, gMaxBankLoan - MONEY(1000, 00)); + ScenarioSetSetting::MaximumLoanSize, gMaxBankLoan - 1000.00_GBP); GameActions::Execute(&scenarioSetSetting); } else @@ -741,10 +737,10 @@ static void WindowEditorScenarioOptionsGuestsMousedown(rct_window* w, rct_widget switch (widgetIndex) { case WIDX_CASH_PER_GUEST_INCREASE: - if (gGuestInitialCash < MONEY(1000, 00)) + if (gGuestInitialCash < 1000.00_GBP) { auto scenarioSetSetting = ScenarioSetSettingAction( - ScenarioSetSetting::AverageCashPerGuest, gGuestInitialCash + MONEY(1, 00)); + ScenarioSetSetting::AverageCashPerGuest, gGuestInitialCash + 1.00_GBP); GameActions::Execute(&scenarioSetSetting); } else @@ -754,10 +750,10 @@ static void WindowEditorScenarioOptionsGuestsMousedown(rct_window* w, rct_widget w->Invalidate(); break; case WIDX_CASH_PER_GUEST_DECREASE: - if (gGuestInitialCash > MONEY(0, 00)) + if (gGuestInitialCash > 0.00_GBP) { auto scenarioSetSetting = ScenarioSetSettingAction( - ScenarioSetSetting::AverageCashPerGuest, gGuestInitialCash - MONEY(1, 00)); + ScenarioSetSetting::AverageCashPerGuest, gGuestInitialCash - 1.00_GBP); GameActions::Execute(&scenarioSetSetting); } else @@ -1050,10 +1046,9 @@ static void WindowEditorScenarioOptionsParkMousedown(rct_window* w, rct_widgetin switch (widgetIndex) { case WIDX_LAND_COST_INCREASE: - if (gLandPrice < MONEY(200, 00)) + if (gLandPrice < 200.00_GBP) { - auto scenarioSetSetting = ScenarioSetSettingAction( - ScenarioSetSetting::CostToBuyLand, gLandPrice + MONEY(1, 00)); + auto scenarioSetSetting = ScenarioSetSettingAction(ScenarioSetSetting::CostToBuyLand, gLandPrice + 1.00_GBP); GameActions::Execute(&scenarioSetSetting); } else @@ -1063,10 +1058,9 @@ static void WindowEditorScenarioOptionsParkMousedown(rct_window* w, rct_widgetin w->Invalidate(); break; case WIDX_LAND_COST_DECREASE: - if (gLandPrice > MONEY(5, 00)) + if (gLandPrice > 5.00_GBP) { - auto scenarioSetSetting = ScenarioSetSettingAction( - ScenarioSetSetting::CostToBuyLand, gLandPrice - MONEY(1, 00)); + auto scenarioSetSetting = ScenarioSetSettingAction(ScenarioSetSetting::CostToBuyLand, gLandPrice - 1.00_GBP); GameActions::Execute(&scenarioSetSetting); } else @@ -1076,10 +1070,10 @@ static void WindowEditorScenarioOptionsParkMousedown(rct_window* w, rct_widgetin w->Invalidate(); break; case WIDX_CONSTRUCTION_RIGHTS_COST_INCREASE: - if (gConstructionRightsPrice < MONEY(200, 00)) + if (gConstructionRightsPrice < 200.00_GBP) { auto scenarioSetSetting = ScenarioSetSettingAction( - ScenarioSetSetting::CostToBuyConstructionRights, gConstructionRightsPrice + MONEY(1, 00)); + ScenarioSetSetting::CostToBuyConstructionRights, gConstructionRightsPrice + 1.00_GBP); GameActions::Execute(&scenarioSetSetting); } else @@ -1089,10 +1083,10 @@ static void WindowEditorScenarioOptionsParkMousedown(rct_window* w, rct_widgetin w->Invalidate(); break; case WIDX_CONSTRUCTION_RIGHTS_COST_DECREASE: - if (gConstructionRightsPrice > MONEY(5, 00)) + if (gConstructionRightsPrice > 5.00_GBP) { auto scenarioSetSetting = ScenarioSetSettingAction( - ScenarioSetSetting::CostToBuyConstructionRights, gConstructionRightsPrice - MONEY(1, 00)); + ScenarioSetSetting::CostToBuyConstructionRights, gConstructionRightsPrice - 1.00_GBP); GameActions::Execute(&scenarioSetSetting); } else @@ -1105,7 +1099,7 @@ static void WindowEditorScenarioOptionsParkMousedown(rct_window* w, rct_widgetin if (gParkEntranceFee < MAX_ENTRANCE_FEE) { auto scenarioSetSetting = ScenarioSetSettingAction( - ScenarioSetSetting::ParkChargeEntryFee, gParkEntranceFee + MONEY(1, 00)); + ScenarioSetSetting::ParkChargeEntryFee, gParkEntranceFee + 1.00_GBP); GameActions::Execute(&scenarioSetSetting); } else @@ -1115,10 +1109,10 @@ static void WindowEditorScenarioOptionsParkMousedown(rct_window* w, rct_widgetin w->Invalidate(); break; case WIDX_ENTRY_PRICE_DECREASE: - if (gParkEntranceFee > MONEY(0, 00)) + if (gParkEntranceFee > 0.00_GBP) { auto scenarioSetSetting = ScenarioSetSettingAction( - ScenarioSetSetting::ParkChargeEntryFee, gParkEntranceFee - MONEY(1, 00)); + ScenarioSetSetting::ParkChargeEntryFee, gParkEntranceFee - 1.00_GBP); GameActions::Execute(&scenarioSetSetting); } else diff --git a/src/openrct2-ui/windows/Finances.cpp b/src/openrct2-ui/windows/Finances.cpp index 0d42f41120..c48f8061b9 100644 --- a/src/openrct2-ui/windows/Finances.cpp +++ b/src/openrct2-ui/windows/Finances.cpp @@ -406,7 +406,7 @@ static void WindowFinancesSummaryMousedown(rct_window* w, rct_widgetindex widget { case WIDX_LOAN_INCREASE: { - auto newLoan = gBankLoan + MONEY(1000, 00); + auto newLoan = gBankLoan + 1000.00_GBP; auto gameAction = ParkSetLoanAction(newLoan); GameActions::Execute(&gameAction); break; @@ -414,7 +414,7 @@ static void WindowFinancesSummaryMousedown(rct_window* w, rct_widgetindex widget case WIDX_LOAN_DECREASE: if (gBankLoan > 0) { - auto newLoan = gBankLoan - MONEY(1000, 00); + auto newLoan = gBankLoan - 1000.00_GBP; auto gameAction = ParkSetLoanAction(newLoan); GameActions::Execute(&gameAction); } @@ -707,7 +707,7 @@ static void WindowFinancesFinancialGraphPaint(rct_window* w, rct_drawpixelinfo* // Y axis labels auto coords = graphTopLeft + ScreenCoordsXY{ 18, 14 }; money64 axisBase; - for (axisBase = MONEY(12, 00); axisBase >= MONEY(-12, 00); axisBase -= MONEY(6, 00)) + for (axisBase = 12.00_GBP; axisBase >= -12.00_GBP; axisBase -= 6.00_GBP) { auto axisValue = axisBase << yAxisScale; ft = Formatter(); @@ -811,7 +811,7 @@ static void WindowFinancesParkValueGraphPaint(rct_window* w, rct_drawpixelinfo* // Y axis labels auto coords = graphTopLeft + ScreenCoordsXY{ 18, 14 }; money64 axisBase; - for (axisBase = MONEY(24, 00); axisBase >= MONEY(0, 00); axisBase -= MONEY(6, 00)) + for (axisBase = 24.00_GBP; axisBase >= 0.00_GBP; axisBase -= 6.00_GBP) { auto axisValue = axisBase << yAxisScale; ft = Formatter(); @@ -916,7 +916,7 @@ static void WindowFinancesProfitGraphPaint(rct_window* w, rct_drawpixelinfo* dpi // Y axis labels auto screenPos = graphTopLeft + ScreenCoordsXY{ 18, 14 }; money64 axisBase; - for (axisBase = MONEY(12, 00); axisBase >= MONEY(-12, 00); axisBase -= MONEY(6, 00)) + for (axisBase = 12.00_GBP; axisBase >= -12.00_GBP; axisBase -= 6.00_GBP) { money64 axisValue = axisBase << yAxisScale; ft = Formatter(); diff --git a/src/openrct2-ui/windows/Park.cpp b/src/openrct2-ui/windows/Park.cpp index 3475f8129f..eb81cbdfb3 100644 --- a/src/openrct2-ui/windows/Park.cpp +++ b/src/openrct2-ui/windows/Park.cpp @@ -1021,11 +1021,11 @@ static void WindowParkPriceMousedown(rct_window* w, rct_widgetindex widgetIndex, window_close(w); break; case WIDX_INCREASE_PRICE: - newFee = std::min(MAX_ENTRANCE_FEE, gParkEntranceFee + MONEY(1, 00)); + newFee = std::min(MAX_ENTRANCE_FEE, gParkEntranceFee + 1.00_GBP); park_set_entrance_fee(newFee); break; case WIDX_DECREASE_PRICE: - newFee = std::max(MONEY(0, 00), gParkEntranceFee - MONEY(1, 00)); + newFee = std::max(0.00_GBP, gParkEntranceFee - 1.00_GBP); park_set_entrance_fee(newFee); break; } diff --git a/src/openrct2-ui/windows/Ride.cpp b/src/openrct2-ui/windows/Ride.cpp index 5496186483..8a036dae58 100644 --- a/src/openrct2-ui/windows/Ride.cpp +++ b/src/openrct2-ui/windows/Ride.cpp @@ -6238,7 +6238,7 @@ static void WindowRideIncomeIncreasePrimaryPrice(rct_window* w) return; money16 price = ride->price[0]; - if (price < MONEY(20, 00)) + if (price < 20.00_GBP) price++; WindowRideIncomeSetPrimaryPrice(w, price); @@ -6258,7 +6258,7 @@ static void WindowRideIncomeDecreasePrimaryPrice(rct_window* w) return; money16 price = ride->price[0]; - if (price > MONEY(0, 00)) + if (price > 0.00_GBP) price--; WindowRideIncomeSetPrimaryPrice(w, price); @@ -6299,7 +6299,7 @@ static void WindowRideIncomeIncreaseSecondaryPrice(rct_window* w) { money16 price = WindowRideIncomeGetSecondaryPrice(w); - if (price < MONEY(20, 00)) + if (price < 20.00_GBP) price++; WindowRideIncomeSetSecondaryPrice(w, price); @@ -6313,7 +6313,7 @@ static void WindowRideIncomeDecreaseSecondaryPrice(rct_window* w) { money16 price = WindowRideIncomeGetSecondaryPrice(w); - if (price > MONEY(0, 00)) + if (price > 0.00_GBP) price--; WindowRideIncomeSetSecondaryPrice(w, price); @@ -6436,7 +6436,7 @@ static void WindowRideIncomeTextinput(rct_window* w, rct_widgetindex widgetIndex return; } - price = std::clamp(price, MONEY(0, 00), MONEY(20, 00)); + price = std::clamp(price, 0.00_GBP, 20.00_GBP); money16 price16 = static_cast(price); if (widgetIndex == WIDX_PRIMARY_PRICE) diff --git a/src/openrct2/Cheats.h b/src/openrct2/Cheats.h index 47653acd6b..9826ffaa1f 100644 --- a/src/openrct2/Cheats.h +++ b/src/openrct2/Cheats.h @@ -108,7 +108,7 @@ enum OBJECT_UMBRELLA }; -#define CHEATS_GIVE_GUESTS_MONEY MONEY(1000, 00) +constexpr auto CHEATS_GIVE_GUESTS_MONEY = 1000.00_GBP; #define CHEATS_TRAM_INCREMENT 250 #define CHEATS_DUCK_INCREMENT 20 #define CHEATS_STAFF_FAST_SPEED 0xFF diff --git a/src/openrct2/Editor.cpp b/src/openrct2/Editor.cpp index e4a38f5d7b..4c9019b942 100644 --- a/src/openrct2/Editor.cpp +++ b/src/openrct2/Editor.cpp @@ -380,14 +380,14 @@ namespace Editor gParkFlags &= ~PARK_FLAGS_SPRITES_INITIALISED; gGuestInitialCash = std::clamp( - gGuestInitialCash, static_cast(MONEY(10, 00)), static_cast(MAX_ENTRANCE_FEE)); + gGuestInitialCash, static_cast(10.00_GBP), static_cast(MAX_ENTRANCE_FEE)); gInitialCash = std::min(gInitialCash, 100000); finance_reset_cash_to_initial(); - gBankLoan = std::clamp(gBankLoan, MONEY(0, 00), MONEY(5000000, 00)); + gBankLoan = std::clamp(gBankLoan, 0.00_GBP, 5000000.00_GBP); - gMaxBankLoan = std::clamp(gMaxBankLoan, MONEY(0, 00), MONEY(5000000, 00)); + gMaxBankLoan = std::clamp(gMaxBankLoan, 0.00_GBP, 5000000.00_GBP); gBankLoanInterestRate = std::clamp(gBankLoanInterestRate, 5, 80); } diff --git a/src/openrct2/actions/FootpathAdditionRemoveAction.cpp b/src/openrct2/actions/FootpathAdditionRemoveAction.cpp index 81d2e29a87..213ef5f10e 100644 --- a/src/openrct2/actions/FootpathAdditionRemoveAction.cpp +++ b/src/openrct2/actions/FootpathAdditionRemoveAction.cpp @@ -85,7 +85,7 @@ GameActions::Result FootpathAdditionRemoveAction::Query() const } auto res = GameActions::Result(); res.Position = _loc; - res.Cost = MONEY(0, 0); + res.Cost = 0.00_GBP; return res; } @@ -110,6 +110,6 @@ GameActions::Result FootpathAdditionRemoveAction::Execute() const auto res = GameActions::Result(); res.Position = _loc; - res.Cost = MONEY(0, 0); + res.Cost = 0.00_GBP; return res; } diff --git a/src/openrct2/actions/FootpathPlaceAction.cpp b/src/openrct2/actions/FootpathPlaceAction.cpp index c7c68360d5..0e94a52424 100644 --- a/src/openrct2/actions/FootpathPlaceAction.cpp +++ b/src/openrct2/actions/FootpathPlaceAction.cpp @@ -201,7 +201,7 @@ GameActions::Result FootpathPlaceAction::ElementUpdateQuery(PathElement* pathEle { if (!IsSameAsPathElement(pathElement)) { - res.Cost += MONEY(6, 00); + res.Cost += 6.00_GBP; } if (GetFlags() & GAME_COMMAND_FLAG_GHOST && !pathElement->IsGhost()) @@ -215,7 +215,7 @@ GameActions::Result FootpathPlaceAction::ElementUpdateExecute(PathElement* pathE { if (!IsSameAsPathElement(pathElement)) { - res.Cost += MONEY(6, 00); + res.Cost += 6.00_GBP; } footpath_queue_chain_reset(); @@ -273,7 +273,7 @@ GameActions::Result FootpathPlaceAction::ElementInsertQuery(GameActions::Result return GameActions::Result(GameActions::Status::NoFreeElements, STR_CANT_BUILD_FOOTPATH_HERE, STR_NONE); } - res.Cost = MONEY(12, 00); + res.Cost = 12.00_GBP; QuarterTile quarterTile{ 0b1111, 0 }; auto zLow = _loc.z; @@ -293,7 +293,7 @@ GameActions::Result FootpathPlaceAction::ElementInsertQuery(GameActions::Result if (IsSameAsEntranceElement(*entranceElement)) entranceIsSamePath = true; else - res.Cost -= MONEY(6, 00); + res.Cost -= 6.00_GBP; } // Do not attempt to build a crossing with a queue or a sloped path. @@ -324,7 +324,7 @@ GameActions::Result FootpathPlaceAction::ElementInsertQuery(GameActions::Result return GameActions::Result(GameActions::Status::InvalidParameters, STR_CANT_BUILD_FOOTPATH_HERE, STR_NONE); } int32_t supportHeight = zLow - surfaceElement->GetBaseZ(); - res.Cost += supportHeight < 0 ? MONEY(20, 00) : (supportHeight / PATH_HEIGHT_STEP) * MONEY(5, 00); + res.Cost += supportHeight < 0 ? 20.00_GBP : (supportHeight / PATH_HEIGHT_STEP) * 5.00_GBP; // Prevent the place sound from being spammed if (entranceIsSamePath) @@ -342,7 +342,7 @@ GameActions::Result FootpathPlaceAction::ElementInsertExecute(GameActions::Resul footpath_remove_litter(_loc); } - res.Cost = MONEY(12, 00); + res.Cost = 12.00_GBP; QuarterTile quarterTile{ 0b1111, 0 }; auto zLow = _loc.z; @@ -362,7 +362,7 @@ GameActions::Result FootpathPlaceAction::ElementInsertExecute(GameActions::Resul if (IsSameAsEntranceElement(*entranceElement)) entranceIsSamePath = true; else - res.Cost -= MONEY(6, 00); + res.Cost -= 6.00_GBP; } // Do not attempt to build a crossing with a queue or a sloped. @@ -388,7 +388,7 @@ GameActions::Result FootpathPlaceAction::ElementInsertExecute(GameActions::Resul return GameActions::Result(GameActions::Status::InvalidParameters, STR_CANT_BUILD_FOOTPATH_HERE, STR_NONE); } int32_t supportHeight = zLow - surfaceElement->GetBaseZ(); - res.Cost += supportHeight < 0 ? MONEY(20, 00) : (supportHeight / PATH_HEIGHT_STEP) * MONEY(5, 00); + res.Cost += supportHeight < 0 ? 20.00_GBP : (supportHeight / PATH_HEIGHT_STEP) * 5.00_GBP; if (entrancePath) { diff --git a/src/openrct2/actions/FootpathPlaceFromTrackAction.cpp b/src/openrct2/actions/FootpathPlaceFromTrackAction.cpp index a63a9999f6..39807b22c7 100644 --- a/src/openrct2/actions/FootpathPlaceFromTrackAction.cpp +++ b/src/openrct2/actions/FootpathPlaceFromTrackAction.cpp @@ -115,7 +115,7 @@ GameActions::Result FootpathPlaceFromTrackAction::ElementInsertQuery(GameActions STR_TILE_ELEMENT_LIMIT_REACHED); } - res.Cost = MONEY(12, 00); + res.Cost = 12.00_GBP; QuarterTile quarterTile{ 0b1111, 0 }; auto zLow = _loc.z; @@ -135,7 +135,7 @@ GameActions::Result FootpathPlaceFromTrackAction::ElementInsertQuery(GameActions if (IsSameAsEntranceElement(*entranceElement)) entranceIsSamePath = true; else - res.Cost -= MONEY(6, 00); + res.Cost -= 6.00_GBP; } // Do not attempt to build a crossing with a queue or a sloped path. @@ -167,7 +167,7 @@ GameActions::Result FootpathPlaceFromTrackAction::ElementInsertQuery(GameActions GameActions::Status::InvalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_NONE); } int32_t supportHeight = zLow - surfaceElement->GetBaseZ(); - res.Cost += supportHeight < 0 ? MONEY(20, 00) : (supportHeight / PATH_HEIGHT_STEP) * MONEY(5, 00); + res.Cost += supportHeight < 0 ? 20.00_GBP : (supportHeight / PATH_HEIGHT_STEP) * 5.00_GBP; // Prevent the place sound from being spammed if (entranceIsSamePath) @@ -185,7 +185,7 @@ GameActions::Result FootpathPlaceFromTrackAction::ElementInsertExecute(GameActio footpath_remove_litter(_loc); } - res.Cost = MONEY(12, 00); + res.Cost = 12.00_GBP; QuarterTile quarterTile{ 0b1111, 0 }; auto zLow = _loc.z; @@ -205,7 +205,7 @@ GameActions::Result FootpathPlaceFromTrackAction::ElementInsertExecute(GameActio if (IsSameAsEntranceElement(*entranceElement)) entranceIsSamePath = true; else - res.Cost -= MONEY(6, 00); + res.Cost -= 6.00_GBP; } // Do not attempt to build a crossing with a queue or a sloped path. @@ -232,7 +232,7 @@ GameActions::Result FootpathPlaceFromTrackAction::ElementInsertExecute(GameActio GameActions::Status::InvalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_NONE); } int32_t supportHeight = zLow - surfaceElement->GetBaseZ(); - res.Cost += supportHeight < 0 ? MONEY(20, 00) : (supportHeight / PATH_HEIGHT_STEP) * MONEY(5, 00); + res.Cost += supportHeight < 0 ? 20.00_GBP : (supportHeight / PATH_HEIGHT_STEP) * 5.00_GBP; if (entrancePath) { diff --git a/src/openrct2/actions/FootpathRemoveAction.cpp b/src/openrct2/actions/FootpathRemoveAction.cpp index 1741376d5d..512e2ac165 100644 --- a/src/openrct2/actions/FootpathRemoveAction.cpp +++ b/src/openrct2/actions/FootpathRemoveAction.cpp @@ -152,7 +152,7 @@ TileElement* FootpathRemoveAction::GetFootpathElement() const money32 FootpathRemoveAction::GetRefundPrice(TileElement* footpathElement) const { - money32 cost = -MONEY(10, 00); + money32 cost = -10.00_GBP; return cost; } diff --git a/src/openrct2/actions/LandSetHeightAction.cpp b/src/openrct2/actions/LandSetHeightAction.cpp index 20137a3c6b..695d3c4eaa 100644 --- a/src/openrct2/actions/LandSetHeightAction.cpp +++ b/src/openrct2/actions/LandSetHeightAction.cpp @@ -151,7 +151,7 @@ GameActions::Result LandSetHeightAction::Query() const GameActions::Result LandSetHeightAction::Execute() const { - money32 cost = MONEY(0, 0); + money32 cost = 0.00_GBP; auto surfaceHeight = tile_element_height(_coords); footpath_remove_litter({ _coords, surfaceHeight }); @@ -360,7 +360,7 @@ money32 LandSetHeightAction::GetSurfaceHeightChangeCost(SurfaceElement* surfaceE { int32_t cornerHeight = tile_element_get_corner_height(surfaceElement, i); cornerHeight -= map_get_corner_height(_height, _style & TILE_ELEMENT_SURFACE_SLOPE_MASK, i); - cost += MONEY(abs(cornerHeight) * 5 / 2, 0); + cost += (abs(cornerHeight) * 5 / 2) * 10; } return cost; } diff --git a/src/openrct2/actions/ScenarioSetSettingAction.cpp b/src/openrct2/actions/ScenarioSetSettingAction.cpp index 3cebbe2fed..1f31fdd56f 100644 --- a/src/openrct2/actions/ScenarioSetSettingAction.cpp +++ b/src/openrct2/actions/ScenarioSetSettingAction.cpp @@ -73,18 +73,18 @@ GameActions::Result ScenarioSetSettingAction::Execute() const } break; case ScenarioSetSetting::InitialCash: - gInitialCash = std::clamp(_value, MONEY(0, 00), MONEY(1000000, 00)); + gInitialCash = std::clamp(_value, 0.00_GBP, 1000000.00_GBP); gCash = gInitialCash; window_invalidate_by_class(WC_FINANCES); window_invalidate_by_class(WC_BOTTOM_TOOLBAR); break; case ScenarioSetSetting::InitialLoan: - gBankLoan = std::clamp(_value, MONEY(0, 00), MONEY(5000000, 00)); + gBankLoan = std::clamp(_value, 0.00_GBP, 5000000.00_GBP); gMaxBankLoan = std::max(gBankLoan, gMaxBankLoan); window_invalidate_by_class(WC_FINANCES); break; case ScenarioSetSetting::MaximumLoanSize: - gMaxBankLoan = std::clamp(_value, MONEY(0, 00), MONEY(5000000, 00)); + gMaxBankLoan = std::clamp(_value, 0.00_GBP, 5000000.00_GBP); gBankLoan = std::min(gBankLoan, gMaxBankLoan); window_invalidate_by_class(WC_FINANCES); break; @@ -103,7 +103,7 @@ GameActions::Result ScenarioSetSettingAction::Execute() const } break; case ScenarioSetSetting::AverageCashPerGuest: - gGuestInitialCash = std::clamp(_value, MONEY(0, 00), MONEY(1000, 00)); + gGuestInitialCash = std::clamp(_value, 0.00_GBP, 1000.00_GBP); break; case ScenarioSetSetting::GuestInitialHappiness: gGuestInitialHappiness = std::clamp(_value, 40, 250); @@ -135,10 +135,10 @@ GameActions::Result ScenarioSetSettingAction::Execute() const } break; case ScenarioSetSetting::CostToBuyLand: - gLandPrice = std::clamp(_value, MONEY(5, 00), MONEY(200, 00)); + gLandPrice = std::clamp(_value, 5.00_GBP, 200.00_GBP); break; case ScenarioSetSetting::CostToBuyConstructionRights: - gConstructionRightsPrice = std::clamp(_value, MONEY(5, 00), MONEY(200, 00)); + gConstructionRightsPrice = std::clamp(_value, 5.00_GBP, 200.00_GBP); break; case ScenarioSetSetting::ParkChargeMethod: if (gScreenFlags & SCREEN_FLAGS_SCENARIO_EDITOR) @@ -147,19 +147,19 @@ GameActions::Result ScenarioSetSettingAction::Execute() const { gParkFlags |= PARK_FLAGS_PARK_FREE_ENTRY; gParkFlags &= ~PARK_FLAGS_UNLOCK_ALL_PRICES; - gParkEntranceFee = MONEY(0, 00); + gParkEntranceFee = 0.00_GBP; } else if (_value == 1) { gParkFlags &= ~PARK_FLAGS_PARK_FREE_ENTRY; gParkFlags &= ~PARK_FLAGS_UNLOCK_ALL_PRICES; - gParkEntranceFee = MONEY(10, 00); + gParkEntranceFee = 10.00_GBP; } else { gParkFlags |= PARK_FLAGS_PARK_FREE_ENTRY; gParkFlags |= PARK_FLAGS_UNLOCK_ALL_PRICES; - gParkEntranceFee = MONEY(10, 00); + gParkEntranceFee = 10.00_GBP; } } else @@ -184,7 +184,7 @@ GameActions::Result ScenarioSetSettingAction::Execute() const } break; case ScenarioSetSetting::ParkChargeEntryFee: - gParkEntranceFee = std::clamp(_value, MONEY(0, 00), MAX_ENTRANCE_FEE); + gParkEntranceFee = std::clamp(_value, 0.00_GBP, MAX_ENTRANCE_FEE); window_invalidate_by_class(WC_PARK_INFORMATION); break; case ScenarioSetSetting::ForbidTreeRemoval: diff --git a/src/openrct2/actions/SetCheatAction.cpp b/src/openrct2/actions/SetCheatAction.cpp index 5abbb93b64..c55aefec05 100644 --- a/src/openrct2/actions/SetCheatAction.cpp +++ b/src/openrct2/actions/SetCheatAction.cpp @@ -539,7 +539,7 @@ void SetCheatAction::ClearLoan() const AddMoney(gBankLoan); // Then pay the loan - auto gameAction = ParkSetLoanAction(MONEY(0, 00)); + auto gameAction = ParkSetLoanAction(0.00_GBP); GameActions::ExecuteNested(&gameAction); } @@ -604,7 +604,7 @@ void SetCheatAction::GiveObjectToGuests(int32_t object) const switch (object) { case OBJECT_MONEY: - peep->CashInPocket = MONEY(1000, 00); + peep->CashInPocket = 1000.00_GBP; break; case OBJECT_PARK_MAP: peep->GiveItem(ShopItem::Map); diff --git a/src/openrct2/actions/SetParkEntranceFeeAction.cpp b/src/openrct2/actions/SetParkEntranceFeeAction.cpp index 685f83f670..5d4156feca 100644 --- a/src/openrct2/actions/SetParkEntranceFeeAction.cpp +++ b/src/openrct2/actions/SetParkEntranceFeeAction.cpp @@ -45,7 +45,7 @@ GameActions::Result SetParkEntranceFeeAction::Query() const { return GameActions::Result(GameActions::Status::Disallowed, STR_NONE, STR_NONE); } - if (_fee < MONEY_FREE || _fee > MAX_ENTRANCE_FEE) + if (_fee < 0.00_GBP || _fee > MAX_ENTRANCE_FEE) { return GameActions::Result(GameActions::Status::InvalidParameters, STR_NONE, STR_NONE); } diff --git a/src/openrct2/common.h b/src/openrct2/common.h index 4c03577a75..3e47f23410 100644 --- a/src/openrct2/common.h +++ b/src/openrct2/common.h @@ -92,10 +92,12 @@ using money64 = fixed64_1dp; #define FIXED_1DP(whole, fraction) FIXED_XDP(1, whole, fraction) #define FIXED_2DP(whole, fraction) FIXED_XDP(10, whole, fraction) -// Construct a money value in the format MONEY(10,70) to represent 10.70. Fractional part must be two digits. -#define MONEY(whole, fraction) ((whole)*10 + ((fraction) / 10)) +// User defined literal to convert money literal to money32 +constexpr money32 operator"" _GBP(long double money) noexcept +{ + return money * 10; +} -#define MONEY_FREE MONEY(0, 00) #define MONEY16_UNDEFINED static_cast(static_cast(0xFFFF)) #define MONEY32_UNDEFINED (static_cast(0x80000000)) #define MONEY64_UNDEFINED (static_cast(0x8000000000000000)) diff --git a/src/openrct2/entity/Guest.cpp b/src/openrct2/entity/Guest.cpp index 8384c31862..88e0125a04 100644 --- a/src/openrct2/entity/Guest.cpp +++ b/src/openrct2/entity/Guest.cpp @@ -1066,7 +1066,7 @@ void Guest::Tick128UpdateGuest(int32_t index) possible_thoughts[num_thoughts++] = PeepThoughtType::Toilet; } - if (!(gParkFlags & PARK_FLAGS_NO_MONEY) && CashInPocket <= MONEY(9, 00) && Happiness >= 105 && Energy >= 70) + if (!(gParkFlags & PARK_FLAGS_NO_MONEY) && CashInPocket <= 9.00_GBP && Happiness >= 105 && Energy >= 70) { /* The energy check was originally a second check on happiness. * This was superfluous so should probably check something else. @@ -3065,7 +3065,7 @@ static void peep_decide_whether_to_leave_park(Guest* peep) } else { - if (peep->Energy >= 55 && peep->Happiness >= 45 && peep->CashInPocket >= MONEY(5, 00)) + if (peep->Energy >= 55 && peep->Happiness >= 45 && peep->CashInPocket >= 5.00_GBP) { return; } @@ -3295,7 +3295,7 @@ static bool peep_should_use_cash_machine(Guest* peep, RideId rideIndex) return false; if (peep->PeepFlags & PEEP_FLAGS_LEAVING_PARK) return false; - if (peep->CashInPocket > MONEY(20, 00)) + if (peep->CashInPocket > 20.00_GBP) return false; if (115 + (scenario_rand() % 128) > peep->Happiness) return false; @@ -3342,7 +3342,7 @@ void Guest::UpdateBuying() { if (CurrentRide != PreviousRide) { - CashInPocket += MONEY(50, 00); + CashInPocket += 50.00_GBP; } window_invalidate_by_number(WC_PEEP, sprite_index); } diff --git a/src/openrct2/entity/MoneyEffect.cpp b/src/openrct2/entity/MoneyEffect.cpp index 83b92171cd..3e6f3cf36d 100644 --- a/src/openrct2/entity/MoneyEffect.cpp +++ b/src/openrct2/entity/MoneyEffect.cpp @@ -38,7 +38,7 @@ template<> bool EntityBase::Is() const */ void MoneyEffect::CreateAt(money64 value, const CoordsXYZ& effectPos, bool vertical) { - if (value == MONEY(0, 00)) + if (value == 0.00_GBP) return; MoneyEffect* moneyEffect = CreateEntity(); diff --git a/src/openrct2/entity/Staff.cpp b/src/openrct2/entity/Staff.cpp index da4dd878df..d703d79174 100644 --- a/src/openrct2/entity/Staff.cpp +++ b/src/openrct2/entity/Staff.cpp @@ -2546,13 +2546,13 @@ money32 GetStaffWage(StaffType type) { default: case StaffType::Handyman: - return MONEY(50, 00); + return 50.00_GBP; case StaffType::Mechanic: - return MONEY(80, 00); + return 80.00_GBP; case StaffType::Security: - return MONEY(60, 00); + return 60.00_GBP; case StaffType::Entertainer: - return MONEY(55, 00); + return 55.00_GBP; } } diff --git a/src/openrct2/interface/InteractiveConsole.cpp b/src/openrct2/interface/InteractiveConsole.cpp index cc31fb3d7d..f668cfd900 100644 --- a/src/openrct2/interface/InteractiveConsole.cpp +++ b/src/openrct2/interface/InteractiveConsole.cpp @@ -754,7 +754,7 @@ static int32_t cc_set(InteractiveConsole& console, const arguments_t& argv) if (argv[0] == "money" && invalidArguments(&invalidArgs, double_valid[0])) { - money32 money = MONEY(static_cast(double_val[0]), (static_cast(double_val[0] * 100)) % 100); + money32 money = static_cast(double_val[0] * 10); if (gCash != money) { auto setCheatAction = SetCheatAction(CheatType::SetMoney, money); @@ -774,7 +774,7 @@ static int32_t cc_set(InteractiveConsole& console, const arguments_t& argv) else if (argv[0] == "scenario_initial_cash" && invalidArguments(&invalidArgs, int_valid[0])) { auto scenarioSetSetting = ScenarioSetSettingAction( - ScenarioSetSetting::InitialCash, std::clamp(MONEY(int_val[0], 0), MONEY(0, 0), MONEY(1000000, 00))); + ScenarioSetSetting::InitialCash, std::clamp(int_val[0], 0.00_GBP, 1000000.00_GBP)); scenarioSetSetting.SetCallback([&console](const GameAction*, const GameActions::Result* res) { if (res->Error != GameActions::Status::Ok) console.WriteLineError("set scenario_initial_cash command failed, likely due to permissions."); @@ -786,8 +786,7 @@ static int32_t cc_set(InteractiveConsole& console, const arguments_t& argv) else if (argv[0] == "current_loan" && invalidArguments(&invalidArgs, int_valid[0])) { auto scenarioSetSetting = ScenarioSetSettingAction( - ScenarioSetSetting::InitialLoan, - std::clamp(MONEY(int_val[0] - (int_val[0] % 1000), 0), MONEY(0, 0), gMaxBankLoan)); + ScenarioSetSetting::InitialLoan, std::clamp(int_val[0] - (int_val[0] % 1000), 0.00_GBP, gMaxBankLoan)); scenarioSetSetting.SetCallback([&console](const GameAction*, const GameActions::Result* res) { if (res->Error != GameActions::Status::Ok) console.WriteLineError("set current_loan command failed, likely due to permissions."); @@ -799,8 +798,7 @@ static int32_t cc_set(InteractiveConsole& console, const arguments_t& argv) else if (argv[0] == "max_loan" && invalidArguments(&invalidArgs, int_valid[0])) { auto scenarioSetSetting = ScenarioSetSettingAction( - ScenarioSetSetting::MaximumLoanSize, - std::clamp(MONEY(int_val[0] - (int_val[0] % 1000), 0), MONEY(0, 0), MONEY(5000000, 0))); + ScenarioSetSetting::MaximumLoanSize, std::clamp(int_val[0] - (int_val[0] % 1000), 0.00_GBP, 5000000.00_GBP)); scenarioSetSetting.SetCallback([&console](const GameAction*, const GameActions::Result* res) { if (res->Error != GameActions::Status::Ok) console.WriteLineError("set max_loan command failed, likely due to permissions."); @@ -813,9 +811,7 @@ static int32_t cc_set(InteractiveConsole& console, const arguments_t& argv) { auto scenarioSetSetting = ScenarioSetSettingAction( ScenarioSetSetting::AverageCashPerGuest, - std::clamp( - MONEY(static_cast(double_val[0]), (static_cast(double_val[0] * 100)) % 100), MONEY(0, 0), - MONEY(1000, 0))); + std::clamp(static_cast(double_val[0] * 10), 0.00_GBP, 1000.00_GBP)); scenarioSetSetting.SetCallback([&console](const GameAction*, const GameActions::Result* res) { if (res->Error != GameActions::Status::Ok) console.WriteLineError("set guest_initial_cash command failed, likely due to permissions."); @@ -979,10 +975,7 @@ static int32_t cc_set(InteractiveConsole& console, const arguments_t& argv) else if (argv[0] == "land_rights_cost" && invalidArguments(&invalidArgs, double_valid[0])) { auto scenarioSetSetting = ScenarioSetSettingAction( - ScenarioSetSetting::CostToBuyLand, - std::clamp( - MONEY(static_cast(double_val[0]), (static_cast(double_val[0] * 100)) % 100), MONEY(0, 0), - MONEY(200, 0))); + ScenarioSetSetting::CostToBuyLand, std::clamp(static_cast(double_val[0] * 10), 0.00_GBP, 200.00_GBP)); scenarioSetSetting.SetCallback([&console](const GameAction*, const GameActions::Result* res) { if (res->Error != GameActions::Status::Ok) console.WriteLineError("set land_rights_cost command failed, likely due to permissions."); @@ -995,9 +988,7 @@ static int32_t cc_set(InteractiveConsole& console, const arguments_t& argv) { auto scenarioSetSetting = ScenarioSetSettingAction( ScenarioSetSetting::CostToBuyConstructionRights, - std::clamp( - MONEY(static_cast(double_val[0]), (static_cast(double_val[0] * 100)) % 100), MONEY(0, 0), - MONEY(200, 0))); + std::clamp(static_cast(double_val[0] * 10), 0.00_GBP, 200.00_GBP)); scenarioSetSetting.SetCallback([&console](const GameAction*, const GameActions::Result* res) { if (res->Error != GameActions::Status::Ok) console.WriteLineError("set construction_rights_cost command failed, likely due to permissions."); diff --git a/src/openrct2/localisation/Localisation.cpp b/src/openrct2/localisation/Localisation.cpp index 6e41d9699b..8349a02b65 100644 --- a/src/openrct2/localisation/Localisation.cpp +++ b/src/openrct2/localisation/Localisation.cpp @@ -498,17 +498,11 @@ money32 string_to_money(const char* string_to_monetise) auto number = std::stod(processedString, nullptr); number /= (currencyDesc->rate / 10.0); - auto whole = static_cast(number); - auto fraction = static_cast(ceil((number - whole) * 100.0)); - money32 result = MONEY(whole, fraction); // Check if MONEY resulted in overflow - if ((whole > 0 && result < 0) || result / 10 < whole) - { - result = INT_MAX; - } + uint64_t result = std::min(number * 10.0, (std::numeric_limits::max)()); result *= sign; - return result; + return static_cast(result); } /** diff --git a/src/openrct2/management/Award.cpp b/src/openrct2/management/Award.cpp index 6ab9198163..3c68697490 100644 --- a/src/openrct2/management/Award.cpp +++ b/src/openrct2/management/Award.cpp @@ -181,10 +181,10 @@ static bool award_is_deserved_best_value(int32_t activeAwardTypes) if ((gParkFlags & PARK_FLAGS_NO_MONEY) || !park_entry_price_unlocked()) return false; - if (gTotalRideValueForMoney < MONEY(10, 00)) + if (gTotalRideValueForMoney < 10.00_GBP) return false; - if (park_get_entrance_fee() + MONEY(0, 10) >= gTotalRideValueForMoney / 2) + if (park_get_entrance_fee() + 0.10_GBP >= gTotalRideValueForMoney / 2) return false; return true; @@ -232,7 +232,7 @@ static bool award_is_deserved_worst_value(int32_t activeAwardTypes) return false; const auto parkEntranceFee = park_get_entrance_fee(); - if (parkEntranceFee == MONEY(0, 00)) + if (parkEntranceFee == 0.00_GBP) return false; if (parkEntranceFee <= gTotalRideValueForMoney) return false; diff --git a/src/openrct2/management/Finance.cpp b/src/openrct2/management/Finance.cpp index 7791dda8ed..41988f9425 100644 --- a/src/openrct2/management/Finance.cpp +++ b/src/openrct2/management/Finance.cpp @@ -26,10 +26,10 @@ // Monthly research funding costs const money32 research_cost_table[RESEARCH_FUNDING_COUNT] = { - MONEY(0, 00), // No funding - MONEY(100, 00), // Minimum funding - MONEY(200, 00), // Normal funding - MONEY(400, 00), // Maximum funding + 0.00_GBP, // No funding + 100.00_GBP, // Minimum funding + 200.00_GBP, // Normal funding + 400.00_GBP, // Maximum funding }; static constexpr const int32_t dword_988E60[static_cast(ExpenditureType::Count)] = { @@ -215,11 +215,11 @@ void finance_init() gWeeklyProfitAverageDividend = 0; gWeeklyProfitAverageDivisor = 0; - gInitialCash = MONEY(10000, 00); // Cheat detection + gInitialCash = 10000.00_GBP; // Cheat detection - gCash = MONEY(10000, 00); - gBankLoan = MONEY(10000, 00); - gMaxBankLoan = MONEY(20000, 00); + gCash = 10000.00_GBP; + gBankLoan = 10000.00_GBP; + gMaxBankLoan = 20000.00_GBP; gHistoricalProfit = 0; diff --git a/src/openrct2/management/Marketing.cpp b/src/openrct2/management/Marketing.cpp index ded60a90ef..e9622111f5 100644 --- a/src/openrct2/management/Marketing.cpp +++ b/src/openrct2/management/Marketing.cpp @@ -25,12 +25,12 @@ #include "NewsItem.h" const money16 AdvertisingCampaignPricePerWeek[] = { - MONEY(50, 00), // PARK_ENTRY_FREE - MONEY(50, 00), // RIDE_FREE - MONEY(50, 00), // PARK_ENTRY_HALF_PRICE - MONEY(50, 00), // FOOD_OR_DRINK_FREE - MONEY(350, 00), // PARK - MONEY(200, 00), // RIDE + 50.00_GBP, // PARK_ENTRY_FREE + 50.00_GBP, // RIDE_FREE + 50.00_GBP, // PARK_ENTRY_HALF_PRICE + 50.00_GBP, // FOOD_OR_DRINK_FREE + 350.00_GBP, // PARK + 200.00_GBP, // RIDE }; static constexpr const uint16_t AdvertisingCampaignGuestGenerationProbabilities[] = { @@ -50,17 +50,17 @@ uint16_t marketing_get_campaign_guest_generation_probability(int32_t campaignTyp switch (campaign->Type) { case ADVERTISING_CAMPAIGN_PARK_ENTRY_FREE: - if (park_get_entrance_fee() < MONEY(4, 00)) + if (park_get_entrance_fee() < 4.00_GBP) probability /= 8; break; case ADVERTISING_CAMPAIGN_PARK_ENTRY_HALF_PRICE: - if (park_get_entrance_fee() < MONEY(6, 00)) + if (park_get_entrance_fee() < 6.00_GBP) probability /= 8; break; case ADVERTISING_CAMPAIGN_RIDE_FREE: { auto ride = get_ride(campaign->RideId); - if (ride == nullptr || ride->price[0] < MONEY(0, 30)) + if (ride == nullptr || ride->price[0] < 0.30_GBP) probability /= 8; break; } diff --git a/src/openrct2/network/NetworkBase.cpp b/src/openrct2/network/NetworkBase.cpp index 71db0fa9a8..5f77d5c0f4 100644 --- a/src/openrct2/network/NetworkBase.cpp +++ b/src/openrct2/network/NetworkBase.cpp @@ -4016,7 +4016,7 @@ int32_t network_get_player_id(uint32_t index) } money32 network_get_player_money_spent(uint32_t index) { - return MONEY(0, 0); + return 0.00_GBP; } std::string network_get_player_ip_address(uint32_t id) { diff --git a/src/openrct2/network/NetworkPlayer.h b/src/openrct2/network/NetworkPlayer.h index 0e893d9345..8945e33bc5 100644 --- a/src/openrct2/network/NetworkPlayer.h +++ b/src/openrct2/network/NetworkPlayer.h @@ -28,7 +28,7 @@ public: uint16_t Ping = 0; uint8_t Flags = 0; uint8_t Group = 0; - money32 MoneySpent = MONEY(0, 0); + money32 MoneySpent = 0.00_GBP; uint32_t CommandsRan = 0; int32_t LastAction = -999; uint32_t LastActionTime = 0; diff --git a/src/openrct2/ride/ShopItem.cpp b/src/openrct2/ride/ShopItem.cpp index b74af88b47..e3e32d9447 100644 --- a/src/openrct2/ride/ShopItem.cpp +++ b/src/openrct2/ride/ShopItem.cpp @@ -25,61 +25,61 @@ uint64_t gSamePriceThroughoutPark; // clang-format off /** rct2: 0x00982164 (cost, base value, hot and cold value); 0x00982358 (default price) */ constexpr 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 Flag, Litter type, Consumption time, Discard Container, Peep thought price too much, Peep thought price good value, - /* ShopItem::Balloon */ { MONEY(0, 30), MONEY(1, 40), MONEY(1, 40), MONEY(1, 40), 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, Litter::Type::Rubbish, 0, ShopItem::None, PeepThoughtType::BalloonMuch, PeepThoughtType::Balloon }, - /* ShopItem::Toy */ { MONEY(1, 50), MONEY(3, 00), MONEY(3, 00), MONEY(3, 00), 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, Litter::Type::Rubbish, 0, ShopItem::None, PeepThoughtType::ToyMuch, PeepThoughtType::Toy }, - /* ShopItem::Map */ { MONEY(0, 10), MONEY(0, 70), MONEY(0, 70), MONEY(0, 80), 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, Litter::Type::Rubbish, 0, ShopItem::None, PeepThoughtType::MapMuch, PeepThoughtType::Map }, - /* ShopItem::Photo */ { MONEY(0, 20), MONEY(3, 00), MONEY(3, 00), MONEY(3, 00), 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, Litter::Type::Rubbish, 0, ShopItem::None, PeepThoughtType::PhotoMuch, PeepThoughtType::Photo }, - /* ShopItem::Umbrella */ { MONEY(2, 00), MONEY(3, 50), MONEY(2, 50), MONEY(5, 00), 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, Litter::Type::Rubbish, 0, ShopItem::None, PeepThoughtType::UmbrellaMuch, PeepThoughtType::Umbrella }, - /* ShopItem::Drink */ { MONEY(0, 30), MONEY(1, 20), MONEY(2, 00), MONEY(1, 00), 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, Litter::Type::Rubbish, 100, ShopItem::EmptyCan, PeepThoughtType::DrinkMuch, PeepThoughtType::Drink }, - /* ShopItem::Burger */ { MONEY(0, 50), MONEY(1, 90), MONEY(1, 90), MONEY(2, 20), 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, Litter::Type::Rubbish, 150, ShopItem::EmptyBurgerBox, PeepThoughtType::BurgerMuch, PeepThoughtType::Burger }, - /* ShopItem::Chips */ { MONEY(0, 40), MONEY(1, 60), MONEY(1, 60), MONEY(1, 80), 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, Litter::Type::Rubbish, 120, ShopItem::Rubbish, PeepThoughtType::ChipsMuch, PeepThoughtType::Chips }, - /* ShopItem::IceCream */ { MONEY(0, 40), MONEY(1, 00), MONEY(1, 50), MONEY(0, 60), 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, Litter::Type::Rubbish, 60, ShopItem::None, PeepThoughtType::IceCreamMuch, PeepThoughtType::IceCream }, - /* ShopItem::Candyfloss */ { MONEY(0, 30), MONEY(0, 90), MONEY(0, 90), MONEY(0, 60), 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, Litter::Type::Rubbish, 50, ShopItem::None, PeepThoughtType::CandyflossMuch, PeepThoughtType::Candyfloss }, - /* ShopItem::EmptyCan */ { MONEY(0, 00), MONEY(0, 00), MONEY(0, 00), MONEY(0, 00), 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 }, SHOP_ITEM_FLAG_IS_CONTAINER, Litter::Type::EmptyCan, 0, ShopItem::None, PeepThoughtType::None, PeepThoughtType::None }, - /* ShopItem::Rubbish */ { MONEY(0, 00), MONEY(0, 00), MONEY(0, 00), MONEY(0, 00), 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 }, SHOP_ITEM_FLAG_IS_CONTAINER, Litter::Type::Rubbish, 0, ShopItem::None, PeepThoughtType::None, PeepThoughtType::None }, - /* ShopItem::EmptyBurgerBox */ { MONEY(0, 00), MONEY(0, 00), MONEY(0, 00), MONEY(0, 00), 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 }, SHOP_ITEM_FLAG_IS_CONTAINER, Litter::Type::BurgerBox, 0, ShopItem::None, PeepThoughtType::None, PeepThoughtType::None }, - /* ShopItem::Pizza */ { MONEY(0, 60), MONEY(2, 10), MONEY(2, 10), MONEY(2, 50), 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, Litter::Type::Rubbish, 150, ShopItem::Rubbish, PeepThoughtType::PizzaMuch, PeepThoughtType::Pizza }, - /* ShopItem::Voucher */ { MONEY(0, 00), MONEY(0, 00), MONEY(0, 00), MONEY(0, 00), 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, Litter::Type::Rubbish, 0, ShopItem::None, PeepThoughtType::None, PeepThoughtType::None }, - /* ShopItem::Popcorn */ { MONEY(0, 50), MONEY(1, 30), MONEY(1, 30), MONEY(1, 10), 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, Litter::Type::Rubbish, 75, ShopItem::Rubbish, PeepThoughtType::PopcornMuch, PeepThoughtType::Popcorn }, - /* ShopItem::HotDog */ { MONEY(0, 50), MONEY(1, 70), MONEY(1, 70), MONEY(2, 00), 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, Litter::Type::Rubbish, 133, ShopItem::None, PeepThoughtType::HotDogMuch, PeepThoughtType::HotDog }, - /* ShopItem::Tentacle */ { MONEY(1, 10), MONEY(2, 20), MONEY(2, 00), MONEY(1, 80), 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, Litter::Type::Rubbish, 110, ShopItem::None, PeepThoughtType::TentacleMuch, PeepThoughtType::Tentacle }, - /* ShopItem::Hat */ { MONEY(0, 90), MONEY(2, 70), MONEY(3, 20), MONEY(2, 40), 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, Litter::Type::Rubbish, 0, ShopItem::None, PeepThoughtType::HatMuch, PeepThoughtType::Hat }, - /* ShopItem::ToffeeApple */ { MONEY(0, 40), MONEY(1, 00), MONEY(1, 00), MONEY(1, 00), 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, Litter::Type::Rubbish, 50, ShopItem::None, PeepThoughtType::ToffeeAppleMuch, PeepThoughtType::ToffeeApple }, - /* ShopItem::TShirt */ { MONEY(2, 00), MONEY(3, 70), MONEY(3, 70), MONEY(3, 70), 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, Litter::Type::Rubbish, 0, ShopItem::None, PeepThoughtType::TshirtMuch, PeepThoughtType::Tshirt }, - /* ShopItem::Doughnut */ { MONEY(0, 40), MONEY(0, 80), MONEY(0, 70), MONEY(1, 00), 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, Litter::Type::Rubbish, 80, ShopItem::None, PeepThoughtType::DoughnutMuch, PeepThoughtType::Doughnut }, - /* ShopItem::Coffee */ { MONEY(0, 30), MONEY(1, 10), MONEY(1, 50), MONEY(2, 00), 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, Litter::Type::Rubbish, 90, ShopItem::EmptyCup, PeepThoughtType::CoffeeMuch, PeepThoughtType::Coffee }, - /* ShopItem::EmptyCup */ { MONEY(0, 00), MONEY(0, 00), MONEY(0, 00), MONEY(0, 00), 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 }, SHOP_ITEM_FLAG_IS_CONTAINER, Litter::Type::EmptyCup, 0, ShopItem::None, PeepThoughtType::None, PeepThoughtType::None }, - /* ShopItem::Chicken */ { MONEY(0, 50), MONEY(1, 90), MONEY(1, 90), MONEY(2, 20), 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, Litter::Type::EmptyBox, 170, ShopItem::EmptyBox, PeepThoughtType::ChickenMuch, PeepThoughtType::Chicken }, - /* ShopItem::Lemonade */ { MONEY(0, 40), MONEY(1, 10), MONEY(2, 10), MONEY(1, 00), 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, Litter::Type::EmptyBottle, 115, ShopItem::EmptyBottle, PeepThoughtType::LemonadeMuch, PeepThoughtType::Lemonade }, - /* ShopItem::EmptyBox */ { MONEY(0, 00), MONEY(0, 00), MONEY(0, 00), MONEY(0, 00), 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 }, SHOP_ITEM_FLAG_IS_CONTAINER, Litter::Type::EmptyBox, 0, ShopItem::None, PeepThoughtType::None, PeepThoughtType::None }, - /* ShopItem::EmptyBottle */ { MONEY(0, 00), MONEY(0, 00), MONEY(0, 00), MONEY(0, 00), 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 }, SHOP_ITEM_FLAG_IS_CONTAINER, Litter::Type::EmptyBottle, 0, ShopItem::None, PeepThoughtType::None, PeepThoughtType::None }, - /* 28 */ { MONEY(0, 00), MONEY(0, 00), MONEY(0, 00), MONEY(0, 00), MONEY(0, 00), 0, { STR_NONE, STR_NONE, STR_NONE, STR_NONE, STR_NONE }, 0, Litter::Type::Vomit, 0xFF, ShopItem::None, PeepThoughtType::None, PeepThoughtType::None }, - /* 29 */ { MONEY(0, 00), MONEY(0, 00), MONEY(0, 00), MONEY(0, 00), MONEY(0, 00), 0, { STR_NONE, STR_NONE, STR_NONE, STR_NONE, STR_NONE }, 0, Litter::Type::Vomit, 0xFF, ShopItem::None, PeepThoughtType::None, PeepThoughtType::None }, - /* 30 */ { MONEY(0, 00), MONEY(0, 00), MONEY(0, 00), MONEY(0, 00), MONEY(0, 00), 0, { STR_NONE, STR_NONE, STR_NONE, STR_NONE, STR_NONE }, 0, Litter::Type::Vomit, 0xFF, ShopItem::None, PeepThoughtType::None, PeepThoughtType::None }, - /* ShopItem::Admission */ { MONEY(0, 00), MONEY(0, 00), MONEY(0, 00), MONEY(0, 00), MONEY(0, 00), 0, { STR_NONE, STR_NONE, STR_NONE, STR_NONE, STR_NONE }, 0, Litter::Type::Vomit, 0xFF, ShopItem::None, PeepThoughtType::None, PeepThoughtType::None }, - /* ShopItem::Photo2 */ { MONEY(0, 20), MONEY(3, 00), MONEY(3, 00), MONEY(3, 00), 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, Litter::Type::Rubbish, 0, ShopItem::None, PeepThoughtType::Photo2Much, PeepThoughtType::Photo2 }, - /* ShopItem::Photo3 */ { MONEY(0, 20), MONEY(3, 00), MONEY(3, 00), MONEY(3, 00), 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, Litter::Type::Rubbish, 0, ShopItem::None, PeepThoughtType::Photo3Much, PeepThoughtType::Photo3 }, - /* ShopItem::Photo4 */ { MONEY(0, 20), MONEY(3, 00), MONEY(3, 00), MONEY(3, 00), 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, Litter::Type::Rubbish, 0, ShopItem::None, PeepThoughtType::Photo4Much, PeepThoughtType::Photo4 }, - /* ShopItem::Pretzel */ { MONEY(0, 50), MONEY(1, 10), MONEY(1, 10), MONEY(1, 10), 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, Litter::Type::Rubbish, 70, ShopItem::None, PeepThoughtType::PretzelMuch, PeepThoughtType::Pretzel }, - /* ShopItem::Chocolate */ { MONEY(0, 40), MONEY(1, 30), MONEY(1, 30), MONEY(2, 00), 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, Litter::Type::Rubbish, 85, ShopItem::EmptyCup, PeepThoughtType::HotChocolateMuch, PeepThoughtType::HotChocolate }, - /* ShopItem::IcedTea */ { MONEY(0, 30), MONEY(1, 00), MONEY(2, 00), MONEY(1, 00), 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, Litter::Type::Rubbish, 95, ShopItem::EmptyCup, PeepThoughtType::IcedTeaMuch, PeepThoughtType::IcedTea }, - /* ShopItem::FunnelCake */ { MONEY(0, 50), MONEY(1, 30), MONEY(1, 10), MONEY(1, 40), 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, Litter::Type::Rubbish, 90, ShopItem::None, PeepThoughtType::FunnelCakeMuch, PeepThoughtType::FunnelCake }, - /* ShopItem::Sunglasses */ { MONEY(0, 80), MONEY(1, 50), MONEY(2, 00), MONEY(1, 20), 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, Litter::Type::Rubbish, 0, ShopItem::None, PeepThoughtType::SunglassesMuch, PeepThoughtType::Sunglasses }, - /* ShopItem::BeefNoodles */ { MONEY(0, 70), MONEY(1, 70), MONEY(1, 70), MONEY(2, 00), 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, Litter::Type::Rubbish, 130, ShopItem::EmptyBowlBlue, PeepThoughtType::BeefNoodlesMuch, PeepThoughtType::BeefNoodles }, - /* ShopItem::FriedRiceNoodles */ { MONEY(0, 60), MONEY(1, 70), MONEY(1, 70), MONEY(2, 00), 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, Litter::Type::Rubbish, 120, ShopItem::EmptyBowlBlue, PeepThoughtType::FriedRiceNoodlesMuch, PeepThoughtType::FriedRiceNoodles }, - /* ShopItem::WontonSoup */ { MONEY(0, 40), MONEY(1, 30), MONEY(1, 30), MONEY(1, 50), 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, Litter::Type::Rubbish, 100, ShopItem::EmptyBowlRed, PeepThoughtType::WontonSoupMuch, PeepThoughtType::WontonSoup }, - /* ShopItem::MeatballSoup */ { MONEY(0, 50), MONEY(1, 40), MONEY(1, 40), MONEY(1, 60), 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, Litter::Type::Rubbish, 110, ShopItem::EmptyBowlRed, PeepThoughtType::MeatballSoupMuch, PeepThoughtType::MeatballSoup }, - /* ShopItem::FruitJuice */ { MONEY(0, 40), MONEY(1, 10), MONEY(1, 90), MONEY(1, 10), 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, Litter::Type::Rubbish, 110, ShopItem::EmptyJuiceCup, PeepThoughtType::FruitJuiceMuch, PeepThoughtType::FruitJuice }, - /* ShopItem::SoybeanMilk */ { MONEY(0, 40), MONEY(1, 00), MONEY(1, 40), MONEY(1, 00), 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, Litter::Type::Rubbish, 90, ShopItem::EmptyDrinkCarton, PeepThoughtType::SoybeanMilkMuch, PeepThoughtType::SoybeanMilk }, - /* ShopItem::Sujeonggwa */ { MONEY(0, 30), MONEY(1, 10), MONEY(1, 40), MONEY(1, 10), 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, Litter::Type::Rubbish, 100, ShopItem::EmptyDrinkCarton, PeepThoughtType::SujongkwaMuch, PeepThoughtType::Sujongkwa }, - /* ShopItem::SubSandwich */ { MONEY(0, 50), MONEY(1, 90), MONEY(1, 90), MONEY(1, 70), 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, Litter::Type::Rubbish, 130, ShopItem::None, PeepThoughtType::SubSandwichMuch, PeepThoughtType::SubSandwich }, - /* ShopItem::Cookie */ { MONEY(0, 40), MONEY(0, 80), MONEY(0, 80), MONEY(0, 80), 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, Litter::Type::Rubbish, 75, ShopItem::None, PeepThoughtType::CookieMuch, PeepThoughtType::Cookie }, - /* ShopItem::EmptyBowlRed */ { MONEY(0, 00), MONEY(0, 00), MONEY(0, 00), MONEY(0, 00), 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 }, SHOP_ITEM_FLAG_IS_CONTAINER, Litter::Type::EmptyBowlRed, 0, ShopItem::None, PeepThoughtType::None, PeepThoughtType::None }, - /* ShopItem::EmptyDrinkCarton */ { MONEY(0, 00), MONEY(0, 00), MONEY(0, 00), MONEY(0, 00), 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 }, SHOP_ITEM_FLAG_IS_CONTAINER, Litter::Type::EmptyDrinkCarton, 0, ShopItem::None, PeepThoughtType::None, PeepThoughtType::None }, - /* ShopItem::EmptyJuiceCup */ { MONEY(0, 00), MONEY(0, 00), MONEY(0, 00), MONEY(0, 00), 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 }, SHOP_ITEM_FLAG_IS_CONTAINER, Litter::Type::EmptyJuiceCup, 0, ShopItem::None, PeepThoughtType::None, PeepThoughtType::None }, - /* ShopItem::RoastSausage */ { MONEY(0, 50), MONEY(1, 60), MONEY(1, 60), MONEY(2, 00), 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, Litter::Type::Rubbish, 115, ShopItem::None, PeepThoughtType::RoastSausageMuch, PeepThoughtType::RoastSausage }, - /* ShopItem::EmptyBowlBlue */ { MONEY(0, 00), MONEY(0, 00), MONEY(0, 00), MONEY(0, 00), 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 }, SHOP_ITEM_FLAG_IS_CONTAINER, Litter::Type::EmptyBowlBlue, 0, ShopItem::None, PeepThoughtType::None, PeepThoughtType::None }, + // Item, Cost, Base value, Hot value, Cold value, Default price, Image, Price label, Singular, Plural, Indefinite, Display (in guest inventory), Shop Item Flag, Litter type, Consumption time, Discard Container, Peep thought price too much, Peep thought price good value, + /* ShopItem::Balloon */ { 3, 14, 14, 14, 0.90_GBP, 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, Litter::Type::Rubbish, 0, ShopItem::None, PeepThoughtType::BalloonMuch, PeepThoughtType::Balloon }, + /* ShopItem::Toy */ { 15, 30, 30, 30, 2.50_GBP, 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, Litter::Type::Rubbish, 0, ShopItem::None, PeepThoughtType::ToyMuch, PeepThoughtType::Toy }, + /* ShopItem::Map */ { 1, 7, 7, 8, 0.60_GBP, 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, Litter::Type::Rubbish, 0, ShopItem::None, PeepThoughtType::MapMuch, PeepThoughtType::Map }, + /* ShopItem::Photo */ { 2, 30, 30, 30, 0.00_GBP, 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, Litter::Type::Rubbish, 0, ShopItem::None, PeepThoughtType::PhotoMuch, PeepThoughtType::Photo }, + /* ShopItem::Umbrella */ { 20, 35, 25, 50, 2.50_GBP, 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, Litter::Type::Rubbish, 0, ShopItem::None, PeepThoughtType::UmbrellaMuch, PeepThoughtType::Umbrella }, + /* ShopItem::Drink */ { 3, 12, 20, 10, 1.20_GBP, 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, Litter::Type::Rubbish, 100, ShopItem::EmptyCan, PeepThoughtType::DrinkMuch, PeepThoughtType::Drink }, + /* ShopItem::Burger */ { 5, 19, 19, 22, 1.50_GBP, 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, Litter::Type::Rubbish, 150, ShopItem::EmptyBurgerBox, PeepThoughtType::BurgerMuch, PeepThoughtType::Burger }, + /* ShopItem::Chips */ { 4, 16, 16, 18, 1.50_GBP, 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, Litter::Type::Rubbish, 120, ShopItem::Rubbish, PeepThoughtType::ChipsMuch, PeepThoughtType::Chips }, + /* ShopItem::IceCream */ { 4, 10, 15, 6, 0.90_GBP, 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, Litter::Type::Rubbish, 60, ShopItem::None, PeepThoughtType::IceCreamMuch, PeepThoughtType::IceCream }, + /* ShopItem::Candyfloss */ { 3, 9, 9, 6, 0.80_GBP, 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, Litter::Type::Rubbish, 50, ShopItem::None, PeepThoughtType::CandyflossMuch, PeepThoughtType::Candyfloss }, + /* ShopItem::EmptyCan */ { 0, 0, 0, 0, 0.00_GBP, 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 }, SHOP_ITEM_FLAG_IS_CONTAINER, Litter::Type::EmptyCan, 0, ShopItem::None, PeepThoughtType::None, PeepThoughtType::None }, + /* ShopItem::Rubbish */ { 0, 0, 0, 0, 0.00_GBP, 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 }, SHOP_ITEM_FLAG_IS_CONTAINER, Litter::Type::Rubbish, 0, ShopItem::None, PeepThoughtType::None, PeepThoughtType::None }, + /* ShopItem::EmptyBurgerBox */ { 0, 0, 0, 0, 0.00_GBP, 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 }, SHOP_ITEM_FLAG_IS_CONTAINER, Litter::Type::BurgerBox, 0, ShopItem::None, PeepThoughtType::None, PeepThoughtType::None }, + /* ShopItem::Pizza */ { 6, 21, 21, 25, 1.60_GBP, 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, Litter::Type::Rubbish, 150, ShopItem::Rubbish, PeepThoughtType::PizzaMuch, PeepThoughtType::Pizza }, + /* ShopItem::Voucher */ { 0, 0, 0, 0, 0.00_GBP, 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, Litter::Type::Rubbish, 0, ShopItem::None, PeepThoughtType::None, PeepThoughtType::None }, + /* ShopItem::Popcorn */ { 5, 13, 13, 11, 1.20_GBP, 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, Litter::Type::Rubbish, 75, ShopItem::Rubbish, PeepThoughtType::PopcornMuch, PeepThoughtType::Popcorn }, + /* ShopItem::HotDog */ { 5, 17, 17, 20, 1.00_GBP, 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, Litter::Type::Rubbish, 133, ShopItem::None, PeepThoughtType::HotDogMuch, PeepThoughtType::HotDog }, + /* ShopItem::Tentacle */ { 11, 22, 20, 18, 1.50_GBP, 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, Litter::Type::Rubbish, 110, ShopItem::None, PeepThoughtType::TentacleMuch, PeepThoughtType::Tentacle }, + /* ShopItem::Hat */ { 9, 27, 32, 24, 1.50_GBP, 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, Litter::Type::Rubbish, 0, ShopItem::None, PeepThoughtType::HatMuch, PeepThoughtType::Hat }, + /* ShopItem::ToffeeApple */ { 4, 10, 10, 10, 0.70_GBP, 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, Litter::Type::Rubbish, 50, ShopItem::None, PeepThoughtType::ToffeeAppleMuch, PeepThoughtType::ToffeeApple }, + /* ShopItem::TShirt */ { 20, 37, 37, 37, 3.00_GBP, 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, Litter::Type::Rubbish, 0, ShopItem::None, PeepThoughtType::TshirtMuch, PeepThoughtType::Tshirt }, + /* ShopItem::Doughnut */ { 4, 8, 7, 10, 0.70_GBP, 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, Litter::Type::Rubbish, 80, ShopItem::None, PeepThoughtType::DoughnutMuch, PeepThoughtType::Doughnut }, + /* ShopItem::Coffee */ { 3, 11, 15, 20, 1.20_GBP, 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, Litter::Type::Rubbish, 90, ShopItem::EmptyCup, PeepThoughtType::CoffeeMuch, PeepThoughtType::Coffee }, + /* ShopItem::EmptyCup */ { 0, 0, 0, 0, 0.00_GBP, 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 }, SHOP_ITEM_FLAG_IS_CONTAINER, Litter::Type::EmptyCup, 0, ShopItem::None, PeepThoughtType::None, PeepThoughtType::None }, + /* ShopItem::Chicken */ { 5, 19, 19, 22, 1.50_GBP, 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, Litter::Type::EmptyBox, 170, ShopItem::EmptyBox, PeepThoughtType::ChickenMuch, PeepThoughtType::Chicken }, + /* ShopItem::Lemonade */ { 4, 11, 21, 10, 1.20_GBP, 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, Litter::Type::EmptyBottle, 115, ShopItem::EmptyBottle, PeepThoughtType::LemonadeMuch, PeepThoughtType::Lemonade }, + /* ShopItem::EmptyBox */ { 0, 0, 0, 0, 0.00_GBP, 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 }, SHOP_ITEM_FLAG_IS_CONTAINER, Litter::Type::EmptyBox, 0, ShopItem::None, PeepThoughtType::None, PeepThoughtType::None }, + /* ShopItem::EmptyBottle */ { 0, 0, 0, 0, 0.00_GBP, 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 }, SHOP_ITEM_FLAG_IS_CONTAINER, Litter::Type::EmptyBottle, 0, ShopItem::None, PeepThoughtType::None, PeepThoughtType::None }, + /* 28 */ { 0, 0, 0, 0, 0.00_GBP, 0, { STR_NONE, STR_NONE, STR_NONE, STR_NONE, STR_NONE }, 0, Litter::Type::Vomit, 0xFF, ShopItem::None, PeepThoughtType::None, PeepThoughtType::None }, + /* 29 */ { 0, 0, 0, 0, 0.00_GBP, 0, { STR_NONE, STR_NONE, STR_NONE, STR_NONE, STR_NONE }, 0, Litter::Type::Vomit, 0xFF, ShopItem::None, PeepThoughtType::None, PeepThoughtType::None }, + /* 30 */ { 0, 0, 0, 0, 0.00_GBP, 0, { STR_NONE, STR_NONE, STR_NONE, STR_NONE, STR_NONE }, 0, Litter::Type::Vomit, 0xFF, ShopItem::None, PeepThoughtType::None, PeepThoughtType::None }, + /* ShopItem::Admission */ { 0, 0, 0, 0, 0.00_GBP, 0, { STR_NONE, STR_NONE, STR_NONE, STR_NONE, STR_NONE }, 0, Litter::Type::Vomit, 0xFF, ShopItem::None, PeepThoughtType::None, PeepThoughtType::None }, + /* ShopItem::Photo2 */ { 2, 30, 30, 30, 0.00_GBP, 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, Litter::Type::Rubbish, 0, ShopItem::None, PeepThoughtType::Photo2Much, PeepThoughtType::Photo2 }, + /* ShopItem::Photo3 */ { 2, 30, 30, 30, 0.00_GBP, 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, Litter::Type::Rubbish, 0, ShopItem::None, PeepThoughtType::Photo3Much, PeepThoughtType::Photo3 }, + /* ShopItem::Photo4 */ { 2, 30, 30, 30, 0.00_GBP, 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, Litter::Type::Rubbish, 0, ShopItem::None, PeepThoughtType::Photo4Much, PeepThoughtType::Photo4 }, + /* ShopItem::Pretzel */ { 5, 11, 11, 11, 1.10_GBP, 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, Litter::Type::Rubbish, 70, ShopItem::None, PeepThoughtType::PretzelMuch, PeepThoughtType::Pretzel }, + /* ShopItem::Chocolate */ { 4, 13, 13, 20, 1.20_GBP, 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, Litter::Type::Rubbish, 85, ShopItem::EmptyCup, PeepThoughtType::HotChocolateMuch, PeepThoughtType::HotChocolate }, + /* ShopItem::IcedTea */ { 3, 10, 20, 10, 1.10_GBP, 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, Litter::Type::Rubbish, 95, ShopItem::EmptyCup, PeepThoughtType::IcedTeaMuch, PeepThoughtType::IcedTea }, + /* ShopItem::FunnelCake */ { 5, 13, 11, 14, 1.20_GBP, 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, Litter::Type::Rubbish, 90, ShopItem::None, PeepThoughtType::FunnelCakeMuch, PeepThoughtType::FunnelCake }, + /* ShopItem::Sunglasses */ { 8, 15, 20, 12, 1.50_GBP, 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, Litter::Type::Rubbish, 0, ShopItem::None, PeepThoughtType::SunglassesMuch, PeepThoughtType::Sunglasses }, + /* ShopItem::BeefNoodles */ { 7, 17, 17, 20, 1.50_GBP, 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, Litter::Type::Rubbish, 130, ShopItem::EmptyBowlBlue, PeepThoughtType::BeefNoodlesMuch, PeepThoughtType::BeefNoodles }, + /* ShopItem::FriedRiceNoodles */ { 6, 17, 17, 20, 1.50_GBP, 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, Litter::Type::Rubbish, 120, ShopItem::EmptyBowlBlue, PeepThoughtType::FriedRiceNoodlesMuch, PeepThoughtType::FriedRiceNoodles }, + /* ShopItem::WontonSoup */ { 4, 13, 13, 15, 1.50_GBP, 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, Litter::Type::Rubbish, 100, ShopItem::EmptyBowlRed, PeepThoughtType::WontonSoupMuch, PeepThoughtType::WontonSoup }, + /* ShopItem::MeatballSoup */ { 5, 14, 14, 16, 1.50_GBP, 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, Litter::Type::Rubbish, 110, ShopItem::EmptyBowlRed, PeepThoughtType::MeatballSoupMuch, PeepThoughtType::MeatballSoup }, + /* ShopItem::FruitJuice */ { 4, 11, 19, 11, 1.20_GBP, 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, Litter::Type::Rubbish, 110, ShopItem::EmptyJuiceCup, PeepThoughtType::FruitJuiceMuch, PeepThoughtType::FruitJuice }, + /* ShopItem::SoybeanMilk */ { 4, 10, 14, 10, 1.20_GBP, 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, Litter::Type::Rubbish, 90, ShopItem::EmptyDrinkCarton, PeepThoughtType::SoybeanMilkMuch, PeepThoughtType::SoybeanMilk }, + /* ShopItem::Sujeonggwa */ { 3, 11, 14, 11, 1.20_GBP, 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, Litter::Type::Rubbish, 100, ShopItem::EmptyDrinkCarton, PeepThoughtType::SujongkwaMuch, PeepThoughtType::Sujongkwa }, + /* ShopItem::SubSandwich */ { 5, 19, 19, 17, 1.50_GBP, 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, Litter::Type::Rubbish, 130, ShopItem::None, PeepThoughtType::SubSandwichMuch, PeepThoughtType::SubSandwich }, + /* ShopItem::Cookie */ { 4, 8, 8, 8, 0.70_GBP, 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, Litter::Type::Rubbish, 75, ShopItem::None, PeepThoughtType::CookieMuch, PeepThoughtType::Cookie }, + /* ShopItem::EmptyBowlRed */ { 0, 0, 0, 0, 0.00_GBP, 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 }, SHOP_ITEM_FLAG_IS_CONTAINER, Litter::Type::EmptyBowlRed, 0, ShopItem::None, PeepThoughtType::None, PeepThoughtType::None }, + /* ShopItem::EmptyDrinkCarton */ { 0, 0, 0, 0, 0.00_GBP, 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 }, SHOP_ITEM_FLAG_IS_CONTAINER, Litter::Type::EmptyDrinkCarton, 0, ShopItem::None, PeepThoughtType::None, PeepThoughtType::None }, + /* ShopItem::EmptyJuiceCup */ { 0, 0, 0, 0, 0.00_GBP, 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 }, SHOP_ITEM_FLAG_IS_CONTAINER, Litter::Type::EmptyJuiceCup, 0, ShopItem::None, PeepThoughtType::None, PeepThoughtType::None }, + /* ShopItem::RoastSausage */ { 5, 16, 16, 20, 1.50_GBP, 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, Litter::Type::Rubbish, 115, ShopItem::None, PeepThoughtType::RoastSausageMuch, PeepThoughtType::RoastSausage }, + /* ShopItem::EmptyBowlBlue */ { 0, 0, 0, 0, 0.00_GBP, 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 }, SHOP_ITEM_FLAG_IS_CONTAINER, Litter::Type::EmptyBowlBlue, 0, ShopItem::None, PeepThoughtType::None, PeepThoughtType::None }, }; // clang-format on diff --git a/src/openrct2/world/Park.cpp b/src/openrct2/world/Park.cpp index c201b94da5..ab18e9105b 100644 --- a/src/openrct2/world/Park.cpp +++ b/src/openrct2/world/Park.cpp @@ -279,7 +279,7 @@ void Park::Initialise() set_all_scenery_items_invented(); - gParkEntranceFee = MONEY(10, 00); + gParkEntranceFee = 10.00_GBP; gPeepSpawns.clear(); reset_park_entrance(); @@ -289,15 +289,15 @@ void Park::Initialise() ResearchCategory::Water, ResearchCategory::Shop, ResearchCategory::SceneryGroup); gResearchFundingLevel = RESEARCH_FUNDING_NORMAL; - gGuestInitialCash = MONEY(50, 00); + gGuestInitialCash = 50.00_GBP; gGuestInitialHappiness = CalculateGuestInitialHappiness(50); gGuestInitialHunger = 200; gGuestInitialThirst = 200; gScenarioObjective.Type = OBJECTIVE_GUESTS_BY; gScenarioObjective.Year = 4; gScenarioObjective.NumGuests = 1000; - gLandPrice = MONEY(90, 00); - gConstructionRightsPrice = MONEY(40, 00); + gLandPrice = 90.00_GBP; + gConstructionRightsPrice = 40.00_GBP; gParkFlags = PARK_FLAGS_NO_MONEY | PARK_FLAGS_SHOW_REAL_GUEST_NAMES; ResetHistories(); finance_reset_history(); @@ -493,7 +493,7 @@ money64 Park::CalculateParkValue() const } // +7.00 per guest - result += static_cast(gNumGuestsInPark) * MONEY(7, 00); + result += static_cast(gNumGuestsInPark) * 7.00_GBP; return result; } diff --git a/src/openrct2/world/Park.h b/src/openrct2/world/Park.h index 82a48c7fae..d065282459 100644 --- a/src/openrct2/world/Park.h +++ b/src/openrct2/world/Park.h @@ -12,7 +12,7 @@ #include "../common.h" #include "Map.h" -#define MAX_ENTRANCE_FEE MONEY(200, 00) +constexpr auto MAX_ENTRANCE_FEE = 200.00_GBP; constexpr const uint8_t ParkRatingHistoryUndefined = std::numeric_limits::max(); constexpr const uint32_t GuestsInParkHistoryUndefined = std::numeric_limits::max();