You can no longer place unless you are in admin or sandbox.
This commit is contained in:
@@ -1,7 +1,11 @@
|
|||||||
|
using System;
|
||||||
|
|
||||||
namespace Content.Client.Sandbox
|
namespace Content.Client.Sandbox
|
||||||
{
|
{
|
||||||
public interface ISandboxManager
|
public interface ISandboxManager
|
||||||
{
|
{
|
||||||
void Initialize();
|
void Initialize();
|
||||||
|
bool SandboxAllowed { get; }
|
||||||
|
event Action<bool> AllowedChanged;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using Content.Client.UserInterface;
|
using System;
|
||||||
|
using Content.Client.UserInterface;
|
||||||
using Content.Shared.Input;
|
using Content.Shared.Input;
|
||||||
using Content.Shared.Sandbox;
|
using Content.Shared.Sandbox;
|
||||||
using Robust.Client.Interfaces.Input;
|
using Robust.Client.Interfaces.Input;
|
||||||
@@ -28,7 +29,10 @@ namespace Content.Client.Sandbox
|
|||||||
[Dependency] private readonly IInputManager _inputManager;
|
[Dependency] private readonly IInputManager _inputManager;
|
||||||
#pragma warning restore 649
|
#pragma warning restore 649
|
||||||
|
|
||||||
private bool _sandboxAllowed;
|
public bool SandboxAllowed { get; private set; }
|
||||||
|
|
||||||
|
public event Action<bool> AllowedChanged;
|
||||||
|
|
||||||
private SandboxWindow _window;
|
private SandboxWindow _window;
|
||||||
private EntitySpawnWindow _spawnWindow;
|
private EntitySpawnWindow _spawnWindow;
|
||||||
private TileSpawnWindow _tilesSpawnWindow;
|
private TileSpawnWindow _tilesSpawnWindow;
|
||||||
@@ -63,7 +67,7 @@ namespace Content.Client.Sandbox
|
|||||||
|
|
||||||
private void UpdateSandboxWindowVisibility()
|
private void UpdateSandboxWindowVisibility()
|
||||||
{
|
{
|
||||||
if (_sandboxWindowToggled && _sandboxAllowed)
|
if (_sandboxWindowToggled && SandboxAllowed)
|
||||||
OpenWindow();
|
OpenWindow();
|
||||||
else
|
else
|
||||||
_window?.Close();
|
_window?.Close();
|
||||||
@@ -71,12 +75,12 @@ namespace Content.Client.Sandbox
|
|||||||
|
|
||||||
private void SetAllowed(bool newAllowed)
|
private void SetAllowed(bool newAllowed)
|
||||||
{
|
{
|
||||||
if (newAllowed == _sandboxAllowed)
|
if (newAllowed == SandboxAllowed)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
_sandboxAllowed = newAllowed;
|
SandboxAllowed = newAllowed;
|
||||||
_gameHud.SandboxButtonVisible = newAllowed;
|
_gameHud.SandboxButtonVisible = newAllowed;
|
||||||
|
|
||||||
if (!newAllowed)
|
if (!newAllowed)
|
||||||
@@ -84,6 +88,8 @@ namespace Content.Client.Sandbox
|
|||||||
// Sandbox permission revoked, close window.
|
// Sandbox permission revoked, close window.
|
||||||
_window?.Close();
|
_window?.Close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
AllowedChanged?.Invoke(newAllowed);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OpenWindow()
|
private void OpenWindow()
|
||||||
|
|||||||
@@ -1,10 +1,12 @@
|
|||||||
using Robust.Client.Console;
|
using Content.Client.Sandbox;
|
||||||
|
using Robust.Client.Console;
|
||||||
using Robust.Client.Interfaces.Placement;
|
using Robust.Client.Interfaces.Placement;
|
||||||
using Robust.Client.Interfaces.ResourceManagement;
|
using Robust.Client.Interfaces.ResourceManagement;
|
||||||
using Robust.Client.UserInterface.Controls;
|
using Robust.Client.UserInterface.Controls;
|
||||||
using Robust.Client.UserInterface.CustomControls;
|
using Robust.Client.UserInterface.CustomControls;
|
||||||
using Robust.Shared.Interfaces.Configuration;
|
using Robust.Shared.Interfaces.Configuration;
|
||||||
using Robust.Shared.Interfaces.Map;
|
using Robust.Shared.Interfaces.Map;
|
||||||
|
using Robust.Shared.IoC;
|
||||||
using Robust.Shared.Localization;
|
using Robust.Shared.Localization;
|
||||||
using Robust.Shared.Prototypes;
|
using Robust.Shared.Prototypes;
|
||||||
|
|
||||||
@@ -19,6 +21,8 @@ namespace Content.Client.UserInterface
|
|||||||
private readonly IResourceCache _resourceCache;
|
private readonly IResourceCache _resourceCache;
|
||||||
private readonly IConfigurationManager _configSystem;
|
private readonly IConfigurationManager _configSystem;
|
||||||
private readonly ILocalizationManager _localizationManager;
|
private readonly ILocalizationManager _localizationManager;
|
||||||
|
[Dependency] private readonly ISandboxManager _sandboxManager;
|
||||||
|
[Dependency] private readonly IClientConGroupController _conGroupController;
|
||||||
|
|
||||||
private BaseButton QuitButton;
|
private BaseButton QuitButton;
|
||||||
private BaseButton OptionsButton;
|
private BaseButton OptionsButton;
|
||||||
@@ -41,7 +45,14 @@ namespace Content.Client.UserInterface
|
|||||||
_prototypeManager = prototypeManager;
|
_prototypeManager = prototypeManager;
|
||||||
_resourceCache = resourceCache;
|
_resourceCache = resourceCache;
|
||||||
|
|
||||||
|
IoCManager.InjectDependencies(this);
|
||||||
|
|
||||||
|
_sandboxManager.AllowedChanged += AllowedChanged;
|
||||||
|
_conGroupController.ConGroupUpdated += UpdateSpawnButtonStates;
|
||||||
|
|
||||||
PerformLayout();
|
PerformLayout();
|
||||||
|
|
||||||
|
UpdateSpawnButtonStates();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void PerformLayout()
|
private void PerformLayout()
|
||||||
@@ -88,7 +99,8 @@ namespace Content.Client.UserInterface
|
|||||||
|
|
||||||
private void OnSpawnEntitiesButtonClicked(BaseButton.ButtonEventArgs args)
|
private void OnSpawnEntitiesButtonClicked(BaseButton.ButtonEventArgs args)
|
||||||
{
|
{
|
||||||
var window = new EntitySpawnWindow(_placementManager, _prototypeManager, _resourceCache, _localizationManager);
|
var window = new EntitySpawnWindow(_placementManager, _prototypeManager, _resourceCache,
|
||||||
|
_localizationManager);
|
||||||
window.OpenToLeft();
|
window.OpenToLeft();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -98,6 +110,20 @@ namespace Content.Client.UserInterface
|
|||||||
window.OpenToLeft();
|
window.OpenToLeft();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void UpdateSpawnButtonStates()
|
||||||
|
{
|
||||||
|
if (_conGroupController.CanAdminPlace() || _sandboxManager.SandboxAllowed)
|
||||||
|
{
|
||||||
|
SpawnEntitiesButton.Disabled = false;
|
||||||
|
SpawnTilesButton.Disabled = false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SpawnEntitiesButton.Disabled = true;
|
||||||
|
SpawnTilesButton.Disabled = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protected override void Dispose(bool disposing)
|
protected override void Dispose(bool disposing)
|
||||||
{
|
{
|
||||||
base.Dispose(disposing);
|
base.Dispose(disposing);
|
||||||
@@ -106,5 +132,15 @@ namespace Content.Client.UserInterface
|
|||||||
optionsMenu.Dispose();
|
optionsMenu.Dispose();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override void Close()
|
||||||
|
{
|
||||||
|
base.Close();
|
||||||
|
|
||||||
|
_sandboxManager.AllowedChanged -= AllowedChanged;
|
||||||
|
_conGroupController.ConGroupUpdated -= UpdateSpawnButtonStates;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void AllowedChanged(bool newAllowed) => UpdateSpawnButtonStates();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
using Content.Server.GameTicking;
|
using Content.Server.GameTicking;
|
||||||
using Content.Server.Interfaces.GameTicking;
|
using Content.Server.Interfaces.GameTicking;
|
||||||
using Content.Shared.Sandbox;
|
using Content.Shared.Sandbox;
|
||||||
|
using Robust.Server.Console;
|
||||||
|
using Robust.Server.Interfaces.Placement;
|
||||||
using Robust.Server.Interfaces.Player;
|
using Robust.Server.Interfaces.Player;
|
||||||
using Robust.Server.Player;
|
using Robust.Server.Player;
|
||||||
using Robust.Shared.Enums;
|
using Robust.Shared.Enums;
|
||||||
@@ -15,6 +17,8 @@ namespace Content.Server.Sandbox
|
|||||||
[Dependency] private readonly IPlayerManager _playerManager;
|
[Dependency] private readonly IPlayerManager _playerManager;
|
||||||
[Dependency] private readonly IServerNetManager _netManager;
|
[Dependency] private readonly IServerNetManager _netManager;
|
||||||
[Dependency] private readonly IGameTicker _gameTicker;
|
[Dependency] private readonly IGameTicker _gameTicker;
|
||||||
|
[Dependency] private readonly IPlacementManager _placementManager;
|
||||||
|
[Dependency] private readonly IConGroupController _conGroupController;
|
||||||
#pragma warning restore 649
|
#pragma warning restore 649
|
||||||
|
|
||||||
private bool _isSandboxEnabled;
|
private bool _isSandboxEnabled;
|
||||||
@@ -36,6 +40,24 @@ namespace Content.Server.Sandbox
|
|||||||
|
|
||||||
_playerManager.PlayerStatusChanged += OnPlayerStatusChanged;
|
_playerManager.PlayerStatusChanged += OnPlayerStatusChanged;
|
||||||
_gameTicker.OnRunLevelChanged += GameTickerOnOnRunLevelChanged;
|
_gameTicker.OnRunLevelChanged += GameTickerOnOnRunLevelChanged;
|
||||||
|
|
||||||
|
_placementManager.AllowPlacementFunc = placement =>
|
||||||
|
{
|
||||||
|
if (IsSandboxEnabled)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
var channel = placement.MsgChannel;
|
||||||
|
var player = _playerManager.GetSessionByChannel(channel);
|
||||||
|
|
||||||
|
if (_conGroupController.CanAdminPlace(player))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
private void GameTickerOnOnRunLevelChanged(GameRunLevelChangedEventArgs obj)
|
private void GameTickerOnOnRunLevelChanged(GameRunLevelChangedEventArgs obj)
|
||||||
|
|||||||
@@ -53,3 +53,4 @@
|
|||||||
- rejuvenate
|
- rejuvenate
|
||||||
- addcomp
|
- addcomp
|
||||||
CanViewVar: true
|
CanViewVar: true
|
||||||
|
CanAdminPlace: true
|
||||||
|
|||||||
Reference in New Issue
Block a user