예제 #1
0
        private async Task StartBattle(ProposedBattle bat)
        {
            var battle = new MatchMakerBattle(server, bat, PickMap(bat.QueueType));
            await server.AddBattle(battle);

            // also join in lobby
            foreach (var usr in bat.Players)
            {
                await server.ForceJoinBattle(usr.Name, battle);
            }

            if (!await battle.StartGame())
            {
                await server.RemoveBattle(battle);
            }
        }
예제 #2
0
        private async Task StartBattle(ProposedBattle bat)
        {
            await server.UserLogSay($"Match starting with players: {bat.Players.Select(x => x.Name).StringJoin()}.");

            var battle = new MatchMakerBattle(server, bat, PickMap(bat));
            await server.AddBattle(battle);

            // also join in lobby
            foreach (var usr in bat.Players)
            {
                await server.ForceJoinBattle(usr.Name, battle);
            }

            if (!await battle.StartGame())
            {
                await server.RemoveBattle(battle);
            }
        }
예제 #3
0
        private string PickMap(ProposedBattle bat)
        {
            var vetoer = new MatchMaker.MapVetoer {
                Server = server, Battle = bat
            };
            var           queue = bat.QueueType;
            List <string> candidates;

            if (DateTime.Now.Subtract(lastQueueUpdate).TotalSeconds > MapModChangePauseSeconds)
            {
                candidates = queue.Maps;
            }
            else
            {
                candidates = queue.SafeMaps;
            }
            return(candidates.Count == 0 ? "" : vetoer.SelectMap(candidates));
        }
예제 #4
0
        private async Task StartBattle(ProposedBattle bat)
        {
            var battle = new MatchMakerBattle(server, bat, PickMap(bat.QueueType));

            server.Battles[battle.BattleID] = battle;

            // also join in lobby
            await server.Broadcast(server.ConnectedUsers.Keys, new BattleAdded()
            {
                Header = battle.GetHeader()
            });

            foreach (var usr in bat.Players)
            {
                await server.ForceJoinBattle(usr.Name, battle);
            }

            if (!await battle.StartGame())
            {
                await server.RemoveBattle(battle);
            }
        }
        private async Task StartBattle(ProposedBattle bat)
        {
            var battle = new MatchMakerBattle(server, bat);
            server.Battles[battle.BattleID] = battle;

            // also join in lobby
            await server.Broadcast(server.ConnectedUsers.Keys, new BattleAdded() { Header = battle.GetHeader() });
            foreach (var usr in bat.Players) await server.ForceJoinBattle(usr.Name, battle);

            await battle.StartGame();
        }
        private async Task StartBattle(ProposedBattle bat)
        {
            var battleID = Interlocked.Increment(ref server.BattleCounter);

            var battle = new ServerBattle(server, true);
            battle.UpdateWith(new BattleHeader()
            {
                BattleID = battleID,
                Founder = "#MatchMaker_" + battleID,
                Engine = server.Engine,
                Game = server.Game,
                Title = "MatchMaker " + battleID,
                Mode = bat.Mode,
            });
            server.Battles[battleID] = battle;

            //foreach (var plr in bat.Players) battle.Users[plr.Name] = new UserBattleStatus(plr.Name, plr.LobbyUser) { IsSpectator = false, AllyNumber = 0, };

            // also join in lobby
            await server.Broadcast(server.ConnectedUsers.Keys, new BattleAdded() { Header = battle.GetHeader() });
            foreach (var usr in bat.Players) await server.ForceJoinBattle(usr.Name, battle);

            await battle.StartGame();
        }