mirror of https://github.com/OpenRCT2/OpenRCT2.git
Move Park to GameState_t
This commit is contained in:
parent
1f1377a8ef
commit
28451027b1
|
@ -134,7 +134,7 @@ static InteractionInfo ViewportInteractionGetItemLeft(const ScreenCoordsXY& scre
|
|||
break;
|
||||
case ViewportInteractionItem::ParkEntrance:
|
||||
{
|
||||
auto& park = GetContext()->GetGameState()->GetPark();
|
||||
auto& park = GetGameState().Park;
|
||||
auto parkName = park.Name.c_str();
|
||||
|
||||
auto ft = Formatter();
|
||||
|
|
|
@ -662,7 +662,7 @@ static uint64_t window_editor_objective_options_page_hold_down_widgets[] = {
|
|||
{
|
||||
case WIDX_PARK_NAME:
|
||||
{
|
||||
auto& park = OpenRCT2::GetContext()->GetGameState()->GetPark();
|
||||
auto& park = OpenRCT2::GetGameState().Park;
|
||||
WindowTextInputRawOpen(
|
||||
this, WIDX_PARK_NAME, STR_PARK_NAME, STR_ENTER_PARK_NAME, {}, park.Name.c_str(), ParkNameMaxLength);
|
||||
break;
|
||||
|
@ -794,7 +794,7 @@ static uint64_t window_editor_objective_options_page_hold_down_widgets[] = {
|
|||
|
||||
if (gameState.ScenarioName.empty())
|
||||
{
|
||||
auto& park = OpenRCT2::GetContext()->GetGameState()->GetPark();
|
||||
auto& park = OpenRCT2::GetGameState().Park;
|
||||
gameState.ScenarioName = park.Name;
|
||||
}
|
||||
break;
|
||||
|
@ -972,7 +972,7 @@ static uint64_t window_editor_objective_options_page_hold_down_widgets[] = {
|
|||
widthToSet = widgets[WIDX_PARK_NAME].left - 16;
|
||||
|
||||
{
|
||||
auto& park = OpenRCT2::GetContext()->GetGameState()->GetPark();
|
||||
auto& park = OpenRCT2::GetGameState().Park;
|
||||
auto parkName = park.Name.c_str();
|
||||
|
||||
ft = Formatter();
|
||||
|
|
|
@ -870,7 +870,7 @@ static Widget _windowFinancesResearchWidgets[] =
|
|||
break;
|
||||
default:
|
||||
{
|
||||
auto& park = OpenRCT2::GetContext()->GetGameState()->GetPark();
|
||||
auto& park = OpenRCT2::GetGameState().Park;
|
||||
auto parkName = park.Name.c_str();
|
||||
ft.Add<StringId>(STR_STRING);
|
||||
ft.Add<const char*>(parkName);
|
||||
|
|
|
@ -1629,7 +1629,7 @@ static_assert(_guestWindowPageWidgets.size() == WINDOW_GUEST_PAGE_COUNT);
|
|||
|
||||
std::pair<StringId, Formatter> InventoryFormatItem(Guest& guest, ShopItem item) const
|
||||
{
|
||||
auto& park = OpenRCT2::GetContext()->GetGameState()->GetPark();
|
||||
auto& park = OpenRCT2::GetGameState().Park;
|
||||
auto parkName = park.Name.c_str();
|
||||
|
||||
// Default arguments
|
||||
|
|
|
@ -458,7 +458,7 @@ static Widget window_loadsave_widgets[] =
|
|||
}
|
||||
else
|
||||
{
|
||||
auto& park = OpenRCT2::GetContext()->GetGameState()->GetPark();
|
||||
auto& park = OpenRCT2::GetGameState().Park;
|
||||
auto buffer = park.Name;
|
||||
if (buffer.empty())
|
||||
{
|
||||
|
|
|
@ -402,7 +402,7 @@ static constexpr WindowParkAward _parkAwards[] = {
|
|||
|
||||
void PrepareWindowTitleText()
|
||||
{
|
||||
auto& park = OpenRCT2::GetContext()->GetGameState()->GetPark();
|
||||
auto& park = OpenRCT2::GetGameState().Park;
|
||||
auto parkName = park.Name.c_str();
|
||||
|
||||
auto ft = Formatter::Common();
|
||||
|
@ -423,7 +423,7 @@ static constexpr WindowParkAward _parkAwards[] = {
|
|||
break;
|
||||
case WIDX_RENAME:
|
||||
{
|
||||
auto& park = OpenRCT2::GetContext()->GetGameState()->GetPark();
|
||||
auto& park = OpenRCT2::GetGameState().Park;
|
||||
WindowTextInputRawOpen(
|
||||
this, WIDX_RENAME, STR_PARK_NAME, STR_ENTER_PARK_NAME, {}, park.Name.c_str(), USER_STRING_MAX_LENGTH);
|
||||
break;
|
||||
|
@ -512,7 +512,7 @@ static constexpr WindowParkAward _parkAwards[] = {
|
|||
|
||||
// Set open / close park button state
|
||||
{
|
||||
auto& park = OpenRCT2::GetContext()->GetGameState()->GetPark();
|
||||
auto& park = OpenRCT2::GetGameState().Park;
|
||||
auto parkName = park.Name.c_str();
|
||||
|
||||
auto ft = Formatter::Common();
|
||||
|
|
|
@ -62,7 +62,6 @@ namespace OpenRCT2
|
|||
|
||||
GameState::GameState()
|
||||
{
|
||||
_park = std::make_unique<Park>();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -77,7 +76,7 @@ void GameState::InitAll(const TileCoordsXY& mapSize)
|
|||
gameState.CurrentTicks = 0;
|
||||
|
||||
MapInit(mapSize);
|
||||
_park->Initialise();
|
||||
gameState.Park.Initialise();
|
||||
FinanceInit();
|
||||
BannerInit(gameState);
|
||||
RideInitAll();
|
||||
|
@ -340,7 +339,7 @@ void GameState::UpdateLogic()
|
|||
|
||||
if (!(gScreenFlags & SCREEN_FLAGS_EDITOR))
|
||||
{
|
||||
_park->Update(gameState.Date);
|
||||
gameState.Park.Update(gameState.Date);
|
||||
}
|
||||
|
||||
ResearchUpdate();
|
||||
|
|
|
@ -38,6 +38,7 @@ namespace OpenRCT2
|
|||
|
||||
struct GameState_t
|
||||
{
|
||||
::OpenRCT2::Park Park{};
|
||||
uint32_t CurrentTicks{};
|
||||
::OpenRCT2::Date Date;
|
||||
uint64_t ParkFlags;
|
||||
|
@ -162,18 +163,10 @@ namespace OpenRCT2
|
|||
*/
|
||||
class GameState final
|
||||
{
|
||||
private:
|
||||
std::unique_ptr<Park> _park;
|
||||
|
||||
public:
|
||||
GameState();
|
||||
GameState(const GameState&) = delete;
|
||||
|
||||
Park& GetPark()
|
||||
{
|
||||
return *_park;
|
||||
}
|
||||
|
||||
void InitAll(const TileCoordsXY& mapSize);
|
||||
void Tick();
|
||||
void UpdateLogic();
|
||||
|
|
|
@ -607,7 +607,7 @@ void CheatSetAction::ClearLoan() const
|
|||
|
||||
void CheatSetAction::GenerateGuests(int32_t count) const
|
||||
{
|
||||
auto& park = OpenRCT2::GetContext()->GetGameState()->GetPark();
|
||||
auto& park = OpenRCT2::GetGameState().Park;
|
||||
for (int32_t i = 0; i < count; i++)
|
||||
{
|
||||
park.GenerateGuest();
|
||||
|
|
|
@ -56,7 +56,7 @@ GameActions::Result ParkSetNameAction::Query() const
|
|||
GameActions::Result ParkSetNameAction::Execute() const
|
||||
{
|
||||
// Do a no-op if new name is the same as the current name is the same
|
||||
auto& park = OpenRCT2::GetContext()->GetGameState()->GetPark();
|
||||
auto& park = OpenRCT2::GetGameState().Park;
|
||||
if (_name != park.Name)
|
||||
{
|
||||
park.Name = _name;
|
||||
|
|
|
@ -156,7 +156,7 @@ GameActions::Result RideDemolishAction::DemolishRide(Ride& ride) const
|
|||
}
|
||||
|
||||
ride.Delete();
|
||||
GetGameState().ParkValue = GetContext()->GetGameState()->GetPark().CalculateParkValue();
|
||||
GetGameState().ParkValue = GetGameState().Park.CalculateParkValue();
|
||||
|
||||
// Close windows related to the demolished ride
|
||||
WindowCloseByNumber(WindowClass::RideConstruction, rideId.ToUnderlying());
|
||||
|
|
|
@ -105,7 +105,7 @@ void ScreenshotCheck()
|
|||
|
||||
static std::string ScreenshotGetParkName()
|
||||
{
|
||||
return GetContext()->GetGameState()->GetPark().Name;
|
||||
return GetGameState().Park.Name;
|
||||
}
|
||||
|
||||
static std::string ScreenshotGetDirectory()
|
||||
|
|
|
@ -63,12 +63,8 @@ DiscordService::~DiscordService()
|
|||
|
||||
static std::string GetParkName()
|
||||
{
|
||||
auto gameState = OpenRCT2::GetContext()->GetGameState();
|
||||
if (gameState != nullptr)
|
||||
{
|
||||
return gameState->GetPark().Name;
|
||||
}
|
||||
return {};
|
||||
auto& gameState = OpenRCT2::GetGameState();
|
||||
return gameState.Park.Name;
|
||||
}
|
||||
|
||||
void DiscordService::Tick()
|
||||
|
|
|
@ -222,7 +222,7 @@ static void PaintParkEntranceScrollingText(
|
|||
auto ft = Formatter();
|
||||
if (GetGameState().ParkFlags & PARK_FLAGS_PARK_OPEN)
|
||||
{
|
||||
const auto& park = OpenRCT2::GetContext()->GetGameState()->GetPark();
|
||||
const auto& park = OpenRCT2::GetGameState().Park;
|
||||
auto name = park.Name.c_str();
|
||||
ft.Add<StringId>(STR_STRING);
|
||||
ft.Add<const char*>(name);
|
||||
|
|
|
@ -420,11 +420,7 @@ namespace OpenRCT2
|
|||
os.ReadWriteChunk(ParkFileChunkType::SCENARIO, [&gameState, &os](OrcaStream::ChunkStream& cs) {
|
||||
cs.ReadWrite(gameState.ScenarioCategory);
|
||||
ReadWriteStringTable(cs, gameState.ScenarioName, "en-GB");
|
||||
|
||||
// TODO: Use the passed gameState instead of the global one.
|
||||
auto& park = GetContext()->GetGameState()->GetPark();
|
||||
ReadWriteStringTable(cs, park.Name, "en-GB");
|
||||
|
||||
ReadWriteStringTable(cs, gameState.Park.Name, "en-GB");
|
||||
ReadWriteStringTable(cs, gameState.ScenarioDetails, "en-GB");
|
||||
|
||||
cs.ReadWrite(gameState.ScenarioObjective.Type);
|
||||
|
@ -653,8 +649,7 @@ namespace OpenRCT2
|
|||
|
||||
void ReadWritePluginStorageChunk(GameState_t& gameState, OrcaStream& os)
|
||||
{
|
||||
// TODO: Use the passed gameState instead of the global one.
|
||||
auto& park = GetContext()->GetGameState()->GetPark();
|
||||
auto& park = gameState.Park;
|
||||
if (os.GetMode() == OrcaStream::Mode::WRITING)
|
||||
{
|
||||
#ifdef ENABLE_SCRIPTING
|
||||
|
@ -798,9 +793,7 @@ namespace OpenRCT2
|
|||
{
|
||||
os.ReadWriteChunk(
|
||||
ParkFileChunkType::PARK, [version = os.GetHeader().TargetVersion, &gameState](OrcaStream::ChunkStream& cs) {
|
||||
// TODO: Use the passed gameState instead of the global one.
|
||||
auto& park = GetContext()->GetGameState()->GetPark();
|
||||
cs.ReadWrite(park.Name);
|
||||
cs.ReadWrite(gameState.Park.Name);
|
||||
cs.ReadWrite(gameState.Cash);
|
||||
cs.ReadWrite(gameState.BankLoan);
|
||||
cs.ReadWrite(gameState.MaxBankLoan);
|
||||
|
|
|
@ -275,7 +275,7 @@ namespace RCT1
|
|||
{
|
||||
// Use the ratio between the old and new park value to calcute the ratio to
|
||||
// use for the park value history and the goal.
|
||||
auto& park = GetContext()->GetGameState()->GetPark();
|
||||
auto& park = GetGameState().Park;
|
||||
_parkValueConversionFactor = (park.CalculateParkValue() * 10) / _s4.ParkValue;
|
||||
}
|
||||
else
|
||||
|
@ -2136,7 +2136,7 @@ namespace RCT1
|
|||
}
|
||||
}
|
||||
|
||||
auto& park = GetContext()->GetGameState()->GetPark();
|
||||
auto& park = GetGameState().Park;
|
||||
park.Name = std::move(parkName);
|
||||
}
|
||||
|
||||
|
@ -2150,7 +2150,7 @@ namespace RCT1
|
|||
// Park rating
|
||||
gameState.ParkRating = _s4.ParkRating;
|
||||
|
||||
auto& park = OpenRCT2::GetContext()->GetGameState()->GetPark();
|
||||
auto& park = OpenRCT2::GetGameState().Park;
|
||||
park.ResetHistories();
|
||||
std::copy(std::begin(_s4.ParkRatingHistory), std::end(_s4.ParkRatingHistory), gameState.ParkRatingHistory);
|
||||
for (size_t i = 0; i < std::size(_s4.GuestsInParkHistory); i++)
|
||||
|
@ -2351,7 +2351,7 @@ namespace RCT1
|
|||
gameState.ScenarioDetails = std::move(details);
|
||||
if (_isScenario && !parkName.empty())
|
||||
{
|
||||
auto& park = GetContext()->GetGameState()->GetPark();
|
||||
auto& park = GetGameState().Park;
|
||||
park.Name = std::move(parkName);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -307,7 +307,7 @@ namespace RCT2
|
|||
|
||||
gameState.ParkRating = _s6.ParkRating;
|
||||
|
||||
auto& park = OpenRCT2::GetContext()->GetGameState()->GetPark();
|
||||
auto& park = OpenRCT2::GetGameState().Park;
|
||||
park.ResetHistories();
|
||||
std::copy(std::begin(_s6.ParkRatingHistory), std::end(_s6.ParkRatingHistory), gameState.ParkRatingHistory);
|
||||
for (size_t i = 0; i < std::size(_s6.GuestsInParkHistory); i++)
|
||||
|
|
|
@ -100,7 +100,7 @@ void ScenarioReset(GameState_t& gameState)
|
|||
ScenerySetDefaultPlacementConfiguration();
|
||||
News::InitQueue();
|
||||
|
||||
auto& park = GetContext()->GetGameState()->GetPark();
|
||||
auto& park = GetGameState().Park;
|
||||
gameState.ParkRating = park.CalculateParkRating();
|
||||
gameState.ParkValue = park.CalculateParkValue();
|
||||
gameState.CompanyValue = park.CalculateCompanyValue();
|
||||
|
|
|
@ -278,13 +278,13 @@ namespace OpenRCT2::Scripting
|
|||
|
||||
std::string ScPark::name_get() const
|
||||
{
|
||||
return GetContext()->GetGameState()->GetPark().Name;
|
||||
return GetGameState().Park.Name;
|
||||
}
|
||||
void ScPark::name_set(std::string value)
|
||||
{
|
||||
ThrowIfGameStateNotMutable();
|
||||
|
||||
auto& park = GetContext()->GetGameState()->GetPark();
|
||||
auto& park = GetGameState().Park;
|
||||
if (park.Name != value)
|
||||
{
|
||||
park.Name = std::move(value);
|
||||
|
|
|
@ -152,7 +152,7 @@ void ParkUpdateFencesAroundTile(const CoordsXY& coords)
|
|||
void ParkSetForcedRating(int32_t rating)
|
||||
{
|
||||
_forcedParkRating = rating;
|
||||
auto& park = GetContext()->GetGameState()->GetPark();
|
||||
auto& park = GetGameState().Park;
|
||||
GetGameState().ParkRating = park.CalculateParkRating();
|
||||
auto intent = Intent(INTENT_ACTION_UPDATE_PARK_RATING);
|
||||
ContextBroadcastIntent(&intent);
|
||||
|
@ -776,13 +776,13 @@ void Park::UpdateHistories()
|
|||
|
||||
int32_t ParkIsOpen()
|
||||
{
|
||||
return GetContext()->GetGameState()->GetPark().IsOpen();
|
||||
return GetGameState().Park.IsOpen();
|
||||
}
|
||||
|
||||
uint32_t ParkCalculateSize()
|
||||
{
|
||||
auto& gameState = GetGameState();
|
||||
auto tiles = GetContext()->GetGameState()->GetPark().CalculateParkSize();
|
||||
auto tiles = GetGameState().Park.CalculateParkSize();
|
||||
if (tiles != gameState.ParkSize)
|
||||
{
|
||||
gameState.ParkSize = tiles;
|
||||
|
|
|
@ -98,11 +98,13 @@ TEST_F(PlayTests, SecondGuestInQueueShouldNotRideIfNoFunds)
|
|||
|
||||
auto gs = context->GetGameState();
|
||||
ASSERT_NE(gs, nullptr);
|
||||
|
||||
auto& gameState = GetGameState();
|
||||
|
||||
// Open park for free but charging for rides
|
||||
execute<ParkSetParameterAction>(ParkParameter::Open);
|
||||
execute<ParkSetEntranceFeeAction>(0);
|
||||
GetGameState().ParkFlags |= PARK_FLAGS_UNLOCK_ALL_PRICES;
|
||||
gameState.ParkFlags |= PARK_FLAGS_UNLOCK_ALL_PRICES;
|
||||
|
||||
// Find ferris wheel
|
||||
auto rideManager = GetRideManager();
|
||||
|
@ -116,10 +118,10 @@ TEST_F(PlayTests, SecondGuestInQueueShouldNotRideIfNoFunds)
|
|||
execute<RideSetPriceAction>(ferrisWheel.id, 0, true);
|
||||
|
||||
// Ignore intensity to stimulate peeps to queue into ferris wheel
|
||||
GetGameState().Cheats.IgnoreRideIntensity = true;
|
||||
gameState.Cheats.IgnoreRideIntensity = true;
|
||||
|
||||
// Insert a rich guest
|
||||
auto richGuest = gs->GetPark().GenerateGuest();
|
||||
auto richGuest = gameState.Park.GenerateGuest();
|
||||
richGuest->CashInPocket = 3000;
|
||||
|
||||
// Wait for rich guest to get in queue
|
||||
|
@ -127,7 +129,7 @@ TEST_F(PlayTests, SecondGuestInQueueShouldNotRideIfNoFunds)
|
|||
ASSERT_TRUE(matched);
|
||||
|
||||
// Insert poor guest
|
||||
auto poorGuest = gs->GetPark().GenerateGuest();
|
||||
auto poorGuest = gameState.Park.GenerateGuest();
|
||||
poorGuest->CashInPocket = 5;
|
||||
|
||||
// Wait for poor guest to get in queue
|
||||
|
@ -159,11 +161,13 @@ TEST_F(PlayTests, CarRideWithOneCarOnlyAcceptsTwoGuests)
|
|||
|
||||
auto gs = context->GetGameState();
|
||||
ASSERT_NE(gs, nullptr);
|
||||
|
||||
auto& gameState = GetGameState();
|
||||
|
||||
// Open park for free but charging for rides
|
||||
execute<ParkSetParameterAction>(ParkParameter::Open);
|
||||
execute<ParkSetEntranceFeeAction>(0);
|
||||
GetGameState().ParkFlags |= PARK_FLAGS_UNLOCK_ALL_PRICES;
|
||||
gameState.ParkFlags |= PARK_FLAGS_UNLOCK_ALL_PRICES;
|
||||
|
||||
// Find car ride
|
||||
auto rideManager = GetRideManager();
|
||||
|
@ -176,13 +180,13 @@ TEST_F(PlayTests, CarRideWithOneCarOnlyAcceptsTwoGuests)
|
|||
execute<RideSetPriceAction>(carRide.id, 0, true);
|
||||
|
||||
// Ignore intensity to stimulate peeps to queue into the ride
|
||||
GetGameState().Cheats.IgnoreRideIntensity = true;
|
||||
gameState.Cheats.IgnoreRideIntensity = true;
|
||||
|
||||
// Create some guests
|
||||
std::vector<Peep*> guests;
|
||||
for (int i = 0; i < 25; i++)
|
||||
{
|
||||
guests.push_back(gs->GetPark().GenerateGuest());
|
||||
guests.push_back(gameState.Park.GenerateGuest());
|
||||
}
|
||||
|
||||
// Wait until one of them is riding
|
||||
|
|
Loading…
Reference in New Issue