Правки

This commit is contained in:
Hero010h
2025-01-01 05:24:09 +03:00
parent 6a4ffdc80d
commit d0191a7bc1
2 changed files with 0 additions and 1 deletions

View File

@@ -0,0 +1,21 @@
<DefaultWindow
xmlns="https://spacestation14.io"
xmlns:cc="clr-namespace:Content.Client.Administration.UI.CustomControls"
Title="Накрутка времени" MinSize="300 300">
<BoxContainer Orientation="Vertical">
<BoxContainer Orientation="Horizontal">
<Label Text="Игрок" MinWidth="100" />
<Control MinWidth="50" />
<LineEdit Name="PlayerNameLine" MinWidth="100" HorizontalExpand="True" />
</BoxContainer>
<BoxContainer Orientation="Horizontal">
<Label Text="Время" MinWidth="100" />
<Control MinWidth="50" />
<LineEdit Name="MinutesLine" MinWidth="100" HorizontalExpand="True" PlaceHolder="минуты" />
<Button Name="HourButton" Text="+1h (0)"/>
</BoxContainer>
<OptionButton Name="RoleOption" />
<cc:PlayerListControl Name="PlayerList" VerticalExpand="True" MinWidth="200"/>
<Button Name="SubmitButton" Text="Добавить время" />
</BoxContainer>
</DefaultWindow>

View File

@@ -0,0 +1,103 @@
using System.Linq;
using Content.Client.Administration.UI.CustomControls;
using Content.Shared.Administration;
using Content.Shared.Roles;
using JetBrains.Annotations;
using Robust.Client.AutoGenerated;
using Robust.Client.Console;
using Robust.Client.UserInterface.Controls;
using Robust.Client.UserInterface.CustomControls;
using Robust.Client.UserInterface.XAML;
using Robust.Shared.Utility;
using Robust.Client.Graphics;
using Robust.Client.UserInterface;
using Robust.Shared.Prototypes;
using static Robust.Client.UserInterface.Controls.LineEdit;
using Content.Shared.Players.PlayTimeTracking;
using System.Runtime.CompilerServices;
namespace Content.Client.Administration.UI.Tabs.AdminTab;
[GenerateTypedNameReferences]
[UsedImplicitly]
public sealed partial class HoursPanel : DefaultWindow
{
public HoursPanel()
{
RobustXamlLoader.Load(this);
var roles = new Dictionary<int, string>();
PlayerNameLine.OnTextChanged += _ => OnNamesChanged();
PlayerList.OnSelectionChanged += OnPlayerSelectionChanged;
HourButton.OnPressed += _ => AddMinutes(60);
MinutesLine.OnTextChanged += UpdateButtonsText;
RoleOption.OnItemSelected += args => RoleOption.SelectId(args.Id);
SubmitButton.OnPressed += _ => OnSubmitButtonOnPressed(roles);
OnNamesChanged();
InitRoleList(roles);
}
private void InitRoleList(Dictionary<int, string> Roles)
{
var roleInd = 0;
RoleOption.AddItem("общее", roleInd);
Roles.Add(roleInd, "Overall");
roleInd++;
foreach (var dep in IoCManager.Resolve<IPrototypeManager>().EnumeratePrototypes<DepartmentPrototype>())
{
foreach (var role in dep.Roles)
{
RoleOption.AddItem(Loc.GetString($"Job{role.Id}"), roleInd);
Roles.Add(roleInd, $"Job{role.Id}");
roleInd++;
}
}
RoleOption.SelectId(0);
}
private bool TryGetMinutes(string str, out uint minutes)
{
minutes = 0;
return !string.IsNullOrWhiteSpace(str) && uint.TryParse(str, out minutes);
}
private void AddMinutes(uint add)
{
OnNamesChanged();
if (!TryGetMinutes(MinutesLine.Text, out var minutes))
minutes = 0;
MinutesLine.Text = $"{minutes + add}";
UpdateButtons(minutes + add);
}
private void UpdateButtonsText(LineEditEventArgs obj)
{
OnNamesChanged();
if (!TryGetMinutes(obj.Text, out var minutes))
return;
UpdateButtons(minutes);
}
private void UpdateButtons(uint minutes)
{
HourButton.Text = $"+1h ({minutes / 60})";
}
private void OnNamesChanged()
{
SubmitButton.Disabled = string.IsNullOrEmpty(PlayerNameLine.Text) || !TryGetMinutes(MinutesLine.Text, out _);
}
private void OnPlayerSelectionChanged(PlayerInfo? player)
{
PlayerNameLine.Text = player?.Username ?? string.Empty;
OnNamesChanged();
}
private void OnSubmitButtonOnPressed(Dictionary<int, string> roles)
{
IoCManager.Resolve<IClientConsoleHost>().ExecuteCommand(
$"playtime_addrole {PlayerNameLine.Text} {roles[RoleOption.SelectedId]} {MinutesLine.Text}");
}
}