Skip to content

Commit

Permalink
Move gGuestInitial* to GameState
Browse files Browse the repository at this point in the history
  • Loading branch information
Gymnasiast committed Jan 22, 2024
1 parent ece4b73 commit b5786c2
Show file tree
Hide file tree
Showing 14 changed files with 74 additions and 72 deletions.
43 changes: 23 additions & 20 deletions src/openrct2-ui/windows/EditorScenarioOptions.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -717,13 +717,15 @@ class EditorScenarioOptionsWindow final : public Window

void GuestsMouseDown(WidgetIndex widgetIndex)
{
auto& gameState = GetGameState();

switch (widgetIndex)
{
case WIDX_CASH_PER_GUEST_INCREASE:
if (gGuestInitialCash < 1000.00_GBP)
if (gameState.GuestInitialCash < 1000.00_GBP)
{
auto scenarioSetSetting = ScenarioSetSettingAction(
ScenarioSetSetting::AverageCashPerGuest, gGuestInitialCash + 1.00_GBP);
ScenarioSetSetting::AverageCashPerGuest, gameState.GuestInitialCash + 1.00_GBP);
GameActions::Execute(&scenarioSetSetting);
}
else
Expand All @@ -733,10 +735,10 @@ class EditorScenarioOptionsWindow final : public Window
Invalidate();
break;
case WIDX_CASH_PER_GUEST_DECREASE:
if (gGuestInitialCash > 0.00_GBP)
if (gameState.GuestInitialCash > 0.00_GBP)
{
auto scenarioSetSetting = ScenarioSetSettingAction(
ScenarioSetSetting::AverageCashPerGuest, gGuestInitialCash - 1.00_GBP);
ScenarioSetSetting::AverageCashPerGuest, gameState.GuestInitialCash - 1.00_GBP);
GameActions::Execute(&scenarioSetSetting);
}
else
Expand All @@ -746,10 +748,10 @@ class EditorScenarioOptionsWindow final : public Window
Invalidate();
break;
case WIDX_GUEST_INITIAL_HAPPINESS_INCREASE:
if (gGuestInitialHappiness < 250)
if (gameState.GuestInitialHappiness < 250)
{
auto scenarioSetSetting = ScenarioSetSettingAction(
ScenarioSetSetting::GuestInitialHappiness, gGuestInitialHappiness + 4);
ScenarioSetSetting::GuestInitialHappiness, gameState.GuestInitialHappiness + 4);
GameActions::Execute(&scenarioSetSetting);
}
else
Expand All @@ -759,10 +761,10 @@ class EditorScenarioOptionsWindow final : public Window
Invalidate();
break;
case WIDX_GUEST_INITIAL_HAPPINESS_DECREASE:
if (gGuestInitialHappiness > 40)
if (gameState.GuestInitialHappiness > 40)
{
auto scenarioSetSetting = ScenarioSetSettingAction(
ScenarioSetSetting::GuestInitialHappiness, gGuestInitialHappiness - 4);
ScenarioSetSetting::GuestInitialHappiness, gameState.GuestInitialHappiness - 4);
GameActions::Execute(&scenarioSetSetting);
}
else
Expand All @@ -772,10 +774,10 @@ class EditorScenarioOptionsWindow final : public Window
Invalidate();
break;
case WIDX_GUEST_INITIAL_HUNGER_INCREASE:
if (gGuestInitialHunger > 40)
if (gameState.GuestInitialHunger > 40)
{
auto scenarioSetSetting = ScenarioSetSettingAction(
ScenarioSetSetting::GuestInitialHunger, gGuestInitialHunger - 4);
ScenarioSetSetting::GuestInitialHunger, gameState.GuestInitialHunger - 4);
GameActions::Execute(&scenarioSetSetting);
}
else
Expand All @@ -785,10 +787,10 @@ class EditorScenarioOptionsWindow final : public Window
Invalidate();
break;
case WIDX_GUEST_INITIAL_HUNGER_DECREASE:
if (gGuestInitialHunger < 250)
if (gameState.GuestInitialHunger < 250)
{
auto scenarioSetSetting = ScenarioSetSettingAction(
ScenarioSetSetting::GuestInitialHunger, gGuestInitialHunger + 4);
ScenarioSetSetting::GuestInitialHunger, gameState.GuestInitialHunger + 4);
GameActions::Execute(&scenarioSetSetting);
}
else
Expand All @@ -798,10 +800,10 @@ class EditorScenarioOptionsWindow final : public Window
Invalidate();
break;
case WIDX_GUEST_INITIAL_THIRST_INCREASE:
if (gGuestInitialThirst > 40)
if (gameState.GuestInitialThirst > 40)
{
auto scenarioSetSetting = ScenarioSetSettingAction(
ScenarioSetSetting::GuestInitialThirst, gGuestInitialThirst - 4);
ScenarioSetSetting::GuestInitialThirst, gameState.GuestInitialThirst - 4);
GameActions::Execute(&scenarioSetSetting);
}
else
Expand All @@ -811,10 +813,10 @@ class EditorScenarioOptionsWindow final : public Window
Invalidate();
break;
case WIDX_GUEST_INITIAL_THIRST_DECREASE:
if (gGuestInitialThirst < 250)
if (gameState.GuestInitialThirst < 250)
{
auto scenarioSetSetting = ScenarioSetSettingAction(
ScenarioSetSetting::GuestInitialThirst, gGuestInitialThirst + 4);
ScenarioSetSetting::GuestInitialThirst, gameState.GuestInitialThirst + 4);
GameActions::Execute(&scenarioSetSetting);
}
else
Expand Down Expand Up @@ -873,6 +875,7 @@ class EditorScenarioOptionsWindow final : public Window

