Example #1
0
        public void RevokeInvite(ClanMembership clanMemberShip, string personWhoInvitesBattleTag)
        {
            if (ChiefTain != personWhoInvitesBattleTag && !Shamans.Contains(personWhoInvitesBattleTag))
            {
                throw new ValidationException("Only chieftains and shamans can invite");
            }

            clanMemberShip.RevokeInvite();

            PendingInvites.Remove(clanMemberShip.BattleTag);
        }
Example #2
0
 // clears pending invite if the invite expired
 static void ClearPendingInvite(Player invitedPlayer)
 {
     if (invitedPlayer == null)
     {
         return;
     }
     Console.WriteLine($"Clearing pending invite for invited player: {invitedPlayer.Name}");
     PendingInvites.Remove(invitedPlayer);
     invitedPlayer.PendingInvite        = null;
     invitedPlayer.HasPendingClanInvite = false;
 }
Example #3
0
        public static void CreatePendingInvite(Player invitedPlayer, Player invitingParty, bool bClanInvite)
        {
            invitedPlayer.PendingInvite        = invitingParty;
            invitedPlayer.HasPendingClanInvite = bClanInvite;
            double delay   = 20000.0; // 20 seconds, 1000 ms is one second
            var    myTimer = new System.Timers.Timer(delay);

            myTimer.Elapsed  += (sender, args) => ConQue.Enqueue(() => ClearPendingInvite(invitedPlayer));
            myTimer.AutoReset = false; // fire only once
            myTimer.Enabled   = true;
            PendingInvites.Add(invitedPlayer, myTimer);
        }
Example #4
0
        public bool Add(IPlayer player)
        {
            if (Players.Count == PartyLimit)
            {
                return(false);
            }

            PendingInvites.Remove(player);
            Players.Add(player);
            player.Register(this);
            UpdateStatus();
            return(true);
        }
Example #5
0
        public void AcceptInvite(ClanMembership membership)
        {
            if (Members.Contains(membership.BattleTag))
            {
                throw new ValidationException("Can not participate in clan twice");
            }
            if (!PendingInvites.Contains(membership.BattleTag))
            {
                throw new ValidationException("Player was not invites to sign the clan");
            }

            membership.JoinClan(this);

            ClanState = ClanState.AcceptInvite(membership);

            PendingInvites.Remove(membership.BattleTag);
        }
Example #6
0
        // clears pending invite if it was accepted or declined by the player
        static void ClearInviteBeforeTick(Player targetPlayer)
        {
            if (targetPlayer == null)
            {
                return;
            }

            Console.WriteLine($"Clearing pending invite due to player accepting/declining: {targetPlayer.Name}");

            if (PendingInvites.ContainsKey(targetPlayer))
            {
                PendingInvites[targetPlayer].Stop();
                PendingInvites.Remove(targetPlayer);
            }

            targetPlayer.PendingInvite        = null;
            targetPlayer.HasPendingClanInvite = false;
        }
Example #7
0
        public void Invite(ClanMembership clanMemberShip, string personWhoInvitesBattleTag)
        {
            if (ChiefTain != personWhoInvitesBattleTag && !Shamans.Contains(personWhoInvitesBattleTag))
            {
                throw new ValidationException("Only chieftains and shamans can invite");
            }
            if (PendingInvites.Contains(clanMemberShip.BattleTag))
            {
                throw new ValidationException("Can not invite player twice");
            }
            if (Members.Contains(clanMemberShip.BattleTag))
            {
                throw new ValidationException("Can not invite player twice");
            }
            if (FoundingFathers.Contains(clanMemberShip.BattleTag))
            {
                throw new ValidationException("Can not invite player twice");
            }

            clanMemberShip.Invite(this);

            PendingInvites.Add(clanMemberShip.BattleTag);
        }
Example #8
0
 public void AddInvite(PendingInvite invite)
 {
     PendingInvites.Add(invite);
 }
Example #9
0
        public void RejectInvite(ClanMembership clanMemberShip)
        {
            clanMemberShip.RevokeInvite();

            PendingInvites.Remove(clanMemberShip.BattleTag);
        }
Example #10
0
 public void ClearInvites()
 {
     PendingInvites.Clear();
 }
Example #11
0
 public void Invited(IPlayer player)
 {
     PendingInvites.Add(player);
 }