public async Task <bool> Execute() { if (m_Context.LoggedInPlayers.Count() >= Settings.MIN_PLAYERS && !m_MinPlayersReached) { await Task.Delay(10); //allow last message to be sent Console.WriteLine("WaitingForPlayers: Required player count reached."); //reset game GameInfo.IntermissionTime = 0; GameInfo.IsGameOver = true; //wait for game to reset await Task.Delay(10); m_Warden.Start(); Chat.SendMessage("---------------------------------------------------"); Chat.SendMessage(" Required player count reached."); Chat.SendMessage(" Game will start in 10 seconds."); Chat.SendMessage("---------------------------------------------------"); m_MinPlayersReached = true; m_MinPlayersReachedTime = DateTime.UtcNow; } if (m_Context.LoggedInPlayers.Count < Settings.MIN_PLAYERS && m_MinPlayersReached) { Console.WriteLine("WaitingForPlayers: Not enough players. Aborting game."); Chat.SendMessage(">> Not enough players. Aborting game."); m_Warden.Stop(); m_MinPlayersReached = false; m_MinPlayersReachedTime = DateTime.MaxValue; } if (m_MinPlayersReached && DateTime.UtcNow >= m_MinPlayersReachedTime + new TimeSpan(0, 0, 10)) { Chat.SendMessage("---------------------------------------------------"); Chat.SendMessage(" Game Starting"); Chat.SendMessage("---------------------------------------------------"); return(true); } return(false); }
public async Task OnEnter() { Console.WriteLine("EndGame - OnEnter"); int redScore = GameInfo.RedScore; int blueScore = GameInfo.BlueScore; var redTeam = m_Context.LoggedInPlayers .Where(x => x.Team == HQMTeam.Red) .Select(x => x.Name); var blueTeam = m_Context.LoggedInPlayers .Where(x => x.Team == HQMTeam.Blue) .Select(x => x.Name); List <GameDto.PlayerStatLine> stats = CreateStatLines(redTeam, blueTeam); GameDto report = new GameDto() { RedScore = redScore, BlueScore = blueScore, WinningTeam = redScore > blueScore ? "Red" : "Blue", PlayerStats = stats, Date = DateTime.UtcNow }; Chat.SendMessage(">> Game over. Stats have been Recorded."); m_Warden.Stop(); if (!await RemoteApi.SendGameResult(report)) { await RemoteApi.GetToken(); if (!await RemoteApi.SendGameResult(report)) { Console.WriteLine("Could not post game result"); } } }