public async Task Process(OpenBattle openBattle) { if (!IsLoggedIn) { return; } if (MyBattle != null) { await Respond("You are already in a battle"); return; } openBattle.Header.Title = openBattle.Header.Title.Truncate(200); var battle = new ServerBattle(server, Name); battle.UpdateWith(openBattle.Header); server.Battles[battle.BattleID] = battle; await server.Broadcast(server.ConnectedUsers.Keys, new BattleAdded() { Header = battle.GetHeader() }); await Process(new JoinBattle() { BattleID = battle.BattleID, Password = openBattle.Header.Password, }); }
public async Task AddBattle(ServerBattle battle) { Battles[battle.BattleID] = battle; await Broadcast(ConnectedUsers.Keys, new BattleAdded() { Header = battle.GetHeader() }); }
public async Task Process(OpenBattle openBattle) { if (!IsLoggedIn) { return; } if (string.IsNullOrEmpty(openBattle.Header.Password) && User.BanVotes) { await Respond("Your rights have been restricted. You can only open passworded battles. Check your user page for details."); return; } if (MyBattle != null) { await Respond("You are already in a battle"); return; } if (openBattle.Header.Mode != null && !Enum.IsDefined(typeof(AutohostMode), openBattle.Header.Mode)) { await Respond("Incorrect battle type"); return; } openBattle.Header.Title = openBattle.Header.Title.Truncate(200); var battle = new ServerBattle(server, Name); battle.UpdateWith(openBattle.Header); server.Battles[battle.BattleID] = battle; await server.Broadcast(server.ConnectedUsers.Keys, new BattleAdded() { Header = battle.GetHeader() }); await Process(new JoinBattle() { BattleID = battle.BattleID, Password = openBattle.Header.Password, }); }
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(); }