From dcbdc93bbd79020e4f8c8a728d8ad05683a42bd4 Mon Sep 17 00:00:00 2001 From: Hipposgrumm Date: Fri, 5 Dec 2025 19:12:34 -0700 Subject: [PATCH] Added command handler for room elapsed time. --- src/CommandHandlers/ElapsedTimeSyncHandler.cs | 20 +++++++++++++++++++ src/Core/Room.cs | 3 +++ 2 files changed, 23 insertions(+) create mode 100644 src/CommandHandlers/ElapsedTimeSyncHandler.cs diff --git a/src/CommandHandlers/ElapsedTimeSyncHandler.cs b/src/CommandHandlers/ElapsedTimeSyncHandler.cs new file mode 100644 index 0000000..04f485b --- /dev/null +++ b/src/CommandHandlers/ElapsedTimeSyncHandler.cs @@ -0,0 +1,20 @@ +using sodoffmmo.Attributes; +using sodoffmmo.Core; +using sodoffmmo.Data; + +namespace sodoffmmo.CommandHandlers; + +[ExtensionCommandHandler("RTM")] +class ElapsedTimeSyncHandler : CommandHandler { + public override Task Handle(Client client, NetworkObject receivedObject) { + if (client.Room != null) { + NetworkObject cmd = new(); + NetworkObject obj = new(); + obj.Add("arr", new string[] { "RTM", "-1", client.Room.ElapsedTime.ElapsedMilliseconds.ToString() }); + cmd.Add("c", "RTM"); + cmd.Add("p", obj); + client.Send(NetworkObject.WrapObject(1, 13, cmd).Serialize()); + } + return Task.CompletedTask; + } +} \ No newline at end of file diff --git a/src/Core/Room.cs b/src/Core/Room.cs index 5e59735..4d37e24 100644 --- a/src/Core/Room.cs +++ b/src/Core/Room.cs @@ -1,4 +1,5 @@ using System; +using System.Diagnostics; using sodoffmmo.Data; namespace sodoffmmo.Core; @@ -18,6 +19,7 @@ public class Room { public bool AllowChatOverride { get; set; } = false; public NetworkArray RoomVariables = new(); + public readonly Stopwatch ElapsedTime = new Stopwatch(); public Room(string? name, string? group = null, bool autoRemove = false) { Id = ++MaxId; @@ -33,6 +35,7 @@ public class Room { } AutoRemove = autoRemove; rooms.Add(Name, this); + ElapsedTime.Start(); } public int ClientsCount => clients.Count;