private GuildResultInfo GuildOperationRankRename(GuildMember member, Player player, ClientGuildOperation operation) { GuildRank rank = null; GuildResultInfo GetResult() { if (!member.Rank.HasPermission(GuildRankPermission.RenameRank)) { return(new GuildResultInfo(GuildResult.RankLacksRankRenamePermission)); } rank = GetRank((byte)operation.Rank); if (rank == null) { return(new GuildResultInfo(GuildResult.InvalidRank, operation.Rank, operation.TextValue)); } if (member.Rank.Index >= operation.Rank) { return(new GuildResultInfo(GuildResult.CanOnlyModifyLowerRanks)); } if (RankExists(operation.TextValue)) { return(new GuildResultInfo(GuildResult.DuplicateRankName, referenceString: operation.TextValue)); } if (!TextFilterManager.Instance.IsTextValid(operation.TextValue) || !TextFilterManager.Instance.IsTextValid(operation.TextValue, UserText.GuildRankName)) { return(new GuildResultInfo(GuildResult.InvalidRankName, referenceString: operation.TextValue)); } return(new GuildResultInfo(GuildResult.Success)); } GuildResultInfo info = GetResult(); if (info.Result == GuildResult.Success) { rank.Name = operation.TextValue; AnnounceGuildRankChange(); AnnounceGuildResult(GuildResult.RankRenamed, operation.Rank, operation.TextValue); } return(info); }
private GuildResultInfo GuildOperationRankDelete(GuildMember member, Player player, ClientGuildOperation operation) { GuildRank rank = null; GuildResultInfo GetResult() { if (!member.Rank.HasPermission(GuildRankPermission.CreateAndRemoveRank)) { return(new GuildResultInfo(GuildResult.RankLacksRankRenamePermission)); } rank = GetRank((byte)operation.Rank); if (rank == null) { return(new GuildResultInfo(GuildResult.InvalidRank, operation.Rank, operation.TextValue)); } if (member.Rank.Index >= operation.Rank) { return(new GuildResultInfo(GuildResult.CanOnlyModifyLowerRanks)); } if (operation.Rank < 2 || operation.Rank > 8) { return(new GuildResultInfo(GuildResult.CannotDeleteDefaultRanks, referenceId: operation.Rank)); } if (rank.Any()) { return(new GuildResultInfo(GuildResult.CanOnlyDeleteEmptyRanks)); } return(new GuildResultInfo(GuildResult.Success)); } GuildResultInfo info = GetResult(); if (info.Result == GuildResult.Success) { RemoveRank((byte)operation.Rank); AnnounceGuildRankChange(); AnnounceGuildResult(GuildResult.RankDeleted, referenceText: operation.TextValue); } return(info); }
private GuildResultInfo GuildOperationMemberDemote(GuildMember member, Player player, ClientGuildOperation operation) { GuildMember targetMember = null; GuildResultInfo GetResult() { if (!member.Rank.HasPermission(GuildRankPermission.ChangeMemberRank)) { return(new GuildResultInfo(GuildResult.RankLacksSufficientPermissions)); } targetMember = GetMember(operation.TextValue); if (targetMember == null) { return(new GuildResultInfo(GuildResult.CharacterNotInYourGuild, referenceString: operation.TextValue)); } if (member.Rank.Index >= targetMember.Rank.Index) { return(new GuildResultInfo(GuildResult.CannotDemote)); } if (targetMember.Rank.Index == 9) { return(new GuildResultInfo(GuildResult.CannotDemoteLowestRank)); } return(new GuildResultInfo(GuildResult.Success)); } GuildResultInfo info = GetResult(); if (info.Result == GuildResult.Success) { GuildRank newRank = GetDemotedRank(targetMember.Rank.Index); MemberChangeRank(targetMember, newRank); AnnounceGuildMemberChange(targetMember); AnnounceGuildResult(GuildResult.DemotedMember, referenceText: operation.TextValue); } return(info); }
private GuildResultInfo GuildOperationRankPermissions(GuildMember member, Player player, ClientGuildOperation operation) { GuildRank rank = null; GuildResultInfo GetResult() { if (!member.Rank.HasPermission(GuildRankPermission.EditLowerRankPermissions)) { return(new GuildResultInfo(GuildResult.RankLacksRankRenamePermission)); } rank = GetRank((byte)operation.Rank); if (rank == null) { return(new GuildResultInfo(GuildResult.InvalidRank, operation.Rank, operation.TextValue)); } // TODO: check if mask options are valid for this guild type if (member.Rank.Index >= operation.Rank) { return(new GuildResultInfo(GuildResult.CanOnlyModifyLowerRanks)); } return(new GuildResultInfo(GuildResult.Success)); } GuildResultInfo info = GetResult(); if (info.Result == GuildResult.Success) { // TODO: research why disabled needs to be removed var permissions = (GuildRankPermission)operation.Data.UInt32Data & ~GuildRankPermission.Disabled; rank.Permissions = permissions; AnnounceGuildRankChange(); AnnounceGuildResult(GuildResult.RankModified, operation.Rank, operation.TextValue); } return(info); }