Example #1
0
        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
                });
            }
        }
Example #2
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);
            }
        }
        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);
            }
        }
Example #4
0
        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);
            }
        }
Example #5
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);
            }
        }