using Mirror; using QSB.Messaging; using QSB.WorldSync; namespace QSB.AuthoritySync { /// /// always sent to host /// public class AuthQueueMessage : QSBEnumMessage { private uint NetId; public AuthQueueMessage(uint netId, AuthQueueAction action) { To = 0; NetId = netId; Value = action; } public override void Serialize(NetworkWriter writer) { base.Serialize(writer); writer.Write(NetId); } public override void Deserialize(NetworkReader reader) { base.Deserialize(reader); NetId = reader.ReadUInt(); } public override bool ShouldReceive => WorldObjectManager.AllObjectsReady; public override void OnReceiveLocal() => OnReceiveRemote(); public override void OnReceiveRemote() => NetworkServer.spawned[NetId].UpdateAuthQueue(From, Value); } public enum AuthQueueAction { /// /// add player to the queue /// Add, /// /// remove player from the queue /// Remove, /// /// add player to the queue and force them to the front /// Force } }