mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2025-12-24 00:03:11 +01:00
Move water tool functions from TopToolbar.cpp into Water.cpp
This commit is contained in:
@@ -41,8 +41,6 @@
|
||||
#include <openrct2/actions/SmallScenerySetColourAction.h>
|
||||
#include <openrct2/actions/WallPlaceAction.h>
|
||||
#include <openrct2/actions/WallSetColourAction.h>
|
||||
#include <openrct2/actions/WaterLowerAction.h>
|
||||
#include <openrct2/actions/WaterRaiseAction.h>
|
||||
#include <openrct2/audio/audio.h>
|
||||
#include <openrct2/config/Config.h>
|
||||
#include <openrct2/entity/Staff.h>
|
||||
@@ -368,27 +366,6 @@ namespace OpenRCT2::Ui::Windows
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* rct2: 0x0066CD9C
|
||||
*/
|
||||
void ToggleWaterWindow(WidgetIndex widgetIndex)
|
||||
{
|
||||
if ((InputTestFlag(INPUT_FLAG_TOOL_ACTIVE)) && gCurrentToolWidget.window_classification == WindowClass::TopToolbar
|
||||
&& gCurrentToolWidget.widget_index == WIDX_WATER)
|
||||
{
|
||||
ToolCancel();
|
||||
}
|
||||
else
|
||||
{
|
||||
_landToolBlocked = false;
|
||||
ShowGridlines();
|
||||
ToolSet(*this, widgetIndex, Tool::WaterDown);
|
||||
InputSetFlag(INPUT_FLAG_6, true);
|
||||
ContextOpenWindow(WindowClass::Water);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* rct2: 0x0068E213
|
||||
@@ -405,128 +382,6 @@ namespace OpenRCT2::Ui::Windows
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* rct2: 0x006E6BDC
|
||||
*/
|
||||
void ToolUpdateWater(const ScreenCoordsXY& screenPos)
|
||||
{
|
||||
MapInvalidateSelectionRect();
|
||||
|
||||
if (gCurrentToolId == Tool::UpDownArrow)
|
||||
{
|
||||
if (!(gMapSelectFlags & MAP_SELECT_FLAG_ENABLE))
|
||||
return;
|
||||
|
||||
auto waterLowerAction = WaterLowerAction(
|
||||
{ gMapSelectPositionA.x, gMapSelectPositionA.y, gMapSelectPositionB.x, gMapSelectPositionB.y });
|
||||
auto waterRaiseAction = WaterRaiseAction(
|
||||
{ gMapSelectPositionA.x, gMapSelectPositionA.y, gMapSelectPositionB.x, gMapSelectPositionB.y });
|
||||
|
||||
auto res = GameActions::Query(&waterLowerAction);
|
||||
money64 lowerCost = res.Error == GameActions::Status::Ok ? res.Cost : kMoney64Undefined;
|
||||
|
||||
res = GameActions::Query(&waterRaiseAction);
|
||||
money64 raiseCost = res.Error == GameActions::Status::Ok ? res.Cost : kMoney64Undefined;
|
||||
|
||||
if (gWaterToolRaiseCost != raiseCost || gWaterToolLowerCost != lowerCost)
|
||||
{
|
||||
gWaterToolRaiseCost = raiseCost;
|
||||
gWaterToolLowerCost = lowerCost;
|
||||
WindowInvalidateByClass(WindowClass::Water);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
gMapSelectFlags &= ~MAP_SELECT_FLAG_ENABLE;
|
||||
|
||||
auto info = GetMapCoordinatesFromPos(
|
||||
screenPos, EnumsToFlags(ViewportInteractionItem::Terrain, ViewportInteractionItem::Water));
|
||||
|
||||
if (info.SpriteType == ViewportInteractionItem::None)
|
||||
{
|
||||
if (gWaterToolRaiseCost != kMoney64Undefined || gWaterToolLowerCost != kMoney64Undefined)
|
||||
{
|
||||
gWaterToolRaiseCost = kMoney64Undefined;
|
||||
gWaterToolLowerCost = kMoney64Undefined;
|
||||
WindowInvalidateByClass(WindowClass::Water);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
auto mapTile = info.Loc;
|
||||
|
||||
uint8_t state_changed = 0;
|
||||
|
||||
if (!(gMapSelectFlags & MAP_SELECT_FLAG_ENABLE))
|
||||
{
|
||||
gMapSelectFlags |= MAP_SELECT_FLAG_ENABLE;
|
||||
state_changed++;
|
||||
}
|
||||
|
||||
if (gMapSelectType != MAP_SELECT_TYPE_FULL_WATER)
|
||||
{
|
||||
gMapSelectType = MAP_SELECT_TYPE_FULL_WATER;
|
||||
state_changed++;
|
||||
}
|
||||
|
||||
uint16_t tool_size = std::max<uint16_t>(1, gLandToolSize);
|
||||
uint16_t tool_length = (tool_size - 1) * kCoordsXYStep;
|
||||
|
||||
// Move to tool bottom left
|
||||
mapTile.x -= tool_length / 2;
|
||||
mapTile.y -= tool_length / 2;
|
||||
|
||||
if (gMapSelectPositionA.x != mapTile.x)
|
||||
{
|
||||
gMapSelectPositionA.x = mapTile.x;
|
||||
state_changed++;
|
||||
}
|
||||
|
||||
if (gMapSelectPositionA.y != mapTile.y)
|
||||
{
|
||||
gMapSelectPositionA.y = mapTile.y;
|
||||
state_changed++;
|
||||
}
|
||||
|
||||
mapTile.x += tool_length;
|
||||
mapTile.y += tool_length;
|
||||
|
||||
if (gMapSelectPositionB.x != mapTile.x)
|
||||
{
|
||||
gMapSelectPositionB.x = mapTile.x;
|
||||
state_changed++;
|
||||
}
|
||||
|
||||
if (gMapSelectPositionB.y != mapTile.y)
|
||||
{
|
||||
gMapSelectPositionB.y = mapTile.y;
|
||||
state_changed++;
|
||||
}
|
||||
|
||||
MapInvalidateSelectionRect();
|
||||
if (!state_changed)
|
||||
return;
|
||||
|
||||
auto waterLowerAction = WaterLowerAction(
|
||||
{ gMapSelectPositionA.x, gMapSelectPositionA.y, gMapSelectPositionB.x, gMapSelectPositionB.y });
|
||||
auto waterRaiseAction = WaterRaiseAction(
|
||||
{ gMapSelectPositionA.x, gMapSelectPositionA.y, gMapSelectPositionB.x, gMapSelectPositionB.y });
|
||||
|
||||
auto res = GameActions::Query(&waterLowerAction);
|
||||
money64 lowerCost = res.Error == GameActions::Status::Ok ? res.Cost : kMoney64Undefined;
|
||||
|
||||
res = GameActions::Query(&waterRaiseAction);
|
||||
money64 raiseCost = res.Error == GameActions::Status::Ok ? res.Cost : kMoney64Undefined;
|
||||
|
||||
if (gWaterToolRaiseCost != raiseCost || gWaterToolLowerCost != lowerCost)
|
||||
{
|
||||
gWaterToolRaiseCost = raiseCost;
|
||||
gWaterToolLowerCost = lowerCost;
|
||||
WindowInvalidateByClass(WindowClass::Water);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* rct2: 0x006E287B
|
||||
@@ -836,50 +691,6 @@ namespace OpenRCT2::Ui::Windows
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* part of window_top_toolbar_tool_drag(0x0066CB4E)
|
||||
* rct2: 0x006E6D4B
|
||||
*/
|
||||
void WaterToolDrag(const ScreenCoordsXY& screenPos)
|
||||
{
|
||||
auto* window = WindowFindFromPoint(screenPos);
|
||||
if (window == nullptr || window->viewport == nullptr)
|
||||
return;
|
||||
|
||||
int16_t dx = window->viewport->zoom.ApplyInversedTo(-16);
|
||||
|
||||
auto offsetPos = screenPos - ScreenCoordsXY{ 0, gInputDragLast.y };
|
||||
|
||||
if (offsetPos.y <= dx)
|
||||
{
|
||||
gInputDragLast.y += dx;
|
||||
|
||||
auto waterRaiseAction = WaterRaiseAction(
|
||||
{ gMapSelectPositionA.x, gMapSelectPositionA.y, gMapSelectPositionB.x, gMapSelectPositionB.y });
|
||||
GameActions::Execute(&waterRaiseAction);
|
||||
|
||||
gWaterToolRaiseCost = kMoney64Undefined;
|
||||
gWaterToolLowerCost = kMoney64Undefined;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
dx = -dx;
|
||||
|
||||
if (offsetPos.y >= dx)
|
||||
{
|
||||
gInputDragLast.y += dx;
|
||||
|
||||
auto waterLowerAction = WaterLowerAction(
|
||||
{ gMapSelectPositionA.x, gMapSelectPositionA.y, gMapSelectPositionB.x, gMapSelectPositionB.y });
|
||||
GameActions::Execute(&waterLowerAction);
|
||||
gWaterToolRaiseCost = kMoney64Undefined;
|
||||
gWaterToolLowerCost = kMoney64Undefined;
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* rct2: 0x006E24F6
|
||||
@@ -2077,7 +1888,7 @@ namespace OpenRCT2::Ui::Windows
|
||||
ToggleLandWindow();
|
||||
break;
|
||||
case WIDX_WATER:
|
||||
ToggleWaterWindow(WIDX_WATER);
|
||||
ToggleWaterWindow();
|
||||
break;
|
||||
case WIDX_SCENERY:
|
||||
if (!ToolSet(*this, WIDX_SCENERY, Tool::Arrow))
|
||||
@@ -2293,9 +2104,6 @@ namespace OpenRCT2::Ui::Windows
|
||||
case WIDX_CLEAR_SCENERY:
|
||||
ToolUpdateSceneryClear(screenCoords);
|
||||
break;
|
||||
case WIDX_WATER:
|
||||
ToolUpdateWater(screenCoords);
|
||||
break;
|
||||
case WIDX_SCENERY:
|
||||
ToolUpdateScenery(screenCoords);
|
||||
break;
|
||||
@@ -2323,16 +2131,6 @@ namespace OpenRCT2::Ui::Windows
|
||||
gCurrentToolId = Tool::Crosshair;
|
||||
}
|
||||
break;
|
||||
case WIDX_WATER:
|
||||
if (gMapSelectFlags & MAP_SELECT_FLAG_ENABLE)
|
||||
{
|
||||
gCurrentToolId = Tool::UpDownArrow;
|
||||
}
|
||||
else
|
||||
{
|
||||
_landToolBlocked = true;
|
||||
}
|
||||
break;
|
||||
case WIDX_SCENERY:
|
||||
SceneryToolDown(screenCoords, widgetIndex);
|
||||
break;
|
||||
@@ -2360,12 +2158,6 @@ namespace OpenRCT2::Ui::Windows
|
||||
gCurrentToolId = Tool::Crosshair;
|
||||
}
|
||||
break;
|
||||
case WIDX_WATER:
|
||||
if (!_landToolBlocked)
|
||||
{
|
||||
WaterToolDrag(screenCoords);
|
||||
}
|
||||
break;
|
||||
case WIDX_SCENERY:
|
||||
if (gWindowSceneryPaintEnabled & 1)
|
||||
SceneryToolDown(screenCoords, widgetIndex);
|
||||
@@ -2389,11 +2181,6 @@ namespace OpenRCT2::Ui::Windows
|
||||
_landToolBlocked = false;
|
||||
switch (widgetIndex)
|
||||
{
|
||||
case WIDX_WATER:
|
||||
MapInvalidateSelectionRect();
|
||||
gMapSelectFlags &= ~MAP_SELECT_FLAG_ENABLE;
|
||||
gCurrentToolId = Tool::WaterDown;
|
||||
break;
|
||||
case WIDX_CLEAR_SCENERY:
|
||||
MapInvalidateSelectionRect();
|
||||
gMapSelectFlags &= ~MAP_SELECT_FLAG_ENABLE;
|
||||
@@ -2415,7 +2202,6 @@ namespace OpenRCT2::Ui::Windows
|
||||
{
|
||||
switch (widgetIndex)
|
||||
{
|
||||
case WIDX_WATER:
|
||||
case WIDX_CLEAR_SCENERY:
|
||||
HideGridlines();
|
||||
break;
|
||||
@@ -2875,21 +2661,6 @@ namespace OpenRCT2::Ui::Windows
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* rct2: 0x0066D125
|
||||
*/
|
||||
bool WaterToolIsActive()
|
||||
{
|
||||
if (!(InputTestFlag(INPUT_FLAG_TOOL_ACTIVE)))
|
||||
return false;
|
||||
if (gCurrentToolWidget.window_classification != WindowClass::TopToolbar)
|
||||
return false;
|
||||
if (gCurrentToolWidget.widget_index != WIDX_WATER)
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
void TopToolbar::InitViewMenu(Widget& widget)
|
||||
{
|
||||
using namespace Dropdown;
|
||||
|
||||
@@ -12,6 +12,9 @@
|
||||
#include <openrct2-ui/windows/Window.h>
|
||||
#include <openrct2/Context.h>
|
||||
#include <openrct2/GameState.h>
|
||||
#include <openrct2/Input.h>
|
||||
#include <openrct2/actions/WaterLowerAction.h>
|
||||
#include <openrct2/actions/WaterRaiseAction.h>
|
||||
#include <openrct2/drawing/Drawing.h>
|
||||
#include <openrct2/localisation/Formatter.h>
|
||||
#include <openrct2/world/Park.h>
|
||||
@@ -181,7 +184,228 @@ static Widget _waterWidgets[] = {
|
||||
ResizeFrame();
|
||||
}
|
||||
|
||||
void OnToolUpdate(WidgetIndex widgetIndex, const ScreenCoordsXY& screenCoords) override
|
||||
{
|
||||
switch (widgetIndex)
|
||||
{
|
||||
case WIDX_BACKGROUND:
|
||||
ToolUpdateWater(screenCoords);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void OnToolDown(WidgetIndex widgetIndex, const ScreenCoordsXY& screenCoords) override
|
||||
{
|
||||
switch (widgetIndex)
|
||||
{
|
||||
case WIDX_BACKGROUND:
|
||||
if (gMapSelectFlags & MAP_SELECT_FLAG_ENABLE)
|
||||
{
|
||||
gCurrentToolId = Tool::UpDownArrow;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void OnToolDrag(WidgetIndex widgetIndex, const ScreenCoordsXY& screenCoords) override
|
||||
{
|
||||
switch (widgetIndex)
|
||||
{
|
||||
case WIDX_BACKGROUND:
|
||||
WaterToolDrag(screenCoords);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void OnToolUp(WidgetIndex widgetIndex, const ScreenCoordsXY& screenCoords) override
|
||||
{
|
||||
switch (widgetIndex)
|
||||
{
|
||||
case WIDX_BACKGROUND:
|
||||
MapInvalidateSelectionRect();
|
||||
gMapSelectFlags &= ~MAP_SELECT_FLAG_ENABLE;
|
||||
gCurrentToolId = Tool::WaterDown;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void OnToolAbort(WidgetIndex widgetIndex) override
|
||||
{
|
||||
switch (widgetIndex)
|
||||
{
|
||||
case WIDX_BACKGROUND:
|
||||
HideGridlines();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
/**
|
||||
* part of window_top_toolbar_tool_drag(0x0066CB4E)
|
||||
* rct2: 0x006E6D4B
|
||||
*/
|
||||
void WaterToolDrag(const ScreenCoordsXY& screenPos)
|
||||
{
|
||||
auto* window = WindowFindFromPoint(screenPos);
|
||||
if (window == nullptr || window->viewport == nullptr)
|
||||
return;
|
||||
|
||||
int16_t dx = window->viewport->zoom.ApplyInversedTo(-16);
|
||||
|
||||
auto offsetPos = screenPos - ScreenCoordsXY{ 0, gInputDragLast.y };
|
||||
|
||||
if (offsetPos.y <= dx)
|
||||
{
|
||||
gInputDragLast.y += dx;
|
||||
|
||||
auto waterRaiseAction = WaterRaiseAction(
|
||||
{ gMapSelectPositionA.x, gMapSelectPositionA.y, gMapSelectPositionB.x, gMapSelectPositionB.y });
|
||||
GameActions::Execute(&waterRaiseAction);
|
||||
|
||||
gWaterToolRaiseCost = kMoney64Undefined;
|
||||
gWaterToolLowerCost = kMoney64Undefined;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
dx = -dx;
|
||||
|
||||
if (offsetPos.y >= dx)
|
||||
{
|
||||
gInputDragLast.y += dx;
|
||||
|
||||
auto waterLowerAction = WaterLowerAction(
|
||||
{ gMapSelectPositionA.x, gMapSelectPositionA.y, gMapSelectPositionB.x, gMapSelectPositionB.y });
|
||||
GameActions::Execute(&waterLowerAction);
|
||||
gWaterToolRaiseCost = kMoney64Undefined;
|
||||
gWaterToolLowerCost = kMoney64Undefined;
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* rct2: 0x006E6BDC
|
||||
*/
|
||||
void ToolUpdateWater(const ScreenCoordsXY& screenPos)
|
||||
{
|
||||
MapInvalidateSelectionRect();
|
||||
|
||||
if (gCurrentToolId == Tool::UpDownArrow)
|
||||
{
|
||||
if (!(gMapSelectFlags & MAP_SELECT_FLAG_ENABLE))
|
||||
return;
|
||||
|
||||
auto waterLowerAction = WaterLowerAction(
|
||||
{ gMapSelectPositionA.x, gMapSelectPositionA.y, gMapSelectPositionB.x, gMapSelectPositionB.y });
|
||||
auto waterRaiseAction = WaterRaiseAction(
|
||||
{ gMapSelectPositionA.x, gMapSelectPositionA.y, gMapSelectPositionB.x, gMapSelectPositionB.y });
|
||||
|
||||
auto res = GameActions::Query(&waterLowerAction);
|
||||
money64 lowerCost = res.Error == GameActions::Status::Ok ? res.Cost : kMoney64Undefined;
|
||||
|
||||
res = GameActions::Query(&waterRaiseAction);
|
||||
money64 raiseCost = res.Error == GameActions::Status::Ok ? res.Cost : kMoney64Undefined;
|
||||
|
||||
if (gWaterToolRaiseCost != raiseCost || gWaterToolLowerCost != lowerCost)
|
||||
{
|
||||
gWaterToolRaiseCost = raiseCost;
|
||||
gWaterToolLowerCost = lowerCost;
|
||||
WindowInvalidateByClass(WindowClass::Water);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
gMapSelectFlags &= ~MAP_SELECT_FLAG_ENABLE;
|
||||
|
||||
auto info = GetMapCoordinatesFromPos(
|
||||
screenPos, EnumsToFlags(ViewportInteractionItem::Terrain, ViewportInteractionItem::Water));
|
||||
|
||||
if (info.SpriteType == ViewportInteractionItem::None)
|
||||
{
|
||||
if (gWaterToolRaiseCost != kMoney64Undefined || gWaterToolLowerCost != kMoney64Undefined)
|
||||
{
|
||||
gWaterToolRaiseCost = kMoney64Undefined;
|
||||
gWaterToolLowerCost = kMoney64Undefined;
|
||||
WindowInvalidateByClass(WindowClass::Water);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
auto mapTile = info.Loc;
|
||||
|
||||
uint8_t state_changed = 0;
|
||||
|
||||
if (!(gMapSelectFlags & MAP_SELECT_FLAG_ENABLE))
|
||||
{
|
||||
gMapSelectFlags |= MAP_SELECT_FLAG_ENABLE;
|
||||
state_changed++;
|
||||
}
|
||||
|
||||
if (gMapSelectType != MAP_SELECT_TYPE_FULL_WATER)
|
||||
{
|
||||
gMapSelectType = MAP_SELECT_TYPE_FULL_WATER;
|
||||
state_changed++;
|
||||
}
|
||||
|
||||
uint16_t tool_size = std::max<uint16_t>(1, gLandToolSize);
|
||||
uint16_t tool_length = (tool_size - 1) * kCoordsXYStep;
|
||||
|
||||
// Move to tool bottom left
|
||||
mapTile.x -= tool_length / 2;
|
||||
mapTile.y -= tool_length / 2;
|
||||
|
||||
if (gMapSelectPositionA.x != mapTile.x)
|
||||
{
|
||||
gMapSelectPositionA.x = mapTile.x;
|
||||
state_changed++;
|
||||
}
|
||||
|
||||
if (gMapSelectPositionA.y != mapTile.y)
|
||||
{
|
||||
gMapSelectPositionA.y = mapTile.y;
|
||||
state_changed++;
|
||||
}
|
||||
|
||||
mapTile.x += tool_length;
|
||||
mapTile.y += tool_length;
|
||||
|
||||
if (gMapSelectPositionB.x != mapTile.x)
|
||||
{
|
||||
gMapSelectPositionB.x = mapTile.x;
|
||||
state_changed++;
|
||||
}
|
||||
|
||||
if (gMapSelectPositionB.y != mapTile.y)
|
||||
{
|
||||
gMapSelectPositionB.y = mapTile.y;
|
||||
state_changed++;
|
||||
}
|
||||
|
||||
MapInvalidateSelectionRect();
|
||||
if (!state_changed)
|
||||
return;
|
||||
|
||||
auto waterLowerAction = WaterLowerAction(
|
||||
{ gMapSelectPositionA.x, gMapSelectPositionA.y, gMapSelectPositionB.x, gMapSelectPositionB.y });
|
||||
auto waterRaiseAction = WaterRaiseAction(
|
||||
{ gMapSelectPositionA.x, gMapSelectPositionA.y, gMapSelectPositionB.x, gMapSelectPositionB.y });
|
||||
|
||||
auto res = GameActions::Query(&waterLowerAction);
|
||||
money64 lowerCost = res.Error == GameActions::Status::Ok ? res.Cost : kMoney64Undefined;
|
||||
|
||||
res = GameActions::Query(&waterRaiseAction);
|
||||
money64 raiseCost = res.Error == GameActions::Status::Ok ? res.Cost : kMoney64Undefined;
|
||||
|
||||
if (gWaterToolRaiseCost != raiseCost || gWaterToolLowerCost != lowerCost)
|
||||
{
|
||||
gWaterToolRaiseCost = raiseCost;
|
||||
gWaterToolLowerCost = lowerCost;
|
||||
WindowInvalidateByClass(WindowClass::Water);
|
||||
}
|
||||
}
|
||||
|
||||
void InputSize()
|
||||
{
|
||||
Formatter ft;
|
||||
@@ -195,4 +419,38 @@ static Widget _waterWidgets[] = {
|
||||
{
|
||||
return WindowFocusOrCreate<WaterWindow>(WindowClass::Water, ScreenCoordsXY(ContextGetWidth() - WW, 29), WW, WH, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* rct2: 0x0066D125
|
||||
*/
|
||||
bool WaterToolIsActive()
|
||||
{
|
||||
if (!(InputTestFlag(INPUT_FLAG_TOOL_ACTIVE)))
|
||||
return false;
|
||||
if (gCurrentToolWidget.window_classification != WindowClass::Water)
|
||||
return false;
|
||||
if (gCurrentToolWidget.widget_index != WIDX_BACKGROUND)
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* rct2: 0x0066CD9C
|
||||
*/
|
||||
void ToggleWaterWindow()
|
||||
{
|
||||
if (WaterToolIsActive())
|
||||
{
|
||||
ToolCancel();
|
||||
}
|
||||
else
|
||||
{
|
||||
ShowGridlines();
|
||||
auto* toolWindow = ContextOpenWindow(WindowClass::Water);
|
||||
ToolSet(*toolWindow, WIDX_BACKGROUND, Tool::WaterDown);
|
||||
InputSetFlag(INPUT_FLAG_6, true);
|
||||
}
|
||||
}
|
||||
} // namespace OpenRCT2::Ui::Windows
|
||||
|
||||
@@ -81,7 +81,10 @@ namespace OpenRCT2::Ui::Windows
|
||||
WindowBase* TitleOptionsOpen();
|
||||
WindowBase* TitleVersionOpen();
|
||||
WindowBase* ViewportOpen();
|
||||
|
||||
WindowBase* WaterOpen();
|
||||
void ToggleWaterWindow();
|
||||
|
||||
WindowBase* ViewClippingOpen();
|
||||
WindowBase* TransparencyOpen();
|
||||
WindowBase* AssetPacksOpen();
|
||||
|
||||
Reference in New Issue
Block a user