WindowDrawWidgets(*this, dpi);
DrawTabImages(dpi);
auto& gameState = GetGameState();

const auto& cashPerGuestWidget = widgets[WIDX_CASH_PER_GUEST];
if (cashPerGuestWidget.type != WindowWidgetType::Empty)
Expand All @@ -884,7 +887,7 @@ class EditorScenarioOptionsWindow final : public Window
// Cash per guest value
screenCoords = windowPos + ScreenCoordsXY{ cashPerGuestWidget.left + 1, cashPerGuestWidget.top };
auto ft = Formatter();
ft.Add<money64>(gGuestInitialCash);
ft.Add<money64>(gameState.GuestInitialCash);
DrawTextBasic(dpi, screenCoords, STR_CURRENCY_FORMAT_LABEL, ft);
}

Expand All @@ -896,7 +899,7 @@ class EditorScenarioOptionsWindow final : public Window
// Guest initial happiness value
screenCoords = windowPos + ScreenCoordsXY{ initialHappinessWidget.left + 1, initialHappinessWidget.top };
auto ft = Formatter();
ft.Add<uint16_t>((gGuestInitialHappiness * 100) / 255);
ft.Add<uint16_t>((gameState.GuestInitialHappiness * 100) / 255);
DrawTextBasic(dpi, screenCoords, STR_PERCENT_FORMAT_LABEL, ft);

// Guest initial hunger label
Expand All @@ -907,7 +910,7 @@ class EditorScenarioOptionsWindow final : public Window
// Guest initial hunger value
screenCoords = windowPos + ScreenCoordsXY{ initialHungerWidget.left + 1, initialHungerWidget.top };
ft = Formatter();
ft.Add<uint16_t>(((255 - gGuestInitialHunger) * 100) / 255);
ft.Add<uint16_t>(((255 - gameState.GuestInitialHunger) * 100) / 255);
DrawTextBasic(dpi, screenCoords, STR_PERCENT_FORMAT_LABEL, ft);

// Guest initial thirst label
Expand All @@ -918,7 +921,7 @@ class EditorScenarioOptionsWindow final : public Window
// Guest initial thirst value
screenCoords = windowPos + ScreenCoordsXY{ initialThirstWidget.left + 1, initialThirstWidget.top };
ft = Formatter();
ft.Add<uint16_t>(((255 - gGuestInitialThirst) * 100) / 255);
ft.Add<uint16_t>(((255 - gameState.GuestInitialThirst) * 100) / 255);
DrawTextBasic(dpi, screenCoords, STR_PERCENT_FORMAT_LABEL, ft);
}

Expand Down
2 changes: 1 addition & 1 deletion src/openrct2/Editor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -336,7 +336,7 @@ namespace Editor

gameState.ParkFlags &= ~PARK_FLAGS_SPRITES_INITIALISED;

