1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2025-12-30 11:13:03 +01:00

Close #25515: create a specific permission for the path drag tool (#25675)

This commit is contained in:
Michael Steenbeek
2025-12-21 12:49:17 +01:00
committed by GitHub
parent 8492d408de
commit fcd16cb00a
6 changed files with 24 additions and 1 deletions

View File

@@ -3841,4 +3841,5 @@ STR_7008 :Unknown ride type ({INT32})
STR_7009 :Receiving scripts…
STR_7010 :Could not start replay, file {STRING} doesnt exist or isnt valid
STR_7011 :Could not start replay
STR_7012 :Polish Złoty (PLN)
STR_7012 :Polish Złoty (PLN)
STR_7013 :Drag areas of path

View File

@@ -1,6 +1,7 @@
0.4.30 (in development)
------------------------------------------------------------------------
- Improved: [#24912] Staff now use an appropriate standing animation while waiting at level crossings.
- Improved: [#25515] Path dragging can now be disabled via multiplayer group permissions.
- Improved: [#25529] The map selection grid no longer redraws every frame if it has not changed.
- Improved: [#25530] Wall dragging can now be cancelled without closing the Scenery window.
- Improved: [#25575] Updated the network protocol to a new format that supports larger packets, allowing clients to connect reliably to servers with many objects or large maps.

View File

@@ -29,6 +29,7 @@
#include <openrct2/audio/Audio.h>
#include <openrct2/core/FlagHolder.hpp>
#include <openrct2/localisation/Formatter.h>
#include <openrct2/network/NetworkAction.h>
#include <openrct2/object/FootpathObject.h>
#include <openrct2/object/FootpathRailingsObject.h>
#include <openrct2/object/FootpathSurfaceObject.h>
@@ -532,6 +533,18 @@ namespace OpenRCT2::Ui::Windows
? WidgetType::imgBtn
: WidgetType::empty;
#ifndef DISABLE_NETWORK
bool canDrag = true;
if (Network::GetMode() == Network::Mode::client)
{
canDrag = Network::CanPerformAction(Network::GetCurrentPlayerGroupIndex(), Network::Permission::dragPathArea);
}
if (canDrag)
disabledWidgets &= ~(1uLL << WIDX_CONSTRUCT_DRAG_AREA);
else
disabledWidgets |= (1uLL << WIDX_CONSTRUCT_DRAG_AREA);
#endif
if (gFootpathSelection.LegacyPath == kObjectEntryIndexNull)
{
widgets[WIDX_RAILINGS_TYPE].type = WidgetType::flatBtn;

View File

@@ -1762,6 +1762,8 @@ enum : StringId
STR_REPLAY_FILE_NOT_FOUND = 7010,
STR_REPLAY_NOT_STARTED = 7011,
STR_ACTION_PATH_DRAG_AREA = 7013,
// Have to include resource strings (from scenarios and objects) for the time being now that language is partially working
/* MAX_STR_COUNT = 32768 */ // MAX_STR_COUNT - upper limit for number of strings, not the current count strings
};

View File

@@ -266,6 +266,11 @@ namespace OpenRCT2::Network
GameCommand::EditScenarioOptions,
},
},
NetworkAction{
STR_ACTION_PATH_DRAG_AREA,
"PERMISSION_DRAG_PATH_AREA",
{},
},
};
} // namespace OpenRCT2::Network

View File

@@ -43,6 +43,7 @@ namespace OpenRCT2::Network
passwordlessLogin,
modifyTile,
editScenarioOptions,
dragPathArea,
count,
};