public HostingStateChangedEventArgs(HostingStates previousState, HostingStates state) { PreviousState = previousState; State = state; }
public HostGun(string portName) { HostingState = HostingStates.Idle; Protocol = new LazerTagProtocol(this, portName); }
private bool ChangeState(HostingStates state) { var previousState = HostingState; switch (state) { case HostingStates.Idle: _players.Clear(); break; case HostingStates.Countdown: if (previousState != HostingStates.Adding) return false; Log.Add(Log.Severity.Information, "Starting countdown"); _stateChangeTimeout = DateTime.Now.AddSeconds(_gameDefinition.CountdownTimeSeconds); break; case HostingStates.ResendCountdown: if (previousState != HostingStates.Playing) return false; Log.Add(Log.Severity.Information, "Resending countdown"); _resendCountdownPlayingStateChangeTimeout = _stateChangeTimeout; _stateChangeTimeout = DateTime.Now.AddSeconds(_gameDefinition.ResendCountdownTimeSeconds); break; case HostingStates.Adding: Log.Add(Log.Severity.Information, "Adding players"); if (previousState != HostingStates.AcknowledgePlayerAssignment) { Teams.Clear(); var teamCount = _gameDefinition.IsTeamGame ? _gameDefinition.TeamCount : 3; for (var teamNumber = 1; teamNumber <= teamCount; teamNumber++) { Teams.Add(new Team(teamNumber)); } _joinStates.Clear(); } break; case HostingStates.AcknowledgePlayerAssignment: Log.Add(Log.Severity.Debug, "Waiting for AcknowledgePlayerAssignment packet."); _stateChangeTimeout = DateTime.Now.AddSeconds(AcknowledgePlayerAssignmentTimeoutSeconds); break; case HostingStates.Playing: switch (previousState) { case HostingStates.Countdown: Log.Add(Log.Severity.Information, "Starting Game"); _stateChangeTimeout = DateTime.Now.AddMinutes(_gameDefinition.GameTimeMinutes); break; case HostingStates.ResendCountdown: Log.Add(Log.Severity.Information, "Continuing Game"); _stateChangeTimeout = _resendCountdownPlayingStateChangeTimeout; break; } break; case HostingStates.Summary: Log.Add(Log.Severity.Information, "Debriefing"); break; case HostingStates.GameOver: Log.Add(Log.Severity.Information, "Debriefing completed"); _rankReportTeamNumber = 1; break; default: return false; } HostingState = state; _nextAnnouncement = DateTime.Now; OnHostingStateChanged(new HostingStateChangedEventArgs(previousState, state)); return true; }