Вдвойне сломали панель накрутки

This commit is contained in:
Hero010h
2025-01-04 23:04:38 +03:00
parent e178961cd2
commit d51cab46ab
6 changed files with 58 additions and 50 deletions

View File

@@ -52,7 +52,7 @@ public sealed partial class HoursPanel : DefaultWindow
if (string.IsNullOrWhiteSpace(PlayerNameLine.Text)) if (string.IsNullOrWhiteSpace(PlayerNameLine.Text))
return; return;
owner.SendPlayerTimeRequest(new HoursPanelMessage(PlayerNameLine.Text, roles[RoleOption.SelectedId])); owner.SendPlayerTimeRequest(new HoursPanelMessageToServer(PlayerNameLine.Text, roles[RoleOption.SelectedId]));
} }
private void InitRoleList(Dictionary<int, string> roles) private void InitRoleList(Dictionary<int, string> roles)

View File

@@ -2,21 +2,27 @@ using Content.Shared._White.Administration;
namespace Content.Client._White.Administration; namespace Content.Client._White.Administration;
public sealed class HoursPanelSystem : SharedHoursPanelSystem public sealed class HoursPanelSystem : EntitySystem
{ {
public HoursPanel Panel { get; } private HoursPanel _panel;
public HoursPanelSystem(HoursPanel panel) public HoursPanelSystem(HoursPanel panel)
{ {
Panel = panel; _panel = panel;
} }
protected override void OnHoursPanelMessage(HoursPanelMessage message, EntitySessionEventArgs eventArgs) public override void Initialize()
{ {
if (message.Time != null) base.Initialize();
Panel.UpdateTime(message.Time);
SubscribeNetworkEvent<HoursPanelMessageToClient>(OnHoursPanelMessage);
} }
public void SendPlayerTimeRequest(HoursPanelMessage message) private void OnHoursPanelMessage(HoursPanelMessageToClient message, EntitySessionEventArgs eventArgs)
{
_panel.UpdateTime(message.Time);
}
public void SendPlayerTimeRequest(HoursPanelMessageToServer message)
{ {
RaiseNetworkEvent(message); RaiseNetworkEvent(message);
} }

View File

@@ -2,25 +2,38 @@ using Content.Shared._White.Administration;
using Robust.Server.Player; using Robust.Server.Player;
using Content.Server.Players.PlayTimeTracking; using Content.Server.Players.PlayTimeTracking;
namespace Content.Server._White.Administration; namespace Content.Server._White.Administration;
public sealed class HoursPanelSystem : SharedHoursPanelSystem public sealed class HoursPanelSystem : EntitySystem
{ {
[Dependency] private readonly IPlayerManager _playerManager = default!; [Dependency] private readonly IPlayerManager _playerManager = default!;
[Dependency] private readonly IPlayTimeTrackingManager _playTimeTracking = default!; [Dependency] private readonly IPlayTimeTrackingManager _playTimeTracking = default!;
protected override void OnHoursPanelMessage(HoursPanelMessage message, EntitySessionEventArgs eventArgs) public override void Initialize()
{ {
if (message.Time != null) base.Initialize();
return;
SubscribeNetworkEvent<HoursPanelMessageToServer>(OnHoursPanelMessage);
}
private void OnHoursPanelMessage(HoursPanelMessageToServer message, EntitySessionEventArgs eventArgs)
{
if (_playerManager.TryGetSessionByUsername(message.PlayerCKey, out var player)) if (_playerManager.TryGetSessionByUsername(message.PlayerCKey, out var player))
return; return;
if (player == null)
return;
TimeSpan timer;
if (message.Job == "Overall") if (message.Job == "Overall")
{ {
var timer = _playTimeTracking.GetOverallPlaytime(player!); timer = _playTimeTracking.GetOverallPlaytime(player!);
RaiseNetworkEvent(new HoursPanelMessage(message.PlayerCKey, message.Job, timer));
return;
} }
else
{
timer = _playTimeTracking.GetPlayTimeForTracker(player!, message.Job);
}
RaiseNetworkEvent(new HoursPanelMessageToClient(timer));
} }
} }

View File

@@ -1,17 +0,0 @@
using Robust.Shared.Serialization;
namespace Content.Shared._White.Administration;
[Serializable, NetSerializable]
public sealed class HoursPanelMessage : EntityEventArgs
{
public string PlayerCKey { get; }
public string Job { get; }
public TimeSpan? Time { get; }
public HoursPanelMessage(string playerCKey, string job, TimeSpan? time = null)
{
PlayerCKey = playerCKey;
Job = job;
Time = time;
}
}

View File

@@ -0,0 +1,24 @@
using Robust.Shared.Serialization;
namespace Content.Shared._White.Administration;
[Serializable, NetSerializable]
public sealed class HoursPanelMessageToServer : EntityEventArgs
{
public string PlayerCKey { get; }
public string Job { get; }
public HoursPanelMessageToServer(string playerCKey, string job)
{
PlayerCKey = playerCKey;
Job = job;
}
}
public sealed class HoursPanelMessageToClient : EntityEventArgs
{
public TimeSpan Time { get; }
public HoursPanelMessageToClient(TimeSpan time)
{
Time = time;
}
}

View File

@@ -1,18 +0,0 @@
using Robust.Shared.Network;
using Robust.Shared.Serialization;
namespace Content.Shared._White.Administration;
public abstract class SharedHoursPanelSystem : EntitySystem
{
public override void Initialize()
{
base.Initialize();
SubscribeNetworkEvent<HoursPanelMessage>(OnHoursPanelMessage);
}
protected virtual void OnHoursPanelMessage(HoursPanelMessage message, EntitySessionEventArgs eventArgs)
{
}
}