コード例 #1
0
        protected void Process()
        {
            try
            {
                DateTime start;

                while (true)
                {
                    start = DateTime.Now;

                    EmpyrionStatePacket currentState = this.GetCurrentState();
                    if (!this.State.Equals(currentState))
                    {
                        this.State = currentState;
                        EmpyrionExtension.Instance.NetworkServerHost.Server.Broadcast(this.State);
                    }
                }
            }
            catch (ThreadAbortException)
            {
            }
            catch (Exception ex)
            {
                Log.Warn($"An unexpected error occurred in the game state processor. {ex.Message}");
            }
        }
コード例 #2
0
        public EmpyrionStatePacket GetCurrentState()
        {
            EmpyrionStatePacket state = new EmpyrionStatePacket();

            state.State               = this.GetTranslatedGameState();
            state.Mode                = this.GetTranslatedApplicationMode();
            state.LocalPlayerName     = EmpyrionExtension.Application?.LocalPlayer?.Name;
            state.ClientPlayfieldName = EmpyrionExtension.EmpyrionApi?.ClientPlayfield?.Name;
            return(state);
        }
コード例 #3
0
        protected override void OnPacketReceived(Packet packet)
        {
            base.OnPacketReceived(packet);

            EmpyrionStatePacket newState = packet as EmpyrionStatePacket;

            if (newState == null)
            {
                return;
            }

            this.State               = newState.State;
            this.Mode                = newState.Mode;
            this.LocalPlayerName     = newState.LocalPlayerName;
            this.ClientPlayfieldName = newState.ClientPlayfieldName;

            this.TriggerUpdate();
        }