Codebreak.Service.World.Game.Guild.GuildInstance.MemberProfilUpdate C# (CSharp) Method

MemberProfilUpdate() public method

public MemberProfilUpdate ( GuildMember member, long profilId, int rank, int percent, int power ) : void
member GuildMember
profilId long
rank int
percent int
power int
return void
        public void MemberProfilUpdate(GuildMember member, long profilId, int rank, int percent, int power)
        {
            var himSelf = member.Id == profilId;
            var targetMember = GetMember(profilId);
            if (targetMember == null)
            {
                member.Dispatch(WorldMessage.BASIC_NO_OPERATION());
                return;
            }

            var rankChanged = rank != (int)targetMember.Rank;
            var powerChanged = power != targetMember.Power;
            var xpShareChanged = percent != targetMember.XPSharePercent;

            var canManageOwnExp = member.HasRight(GuildRightEnum.MANAGE_OWN_EXP_PERCENT);
            var canManageOthersExp = member.HasRight(GuildRightEnum.MANAGE_EXP_PERCENT);
            var canManageRank = member.HasRight(GuildRightEnum.MANAGE_RANK);
            var canManagePower = member.HasRight(GuildRightEnum.MANAGE_POWER);

            if (!canManageOwnExp && !canManageOthersExp && !canManageRank && !canManagePower)
            {
                member.SendHasNotEnoughRights();
                return;
            }

            if (!himSelf && !canManageOthersExp && xpShareChanged)
            {
                member.SendHasNotEnoughRights();
                return;
            }

            if (!canManagePower && powerChanged)
            {
                member.SendHasNotEnoughRights();
                return;
            }

            if (!canManageRank && rankChanged)
            {
                member.SendHasNotEnoughRights();
                return;
            }

            if (!canManageOwnExp && himSelf && xpShareChanged)
            {
                member.SendHasNotEnoughRights();
                return;
            }

            if (rankChanged && (GuildRankEnum)rank == GuildRankEnum.BOSS)
            {
                if (member.Rank == GuildRankEnum.BOSS && targetMember.Rank != GuildRankEnum.BOSS)
                {
                    targetMember.SetBoss();
                    MemberProfilUpdate(targetMember, member.Id, (int)GuildRankEnum.SECOND_IN_COMMAND, 0, 0);
                    member.Dispatch(WorldMessage.GUILD_MEMBERS_INFORMATIONS(member));
                }
            }
            else
            {
                targetMember.Power = power;
                targetMember.Rank = (GuildRankEnum)rank;
            }

            targetMember.XPSharePercent = percent;

            // update profil
            member.Dispatch(WorldMessage.GUILD_MEMBERS_INFORMATIONS(targetMember));
            targetMember.Dispatch(WorldMessage.GUILD_STATS(this, power));
        }