using System; using System.IO; using Lidgren.Network; using Robust.Shared.Interfaces.Network; using Robust.Shared.Interfaces.Serialization; using Robust.Shared.IoC; using Robust.Shared.Map; using Robust.Shared.Network; namespace Content.Shared { public abstract class SharedGameTicker { protected class MsgTickerJoinLobby : NetMessage { #region REQUIRED public const MsgGroups GROUP = MsgGroups.Command; public const string NAME = nameof(MsgTickerJoinLobby); public MsgTickerJoinLobby(INetChannel channel) : base(NAME, GROUP) { } #endregion public override void ReadFromBuffer(NetIncomingMessage buffer) { } public override void WriteToBuffer(NetOutgoingMessage buffer) { } } protected class MsgTickerJoinGame : NetMessage { #region REQUIRED public const MsgGroups GROUP = MsgGroups.Command; public const string NAME = nameof(MsgTickerJoinGame); public MsgTickerJoinGame(INetChannel channel) : base(NAME, GROUP) { } #endregion public override void ReadFromBuffer(NetIncomingMessage buffer) { } public override void WriteToBuffer(NetOutgoingMessage buffer) { } } protected class MsgTickerLobbyStatus : NetMessage { #region REQUIRED public const MsgGroups GROUP = MsgGroups.Command; public const string NAME = nameof(MsgTickerLobbyStatus); public MsgTickerLobbyStatus(INetChannel channel) : base(NAME, GROUP) { } #endregion public bool IsRoundStarted { get; set; } public bool YouAreReady { get; set; } // UTC. public DateTime StartTime { get; set; } public override void ReadFromBuffer(NetIncomingMessage buffer) { IsRoundStarted = buffer.ReadBoolean(); if (IsRoundStarted) { return; } YouAreReady = buffer.ReadBoolean(); StartTime = new DateTime(buffer.ReadInt64(), DateTimeKind.Utc); } public override void WriteToBuffer(NetOutgoingMessage buffer) { buffer.Write(IsRoundStarted); if (IsRoundStarted) { return; } buffer.Write(YouAreReady); buffer.Write(StartTime.Ticks); } } } }