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); }
// 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; }
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); }
public bool Add(IPlayer player) { if (Players.Count == PartyLimit) { return(false); } PendingInvites.Remove(player); Players.Add(player); player.Register(this); UpdateStatus(); return(true); }
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); }
// 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; }
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); }
public void AddInvite(PendingInvite invite) { PendingInvites.Add(invite); }
public void RejectInvite(ClanMembership clanMemberShip) { clanMemberShip.RevokeInvite(); PendingInvites.Remove(clanMemberShip.BattleTag); }
public void ClearInvites() { PendingInvites.Clear(); }
public void Invited(IPlayer player) { PendingInvites.Add(player); }