public async Task ProcessInviteToParty(ConnectedUser usr, InviteToParty msg) { ConnectedUser target; if (server.ConnectedUsers.TryGetValue(msg.UserName, out target)) { if (target.Ignores.Contains(usr.Name)) { return; } var myParty = GetParty(usr.Name); var targetParty = GetParty(target.Name); if ((myParty != null) && (myParty == targetParty)) { return; } // if i dont have battle but target has, join him if (myParty == null && usr.MyBattle == null && target.MyBattle != null && !target.MyBattle.IsPassworded) { await server.ForceJoinBattle(usr.Name, target.MyBattle); } RemoveOldInvites(); var partyInvite = partyInvites.FirstOrDefault(x => (x.Inviter == usr.Name) && (x.Invitee == target.Name)); if (partyInvite == null) { partyInvite = new PartyInvite() { PartyID = myParty?.PartyID ?? Interlocked.Increment(ref partyCounter), Inviter = usr.Name, Invitee = target.Name }; partyInvites.Add(partyInvite); } await target.SendCommand(new OnPartyInvite() { PartyID = partyInvite.PartyID, UserNames = myParty?.UserNames?.ToList() ?? new List <string>() { usr.Name }, TimeoutSeconds = inviteTimeoutSeconds }); } }
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); } }
public async Task Process(ForceJoinBattle forceJoin) { if (!IsLoggedIn) { return; } if (!User.IsAdmin) { await Respond("No rights for force join"); return; } ServerBattle bat; if (server.Battles.TryGetValue(forceJoin.BattleID, out bat)) { await server.ForceJoinBattle(forceJoin.Name, bat); } }
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); } }