gGuestInitialCash = std::clamp(gGuestInitialCash, 10.00_GBP, MAX_ENTRANCE_FEE);
gameState.GuestInitialCash = std::clamp(gameState.GuestInitialCash, 10.00_GBP, MAX_ENTRANCE_FEE);

gameState.InitialCash = std::min<money64>(GetGameState().InitialCash, 100000);
FinanceResetCashToInitial();
Expand Down
4 changes: 4 additions & 0 deletions src/openrct2/GameState.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,10 @@ namespace OpenRCT2
ClimateState ClimateNext;
money64 Cash;
money64 InitialCash;
money64 GuestInitialCash;
uint8_t GuestInitialHappiness;
uint8_t GuestInitialHunger;
uint8_t GuestInitialThirst;
};

GameState_t& GetGameState();
Expand Down
8 changes: 4 additions & 4 deletions src/openrct2/actions/ScenarioSetSettingAction.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -113,16 +113,16 @@ GameActions::Result ScenarioSetSettingAction::Execute() const
}
break;
case ScenarioSetSetting::AverageCashPerGuest:
gGuestInitialCash = std::clamp<money64>(_value, 0.00_GBP, 1000.00_GBP);
gameState.GuestInitialCash = std::clamp<money64>(_value, 0.00_GBP, 1000.00_GBP);
break;
case ScenarioSetSetting::GuestInitialHappiness:
gGuestInitialHappiness = std::clamp<uint8_t>(_value, 40, 250);
gameState.GuestInitialHappiness = std::clamp<uint8_t>(_value, 40, 250);
break;
case ScenarioSetSetting::GuestInitialHunger:
gGuestInitialHunger = std::clamp<uint8_t>(_value, 40, 250);
gameState.GuestInitialHunger = std::clamp<uint8_t>(_value, 40, 250);
break;
case ScenarioSetSetting::GuestInitialThirst:
gGuestInitialThirst = std::clamp<uint8_t>(_value, 40, 250);
gameState.GuestInitialThirst = std::clamp<uint8_t>(_value, 40, 250);
break;
case ScenarioSetSetting::GuestsPreferLessIntenseRides:
if (_value != 0)
Expand Down
16 changes: 8 additions & 8 deletions src/openrct2/entity/Guest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7076,6 +7076,7 @@ Guest* Guest::Generate(const CoordsXYZ& coords)
if (GetNumFreeEntities() < 400)
return nullptr;

auto& gameState = GetGameState();
Guest* peep = CreateEntity<Guest>();
peep->SpriteType = PeepSpriteType::Normal;
peep->OutsideOfPark = true;
Expand Down Expand Up @@ -7111,7 +7112,6 @@ Guest* Guest::Generate(const CoordsXYZ& coords)

/* Check which intensity boxes are enabled
* and apply the appropriate intensity settings. */
auto& gameState = GetGameState();
if (gameState.ParkFlags & PARK_FLAGS_PREF_LESS_INTENSE_RIDES)
{
if (gameState.ParkFlags & PARK_FLAGS_PREF_MORE_INTENSE_RIDES)
Expand Down Expand Up @@ -7144,10 +7144,10 @@ Guest* Guest::Generate(const CoordsXYZ& coords)
/* Scenario editor limits initial guest happiness to between 37..253.
* To be on the safe side, assume the value could have been hacked
* to any value 0..255. */
peep->Happiness = gGuestInitialHappiness;
peep->Happiness = gameState.GuestInitialHappiness;
/* Assume a default initial happiness of 0 is wrong and set
* to 128 (50%) instead. */
if (gGuestInitialHappiness == 0)
if (gameState.GuestInitialHappiness == 0)
peep->Happiness = 128;
/* Initial value will vary by -15..16 */
int8_t happinessDelta = (ScenarioRand() & 0x1F) - 15;
Expand All @@ -7160,7 +7160,7 @@ Guest* Guest::Generate(const CoordsXYZ& coords)
/* Scenario editor limits initial guest hunger to between 37..253.
* To be on the safe side, assume the value could have been hacked
* to any value 0..255. */
peep->Hunger = gGuestInitialHunger;
peep->Hunger = gameState.GuestInitialHunger;
/* Initial value will vary by -15..16 */
int8_t hungerDelta = (ScenarioRand() & 0x1F) - 15;
/* Adjust by the delta, clamping at min=0 and max=255. */
Expand All @@ -7169,7 +7169,7 @@ Guest* Guest::Generate(const CoordsXYZ& coords)
/* Scenario editor limits initial guest thirst to between 37..253.
* To be on the safe side, assume the value could have been hacked
* to any value 0..255. */
peep->Thirst = gGuestInitialThirst;
peep->Thirst = gameState.GuestInitialThirst;
/* Initial value will vary by -15..16 */
int8_t thirstDelta = (ScenarioRand() & 0x1F) - 15;
/* Adjust by the delta, clamping at min=0 and max=255. */
Expand All @@ -7182,11 +7182,11 @@ Guest* Guest::Generate(const CoordsXYZ& coords)
peep->PeepId = gNextGuestNumber++;
peep->Name = nullptr;

money64 cash = (static_cast<money64>(ScenarioRand() & 0x3) * 100) - 100 + gGuestInitialCash;
money64 cash = (static_cast<money64>(ScenarioRand() & 0x3) * 100) - 100 + gameState.GuestInitialCash;
if (cash < 0)
cash = 0;

if (gGuestInitialCash == 0.00_GBP)
if (gameState.GuestInitialCash == 0.00_GBP)
{
cash = 500;
}
Expand All @@ -7196,7 +7196,7 @@ Guest* Guest::Generate(const CoordsXYZ& coords)
cash = 0;
}

