mirror of
https://github.com/space-syndicate/space-station-14.git
synced 2026-10-19 07:01:09 +03:00
95 lines
3.6 KiB
C#
95 lines
3.6 KiB
C#
using System.Globalization;
|
|
using Content.Shared.CCVar;
|
|
using Robust.Client.AutoGenerated;
|
|
using Robust.Client.Console;
|
|
using Robust.Client.UserInterface;
|
|
using Robust.Client.UserInterface.XAML;
|
|
using Robust.Shared.Configuration;
|
|
|
|
namespace Content.Client.Administration.UI.Tabs
|
|
{
|
|
[GenerateTypedNameReferences]
|
|
public sealed partial class ServerTab : Control
|
|
{
|
|
[Dependency] private IConfigurationManager _config = default!;
|
|
[Dependency] private IClientConsoleHost _console = default!;
|
|
|
|
public ServerTab()
|
|
{
|
|
RobustXamlLoader.Load(this);
|
|
IoCManager.InjectDependencies(this);
|
|
|
|
_config.OnValueChanged(CCVars.OocEnabled, OocEnabledChanged, true);
|
|
_config.OnValueChanged(CCVars.LoocEnabled, LoocEnabledChanged, true);
|
|
_config.OnValueChanged(CCVars.DeadChatEnabled, DeadChatEnabledChanged, true);
|
|
_config.OnValueChanged(CCVars.AfkTime, AfkTimeChanged, true);
|
|
_config.OnValueChanged(CCVars.AdminAfkTime, AdminAfkTimeChanged, true);
|
|
_config.OnValueChanged(CCVars.AfkConfirmTimeout, AfkConfirmTimeoutChanged, true);
|
|
|
|
ServerShutdownButton.OnPressed += _ => _console.ExecuteCommand("shutdown");
|
|
|
|
AfkTime.OnTextEntered += args => SendFloatCVar(CCVars.AfkTime.Name, args.Text);
|
|
AfkTime.OnFocusExit += args => SendFloatCVar(CCVars.AfkTime.Name, args.Text);
|
|
AdminAfkTime.OnTextEntered += args => SendFloatCVar(CCVars.AdminAfkTime.Name, args.Text);
|
|
AdminAfkTime.OnFocusExit += args => SendFloatCVar(CCVars.AdminAfkTime.Name, args.Text);
|
|
AfkConfirmTimeout.OnTextEntered += args => SendFloatCVar(CCVars.AfkConfirmTimeout.Name, args.Text);
|
|
AfkConfirmTimeout.OnFocusExit += args => SendFloatCVar(CCVars.AfkConfirmTimeout.Name, args.Text);
|
|
}
|
|
|
|
private void SendFloatCVar(string cvar, string text)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(text) ||
|
|
!float.TryParse(text, CultureInfo.InvariantCulture, out var value) ||
|
|
value < 0f)
|
|
{
|
|
return;
|
|
}
|
|
|
|
_console.ExecuteCommand($"changecvar {cvar} {value.ToString(CultureInfo.InvariantCulture)}");
|
|
}
|
|
|
|
private void OocEnabledChanged(bool value)
|
|
{
|
|
SetOocButton.Pressed = value;
|
|
}
|
|
|
|
private void LoocEnabledChanged(bool value)
|
|
{
|
|
SetLoocButton.Pressed = value;
|
|
}
|
|
|
|
private void DeadChatEnabledChanged(bool value)
|
|
{
|
|
SetDeadChatButton.Pressed = value;
|
|
}
|
|
|
|
private void AfkTimeChanged(float value)
|
|
{
|
|
AfkTime.PlaceHolder = value.ToString(CultureInfo.InvariantCulture);
|
|
}
|
|
|
|
private void AdminAfkTimeChanged(float value)
|
|
{
|
|
AdminAfkTime.PlaceHolder = value.ToString(CultureInfo.InvariantCulture);
|
|
}
|
|
|
|
private void AfkConfirmTimeoutChanged(float value)
|
|
{
|
|
AfkConfirmTimeout.PlaceHolder = value.ToString(CultureInfo.InvariantCulture);
|
|
}
|
|
|
|
protected override void Dispose(bool disposing)
|
|
{
|
|
base.Dispose(disposing);
|
|
|
|
if (disposing)
|
|
{
|
|
_config.UnsubValueChanged(CCVars.OocEnabled, OocEnabledChanged);
|
|
_config.UnsubValueChanged(CCVars.LoocEnabled, LoocEnabledChanged);
|
|
_config.UnsubValueChanged(CCVars.AfkTime, AfkTimeChanged);
|
|
_config.UnsubValueChanged(CCVars.AdminAfkTime, AdminAfkTimeChanged);
|
|
_config.UnsubValueChanged(CCVars.AfkConfirmTimeout, AfkConfirmTimeoutChanged);
|
|
}
|
|
}
|
|
}
|
|
}
|