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:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user