Example #1
0
 public HostingStateChangedEventArgs(HostingStates previousState, HostingStates state)
 {
     PreviousState = previousState;
     State = state;
 }
Example #2
0
 public HostGun(string portName)
 {
     HostingState = HostingStates.Idle;
     Protocol = new LazerTagProtocol(this, portName);
 }
Example #3
0
        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;
        }