1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-17 12:03:07 +01:00

Merge pull request #22667 from AaronVanGeffen/landrights-switching

Adjust land rights window mode when toggling sandbox mode
This commit is contained in:
Michael Steenbeek
2024-09-01 00:19:53 +02:00
committed by GitHub

View File

@@ -95,6 +95,11 @@ static Widget window_land_rights_widgets[] = {
LandRightsMode _landRightsMode;
money64 _landRightsCost;
bool IsOwnershipMode() const
{
return (gScreenFlags & SCREEN_FLAGS_EDITOR) != 0 || GetGameState().Cheats.SandboxMode;
}
void SwitchToMode(LandRightsMode mode)
{
auto widgetIndex = WIDX_BUY_LAND_RIGHTS + EnumValue(mode);
@@ -128,7 +133,7 @@ static Widget window_land_rights_widgets[] = {
gLandToolSize = kLandToolMinimumSize;
ShowGridlines();
if (!GetGameState().Cheats.SandboxMode)
if (!IsOwnershipMode())
{
if (gLandRemainingOwnershipSales > 0)
SwitchToMode(LandRightsMode::BuyLand);
@@ -243,9 +248,26 @@ static Widget window_land_rights_widgets[] = {
void OnUpdate() override
{
frame_no++;
// Close window if another tool is open
if (!isToolActive(WindowClass::LandRights))
{
Close();
return;
}
bool inRightsMode = _landRightsMode == LandRightsMode::BuyLand
|| _landRightsMode == LandRightsMode::BuyConstructionRights;
if (!IsOwnershipMode() && !inRightsMode)
{
if (gLandRemainingOwnershipSales > 0)
SwitchToMode(LandRightsMode::BuyLand);
else
SwitchToMode(LandRightsMode::BuyConstructionRights);
}
else if (IsOwnershipMode() && inRightsMode)
SwitchToMode(LandRightsMode::SetLandUnowned);
}
void PrepareDrawInGame()
@@ -327,7 +349,7 @@ static Widget window_land_rights_widgets[] = {
ScreenCoordsXY GetModeDimensions() const
{
if ((gScreenFlags & SCREEN_FLAGS_EDITOR) != 0 || GetGameState().Cheats.SandboxMode)
if (IsOwnershipMode())
return kEditorSize;
else
return kInGameSize;
@@ -341,7 +363,7 @@ static Widget window_land_rights_widgets[] = {
if (width != GetModeDimensions().x)
OnResize();
if ((gScreenFlags & SCREEN_FLAGS_EDITOR) != 0 || GetGameState().Cheats.SandboxMode)
if (IsOwnershipMode())
{
PrepareDrawSandbox();
ColourSchemeUpdateByClass(this, WindowClass::Map);
@@ -506,7 +528,7 @@ static Widget window_land_rights_widgets[] = {
if (!state_changed)
return;
if ((gScreenFlags & SCREEN_FLAGS_EDITOR) != 0 || GetGameState().Cheats.SandboxMode)
if (IsOwnershipMode())
{
auto landSetRightsAction = GetLandSetAction();
auto res = GameActions::Query(&landSetRightsAction);
@@ -534,7 +556,7 @@ static Widget window_land_rights_widgets[] = {
if (screenCoords.x == kLocationNull)
return;
if ((gScreenFlags & SCREEN_FLAGS_EDITOR) != 0 || GetGameState().Cheats.SandboxMode)
if (IsOwnershipMode())
{
auto landSetRightsAction = GetLandSetAction();
GameActions::Execute(&landSetRightsAction);