if (gGuestInitialCash == MONEY64_UNDEFINED)
if (gameState.GuestInitialCash == MONEY64_UNDEFINED)
{
cash = 0;
}
Expand Down
5 changes: 0 additions & 5 deletions src/openrct2/entity/Guest.h
Original file line number Diff line number Diff line change
Expand Up @@ -465,11 +465,6 @@ extern uint32_t gNumGuestsInPark;
extern uint32_t gNumGuestsInParkLastWeek;
extern uint32_t gNumGuestsHeadingForPark;

extern money64 gGuestInitialCash;
extern uint8_t gGuestInitialHappiness;
extern uint8_t gGuestInitialHunger;
extern uint8_t gGuestInitialThirst;

extern uint32_t gNextGuestNumber;

void PeepThoughtSetFormatArgs(const PeepThought* thought, Formatter& ft);
Expand Down
5 changes: 0 additions & 5 deletions src/openrct2/entity/Peep.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -71,11 +71,6 @@ uint32_t gNumGuestsInPark;
uint32_t gNumGuestsInParkLastWeek;
uint32_t gNumGuestsHeadingForPark;

money64 gGuestInitialCash;
uint8_t gGuestInitialHappiness;
uint8_t gGuestInitialHunger;
uint8_t gGuestInitialThirst;

uint32_t gNextGuestNumber;

uint8_t gPeepWarningThrottle[16];
Expand Down
15 changes: 9 additions & 6 deletions src/openrct2/interface/InteractiveConsole.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -585,33 +585,36 @@ static int32_t ConsoleCommandGet(InteractiveConsole& console, const arguments_t&
}
else if (argv[0] == "guest_initial_cash")
{
console.WriteFormatLine("guest_initial_cash %d.%d0", gGuestInitialCash / 10, gGuestInitialCash % 10);
console.WriteFormatLine(
"guest_initial_cash %d.%d0", gameState.GuestInitialCash / 10, gameState.GuestInitialCash % 10);
}
else if (argv[0] == "guest_initial_happiness")
{
uint32_t current_happiness = gGuestInitialHappiness;
uint32_t current_happiness = gameState.GuestInitialHappiness;
for (int32_t i = 15; i <= 99; i++)
{
if (i == 99)
{
console.WriteFormatLine("guest_initial_happiness %d%% (%d)", 15, gGuestInitialHappiness);
console.WriteFormatLine("guest_initial_happiness %d%% (%d)", 15, gameState.GuestInitialHappiness);
}
else if (current_happiness == CalculateGuestInitialHappiness(i))
{
console.WriteFormatLine("guest_initial_happiness %d%% (%d)", i, gGuestInitialHappiness);
console.WriteFormatLine("guest_initial_happiness %d%% (%d)", i, gameState.GuestInitialHappiness);
break;
}
}
}
else if (argv[0] == "guest_initial_hunger")
{
console.WriteFormatLine(
"guest_initial_hunger %d%% (%d)", ((255 - gGuestInitialHunger) * 100) / 255, gGuestInitialHunger);
"guest_initial_hunger %d%% (%d)", ((255 - gameState.GuestInitialHunger) * 100) / 255,
gameState.GuestInitialHunger);
}
else if (argv[0] == "guest_initial_thirst")
{
console.WriteFormatLine(
"guest_initial_thirst %d%% (%d)", ((255 - gGuestInitialThirst) * 100) / 255, gGuestInitialThirst);
"guest_initial_thirst %d%% (%d)", ((255 - gameState.GuestInitialThirst) * 100) / 255,
gameState.GuestInitialThirst);
}
else if (argv[0] == "guest_prefer_less_intense_rides")
{
Expand Down
10 changes: 5 additions & 5 deletions src/openrct2/park/ParkFile.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -513,19 +513,19 @@ namespace OpenRCT2
cs.Write(randState.s1);
}

