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}"); } }
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); }
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(); }