From 6eb915c129fc90c6f4c82ae097dd6ffad5239efc Mon Sep 17 00:00:00 2001 From: chai Date: Mon, 25 Jan 2021 14:28:30 +0800 Subject: +scripts --- .../Assets/Scripts/XMainClient/Guild/XGuildPP.cs | 195 +++++++++++++++++++++ 1 file changed, 195 insertions(+) create mode 100644 Client/Assets/Scripts/XMainClient/Guild/XGuildPP.cs (limited to 'Client/Assets/Scripts/XMainClient/Guild/XGuildPP.cs') diff --git a/Client/Assets/Scripts/XMainClient/Guild/XGuildPP.cs b/Client/Assets/Scripts/XMainClient/Guild/XGuildPP.cs new file mode 100644 index 00000000..ac4ac63e --- /dev/null +++ b/Client/Assets/Scripts/XMainClient/Guild/XGuildPP.cs @@ -0,0 +1,195 @@ +using System; +using System.Collections.Generic; +using UnityEngine; +using XMainClient.UI; +using XUtliPoolLib; + +namespace XMainClient +{ + internal class XGuildPP + { + public static int POSITION_COUNT; + + private List PositionName = new List(); + + private List PositionColor = new List(); + + private List PositionNameWithColor = new List(); + + public static int PERMISSION_COUNT; + + private int[][] GuildPermissionMatrix; + + public static int PemissionNameToIndex(string pemstr) + { + return XGuildPP.Permission2Int((GuildPermission)Enum.Parse(typeof(GuildPermission), pemstr)); + } + + public void InitTable(GuildPermissionTable table) + { + this.PositionName.Clear(); + this.PositionColor.Clear(); + this.PositionNameWithColor.Clear(); + XGuildPP.POSITION_COUNT = XGuildPP.Position2Int(GuildPosition.GPOS_COUNT); + for (int i = 0; i < XGuildPP.POSITION_COUNT; i++) + { + GuildPosition guildPosition = (GuildPosition)i; + string @string = XStringDefineProxy.GetString(guildPosition.ToString()); + this.PositionName.Add(@string); + this.PositionColor.Add(XSingleton.singleton.GetItemQualityColor(XGuildPP.POSITION_COUNT - 1 - i)); + this.PositionNameWithColor.Add(string.Format("[{0}]{1}[-]", XSingleton.singleton.GetItemQualityRGB(XGuildPP.POSITION_COUNT - 1 - i), @string)); + } + XGuildPP.PERMISSION_COUNT = XGuildPP.Permission2Int(GuildPermission.GPEM_MAX); + this.GuildPermissionMatrix = new int[XGuildPP.PERMISSION_COUNT][]; + for (int j = 0; j < this.GuildPermissionMatrix.Length; j++) + { + this.GuildPermissionMatrix[j] = new int[XGuildPP.POSITION_COUNT]; + } + for (int k = 0; k < table.Table.Length; k++) + { + GuildPermissionTable.RowData rowData = table.Table[k]; + int num = XGuildPP.PemissionNameToIndex(rowData.GuildID); + this.GuildPermissionMatrix[num][XGuildPP.Position2Int(GuildPosition.GPOS_LEADER)] = rowData.GPOS_LEADER; + this.GuildPermissionMatrix[num][XGuildPP.Position2Int(GuildPosition.GPOS_VICELEADER)] = rowData.GPOS_VICELEADER; + this.GuildPermissionMatrix[num][XGuildPP.Position2Int(GuildPosition.GPOS_OFFICER)] = rowData.GPOS_OFFICER; + this.GuildPermissionMatrix[num][XGuildPP.Position2Int(GuildPosition.GPOS_ELITEMEMBER)] = rowData.GPOS_ELITEMEMBER; + this.GuildPermissionMatrix[num][XGuildPP.Position2Int(GuildPosition.GPOS_MEMBER)] = rowData.GPOS_MEMBER; + } + } + + public string GetPositionName(GuildPosition position, bool bWithColor = false) + { + bool flag = position == GuildPosition.GPOS_COUNT; + string result; + if (flag) + { + result = ""; + } + else + { + result = (bWithColor ? this.PositionNameWithColor[XGuildPP.Position2Int(position)] : this.PositionName[XGuildPP.Position2Int(position)]); + } + return result; + } + + public Color GetPositionColor(GuildPosition position) + { + bool flag = position == GuildPosition.GPOS_COUNT; + Color result; + if (flag) + { + result = Color.white; + } + else + { + result = this.PositionColor[XGuildPP.Position2Int(position)]; + } + return result; + } + + public bool HasPermission(GuildPosition pos, GuildPermission pem) + { + bool flag = pem == GuildPermission.GPEM_DONOTHING; + bool result; + if (flag) + { + result = true; + } + else + { + bool flag2 = pos == GuildPosition.GPOS_COUNT || pem == GuildPermission.GPEM_MAX || pos == GuildPosition.GPOS_INVALID || pem == GuildPermission.GPEM_INVALID; + result = (!flag2 && this.GuildPermissionMatrix[XGuildPP.Permission2Int(pem)][XGuildPP.Position2Int(pos)] == 1); + } + return result; + } + + public bool HasLowerPosition(GuildPosition pos) + { + int num = XFastEnumIntEqualityComparer.ToInt(pos); + bool flag = num >= XGuildPP.POSITION_COUNT - 1; + return !flag; + } + + public int GetLowerPosition(GuildPosition pos) + { + int num = XFastEnumIntEqualityComparer.ToInt(pos); + bool flag = num > XGuildPP.POSITION_COUNT - 1; + int result; + if (flag) + { + result = num; + } + else + { + result = num + 1; + } + return result; + } + + public bool HasHigherPosition(GuildPosition pos) + { + int num = XFastEnumIntEqualityComparer.ToInt(pos); + bool flag = num <= 0; + return !flag; + } + + public int GetHigherPosition(GuildPosition pos) + { + int num = XFastEnumIntEqualityComparer.ToInt(pos); + bool flag = num < 0; + int result; + if (flag) + { + result = num; + } + else + { + result = num - 1; + } + return result; + } + + public GuildPermission GetSetPositionPermission(GuildPosition higherPos, GuildPosition targetPos) + { + bool flag = targetPos == GuildPosition.GPOS_COUNT || targetPos == GuildPosition.GPOS_INVALID; + GuildPermission result; + if (flag) + { + result = GuildPermission.GPEM_MAX; + } + else + { + switch (higherPos) + { + case GuildPosition.GPOS_LEADER: + result = GuildPermission.GPEM_CHANGELEADER; + break; + case GuildPosition.GPOS_VICELEADER: + result = GuildPermission.GPEM_SET_VICELEADER; + break; + case GuildPosition.GPOS_OFFICER: + result = GuildPermission.GPEM_SET_OFFICER; + break; + case GuildPosition.GPOS_ELITEMEMBER: + case GuildPosition.GPOS_MEMBER: + result = GuildPermission.GPEM_SET_ELITEMEMBER; + break; + default: + result = GuildPermission.GPEM_MAX; + break; + } + } + return result; + } + + private static int Position2Int(GuildPosition pos) + { + return XFastEnumIntEqualityComparer.ToInt(pos); + } + + private static int Permission2Int(GuildPermission pem) + { + return XFastEnumIntEqualityComparer.ToInt(pem); + } + } +} -- cgit v1.1-26-g67d0