cs.ReadWrite(gGuestInitialHappiness);
cs.ReadWrite(gameState.GuestInitialHappiness);
if (version <= 18)
{
money16 tempGuestInitialCash{};
cs.ReadWrite(tempGuestInitialCash);
gGuestInitialCash = ToMoney64(tempGuestInitialCash);
gameState.GuestInitialCash = ToMoney64(tempGuestInitialCash);
}
else
{
cs.ReadWrite(gGuestInitialCash);
cs.ReadWrite(gameState.GuestInitialCash);
}
cs.ReadWrite(gGuestInitialHunger);
cs.ReadWrite(gGuestInitialThirst);
cs.ReadWrite(gameState.GuestInitialHunger);
cs.ReadWrite(gameState.GuestInitialThirst);

cs.ReadWrite(gNextGuestNumber);
cs.ReadWriteVector(gPeepSpawns, [&cs](PeepSpawn& spawn) {
Expand Down
8 changes: 4 additions & 4 deletions src/openrct2/rct1/S4Importer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2188,10 +2188,10 @@ namespace RCT1
}

// Initial guest status
gGuestInitialCash = ToMoney64(_s4.GuestInitialCash);
gGuestInitialHunger = _s4.GuestInitialHunger;
gGuestInitialThirst = _s4.GuestInitialThirst;
gGuestInitialHappiness = _s4.GuestInitialHappiness;
gameState.GuestInitialCash = ToMoney64(_s4.GuestInitialCash);
gameState.GuestInitialHunger = _s4.GuestInitialHunger;
gameState.GuestInitialThirst = _s4.GuestInitialThirst;
gameState.GuestInitialHappiness = _s4.GuestInitialHappiness;

_guestGenerationProbability = _s4.GuestGenerationProbability;

Expand Down
8 changes: 4 additions & 4 deletions src/openrct2/rct2/S6Importer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -334,14 +334,14 @@ namespace RCT2
gResearchProgress = _s6.ResearchProgress;
gResearchExpectedDay = _s6.NextResearchExpectedDay;
gResearchExpectedMonth = _s6.NextResearchExpectedMonth;
gGuestInitialHappiness = _s6.GuestInitialHappiness;
gameState.GuestInitialHappiness = _s6.GuestInitialHappiness;
gParkSize = _s6.ParkSize;
_guestGenerationProbability = _s6.GuestGenerationProbability;
gTotalRideValueForMoney = _s6.TotalRideValueForMoney;
gMaxBankLoan = ToMoney64(_s6.MaximumLoan);
gGuestInitialCash = ToMoney64(_s6.GuestInitialCash);
gGuestInitialHunger = _s6.GuestInitialHunger;
gGuestInitialThirst = _s6.GuestInitialThirst;
gameState.GuestInitialCash = ToMoney64(_s6.GuestInitialCash);
gameState.GuestInitialHunger = _s6.GuestInitialHunger;
gameState.GuestInitialThirst = _s6.GuestInitialThirst;
gScenarioObjective.Type = _s6.ObjectiveType;
gScenarioObjective.Year = _s6.ObjectiveYear;
// Pad013580FA
Expand Down
Loading

0 comments on commit b5786c2

Please sign in to comment.