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); } }
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); } }
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)); }
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(); }