Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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");
                }
            }
        }