mirror of https://github.com/OpenRCT2/OpenRCT2.git
Merge pull request #21230 from ZehMatt/21193-gInitialCash
#21193: Move gInitialCash to GameState_t, refactor uses
This commit is contained in:
commit
f55eeff2e0
|
@ -16,6 +16,7 @@
|
|||
#include <openrct2/Context.h>
|
||||
#include <openrct2/Editor.h>
|
||||
#include <openrct2/Game.h>
|
||||
#include <openrct2/GameState.h>
|
||||
#include <openrct2/OpenRCT2.h>
|
||||
#include <openrct2/actions/ClimateSetAction.h>
|
||||
#include <openrct2/actions/ScenarioSetSettingAction.h>
|
||||
|
@ -29,6 +30,8 @@
|
|||
#include <openrct2/world/Climate.h>
|
||||
#include <openrct2/world/Park.h>
|
||||
|
||||
using namespace OpenRCT2;
|
||||
|
||||
static constexpr int32_t WW_FINANCIAL = 280;
|
||||
static constexpr int32_t WH_FINANCIAL = 149;
|
||||
|
||||
|
@ -430,13 +433,14 @@ private:
|
|||
|
||||
void FinancialMouseDown(WidgetIndex widgetIndex)
|
||||
{
|
||||
auto& gameState = GetGameState();
|
||||
switch (widgetIndex)
|
||||
{
|
||||
case WIDX_INITIAL_CASH_INCREASE:
|
||||
if (gInitialCash < 1000000.00_GBP)
|
||||
if (gameState.InitialCash < 1000000.00_GBP)
|
||||
{
|
||||
auto scenarioSetSetting = ScenarioSetSettingAction(
|
||||
ScenarioSetSetting::InitialCash, gInitialCash + 500.00_GBP);
|
||||
ScenarioSetSetting::InitialCash, gameState.InitialCash + 500.00_GBP);
|
||||
GameActions::Execute(&scenarioSetSetting);
|
||||
}
|
||||
else
|
||||
|
@ -446,10 +450,10 @@ private:
|
|||
Invalidate();
|
||||
break;
|
||||
case WIDX_INITIAL_CASH_DECREASE:
|
||||
if (gInitialCash > 0.00_GBP)
|
||||
if (gameState.InitialCash > 0.00_GBP)
|
||||
{
|
||||
auto scenarioSetSetting = ScenarioSetSettingAction(
|
||||
ScenarioSetSetting::InitialCash, gInitialCash - 500.00_GBP);
|
||||
ScenarioSetSetting::InitialCash, gameState.InitialCash - 500.00_GBP);
|
||||
GameActions::Execute(&scenarioSetSetting);
|
||||
}
|
||||
else
|
||||
|
@ -623,7 +627,7 @@ private:
|
|||
|
||||
screenCoords = windowPos + ScreenCoordsXY{ initialCashWidget.left + 1, initialCashWidget.top };
|
||||
auto ft = Formatter();
|
||||
ft.Add<money64>(gInitialCash);
|
||||
ft.Add<money64>(GetGameState().InitialCash);
|
||||
DrawTextBasic(dpi, screenCoords, STR_CURRENCY_FORMAT_LABEL, ft);
|
||||
}
|
||||
|
||||
|
|
|
@ -336,7 +336,7 @@ namespace Editor
|
|||
|
||||
gGuestInitialCash = std::clamp(gGuestInitialCash, 10.00_GBP, MAX_ENTRANCE_FEE);
|
||||
|
||||
gInitialCash = std::min<money64>(gInitialCash, 100000);
|
||||
GetGameState().InitialCash = std::min<money64>(GetGameState().InitialCash, 100000);
|
||||
FinanceResetCashToInitial();
|
||||
|
||||
gBankLoan = std::clamp<money64>(gBankLoan, 0.00_GBP, 5000000.00_GBP);
|
||||
|
|
|
@ -25,6 +25,7 @@ namespace OpenRCT2
|
|||
{
|
||||
uint32_t CurrentTicks{};
|
||||
money64 Cash;
|
||||
money64 InitialCash;
|
||||
};
|
||||
|
||||
GameState_t& GetGameState();
|
||||
|
|
|
@ -48,6 +48,7 @@ GameActions::Result ScenarioSetSettingAction::Query() const
|
|||
|
||||
GameActions::Result ScenarioSetSettingAction::Execute() const
|
||||
{
|
||||
auto& gameState = GetGameState();
|
||||
switch (_setting)
|
||||
{
|
||||
case ScenarioSetSetting::NoMoney:
|
||||
|
@ -82,8 +83,8 @@ GameActions::Result ScenarioSetSettingAction::Execute() const
|
|||
}
|
||||
break;
|
||||
case ScenarioSetSetting::InitialCash:
|
||||
gInitialCash = std::clamp<money64>(_value, 0.00_GBP, 1000000.00_GBP);
|
||||
GetGameState().Cash = gInitialCash;
|
||||
gameState.InitialCash = std::clamp<money64>(_value, 0.00_GBP, 1000000.00_GBP);
|
||||
gameState.Cash = gameState.InitialCash;
|
||||
WindowInvalidateByClass(WindowClass::Finances);
|
||||
WindowInvalidateByClass(WindowClass::BottomToolbar);
|
||||
break;
|
||||
|
|
|
@ -571,7 +571,7 @@ static int32_t ConsoleCommandGet(InteractiveConsole& console, const arguments_t&
|
|||
}
|
||||
else if (argv[0] == "scenario_initial_cash")
|
||||
{
|
||||
console.WriteFormatLine("scenario_initial_cash %d", gInitialCash / 10);
|
||||
console.WriteFormatLine("scenario_initial_cash %d", GetGameState().InitialCash / 10);
|
||||
}
|
||||
else if (argv[0] == "current_loan")
|
||||
{
|
||||
|
|
|
@ -39,7 +39,6 @@ static constexpr int32_t dword_988E60[static_cast<int32_t>(ExpenditureType::Coun
|
|||
1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0,
|
||||
};
|
||||
|
||||
money64 gInitialCash;
|
||||
money64 gBankLoan;
|
||||
uint8_t gBankLoanInterestRate;
|
||||
money64 gMaxBankLoan;
|
||||
|
@ -214,6 +213,8 @@ void FinanceResetHistory()
|
|||
*/
|
||||
void FinanceInit()
|
||||
{
|
||||
auto& gameState = GetGameState();
|
||||
|
||||
// It only initialises the first month
|
||||
for (uint32_t i = 0; i < static_cast<int32_t>(ExpenditureType::Count); i++)
|
||||
{
|
||||
|
@ -226,9 +227,9 @@ void FinanceInit()
|
|||
gWeeklyProfitAverageDividend = 0;
|
||||
gWeeklyProfitAverageDivisor = 0;
|
||||
|
||||
gInitialCash = 10000.00_GBP; // Cheat detection
|
||||
gameState.InitialCash = 10000.00_GBP; // Cheat detection
|
||||
|
||||
GetGameState().Cash = 10000.00_GBP;
|
||||
gameState.Cash = 10000.00_GBP;
|
||||
gBankLoan = 10000.00_GBP;
|
||||
gMaxBankLoan = 20000.00_GBP;
|
||||
|
||||
|
@ -296,7 +297,7 @@ void FinanceUpdateDailyProfit()
|
|||
|
||||
money64 FinanceGetInitialCash()
|
||||
{
|
||||
return gInitialCash;
|
||||
return GetGameState().InitialCash;
|
||||
}
|
||||
|
||||
money64 FinanceGetCurrentLoan()
|
||||
|
@ -356,7 +357,8 @@ void FinanceShiftExpenditureTable()
|
|||
*/
|
||||
void FinanceResetCashToInitial()
|
||||
{
|
||||
GetGameState().Cash = gInitialCash;
|
||||
auto& gameState = GetGameState();
|
||||
gameState.Cash = gameState.InitialCash;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -38,7 +38,6 @@ constexpr uint8_t MaxBankLoanInterestRate = 255;
|
|||
|
||||
extern const money64 research_cost_table[RESEARCH_FUNDING_COUNT];
|
||||
|
||||
extern money64 gInitialCash;
|
||||
extern money64 gBankLoan;
|
||||
extern uint8_t gBankLoanInterestRate;
|
||||
extern money64 gMaxBankLoan;
|
||||
|
|
|
@ -166,7 +166,7 @@ namespace OpenRCT2
|
|||
}
|
||||
|
||||
// Initial cash will eventually be removed
|
||||
gInitialCash = gameState.Cash;
|
||||
gameState.InitialCash = gameState.Cash;
|
||||
}
|
||||
|
||||
void Save(GameState_t& gameState, IStream& stream)
|
||||
|
|
|
@ -1400,7 +1400,7 @@ namespace RCT1
|
|||
gMaxBankLoan = ToMoney64(_s4.MaxLoan);
|
||||
// It's more like 1.33%, but we can only use integers. Can be fixed once we have our own save format.
|
||||
gBankLoanInterestRate = 1;
|
||||
gInitialCash = ToMoney64(_s4.Cash);
|
||||
gameState.InitialCash = ToMoney64(_s4.Cash);
|
||||
|
||||
gCompanyValue = ToMoney64(_s4.CompanyValue);
|
||||
gParkValue = CorrectRCT1ParkValue(_s4.ParkValue);
|
||||
|
|
|
@ -260,7 +260,7 @@ namespace RCT2
|
|||
ImportTileElements();
|
||||
ImportEntities();
|
||||
|
||||
gInitialCash = ToMoney64(_s6.InitialCash);
|
||||
gameState.InitialCash = ToMoney64(_s6.InitialCash);
|
||||
gBankLoan = ToMoney64(_s6.CurrentLoan);
|
||||
|
||||
gParkFlags = _s6.ParkFlags & ~PARK_FLAGS_NO_MONEY_SCENARIO;
|
||||
|
|
|
@ -110,12 +110,13 @@ void ScenarioReset()
|
|||
ScenerySetDefaultPlacementConfiguration();
|
||||
News::InitQueue();
|
||||
|
||||
auto& gameState = GetGameState();
|
||||
auto& park = GetContext()->GetGameState()->GetPark();
|
||||
gParkRating = park.CalculateParkRating();
|
||||
gParkValue = park.CalculateParkValue();
|
||||
gCompanyValue = park.CalculateCompanyValue();
|
||||
gHistoricalProfit = gInitialCash - gBankLoan;
|
||||
GetGameState().Cash = gInitialCash;
|
||||
gHistoricalProfit = gameState.InitialCash - gBankLoan;
|
||||
gameState.Cash = gameState.InitialCash;
|
||||
|
||||
{
|
||||
utf8 normalisedName[64];
|
||||
|
|
Loading…
Reference in New Issue