Example #1
0
            public bool RemoveMember(User user)
            {
                if (!HasMember(user.Id))
                {
                    return(false);
                }

                if (HasOwner(user.Id))
                {
                    if (ManagerIds.Count > 0)
                    {
                        OwnerId = ManagerIds.FirstOrDefault();
                        ManagerIds.Remove(OwnerId);
                    }
                    else
                    {
                        OwnerId = MemberIds.FirstOrDefault();
                    }
                }

                MemberIds.Remove(user.Id);
                ManagerIds.Remove(user.Id);

                Api.OnPlayerLeftFaction(this, user);
                return(true);
            }
        public Identity Clone(bool includeMemberships)
        {
            PropertiesCollection properties = new PropertiesCollection(Properties, validateExisting: false);

            Identity clone = new Identity(properties)
            {
                Id                  = Id,
                Descriptor          = new IdentityDescriptor(Descriptor),
                ProviderDisplayName = ProviderDisplayName,
                CustomDisplayName   = CustomDisplayName,
                IsActive            = IsActive,
                UniqueUserId        = UniqueUserId,
                IsContainer         = IsContainer,
                ResourceVersion     = ResourceVersion,
                MetaTypeId          = MetaTypeId
            };

            if (includeMemberships)
            {
                clone.Members     = CloneDescriptors(Members);
                clone.MemberOf    = CloneDescriptors(MemberOf);
                clone.MemberIds   = MemberIds?.ToList();
                clone.MemberOfIds = MemberOfIds?.ToList();
            }

            clone.MasterId = MasterId;

            return(clone);
        }
Example #3
0
            public bool AddMember(User user)
            {
                if (!MemberIds.Add(user.Id))
                {
                    return(false);
                }

                InviteIds.Remove(user.Id);

                Api.OnPlayerJoinedFaction(this, user);
                return(true);
            }
Example #4
0
 public FactionInfo Serialize()
 {
     return(new FactionInfo {
         Id = Id,
         OwnerId = OwnerId,
         MemberIds = MemberIds.ToArray(),
         ManagerIds = ManagerIds.ToArray(),
         InviteIds = InviteIds.ToArray(),
         TaxRate = TaxRate,
         TaxChestId = TaxChest?.net?.ID,
         NextUpkeepPaymentTime = NextUpkeepPaymentTime
     });
 }
Example #5
0
            public bool Demote(User user)
            {
                if (!MemberIds.Contains(user.Id))
                {
                    throw new InvalidOperationException($"Cannot demote player {user.Id} in faction {Id}, since they are not a member");
                }

                if (!ManagerIds.Remove(user.Id))
                {
                    return(false);
                }

                Api.OnPlayerDemoted(this, user);
                return(true);
            }
Example #6
0
        public bool AddPlayerToParty(string playerId, string pit)
        {
            if (MemberIdToPit.ContainsKey(playerId))
            {
                return(false);
            }

            if (IsAtFullCapacity())
            {
                throw new Exception("The party is at full capacity");
            }

            MemberIdToPit[playerId] = pit;
            MemberIds.Add(playerId);
            return(true);
        }
Example #7
0
        public bool RemovePlayerFromParty(string playerId)
        {
            if (!MemberIdToPit.ContainsKey(playerId))
            {
                return(false);
            }

            if (MemberIdToPit.Count == 1)
            {
                throw new Exception("Cannot remove player if last member of the party");
            }

            MemberIdToPit.Remove(playerId);
            MemberIds.Remove(playerId);

            if (LeaderPlayerId == playerId)
            {
                LeaderPlayerId = MemberIdToPit.ElementAt(0).Key;
            }

            return(true);
        }
Example #8
0
 public User[] GetAllActiveMembers()
 {
     return(MemberIds.Select(id => Instance.Users.Get(id)).Where(user => user != null).ToArray());
 }
Example #9
0
 public bool HasMember(string userId)
 {
     return(MemberIds.Contains(userId));
 }