using QSB.Events; using QSB.Messaging; namespace QSB.ClientServerStateSync.Events { internal class ServerStateEvent : QSBEvent> { public override bool RequireWorldObjectsReady => false; public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBServerState, Handler); public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBServerState, Handler); private void Handler(ServerState state) => SendEvent(CreateMessage(state)); private EnumMessage CreateMessage(ServerState state) => new() { AboutId = LocalPlayerId, EnumValue = state }; public override void OnReceiveLocal(bool server, EnumMessage message) => OnReceiveRemote(server, message); public override void OnReceiveRemote(bool server, EnumMessage message) => ServerStateManager.Instance.ChangeServerState(message.EnumValue); } }