summaryrefslogtreecommitdiff
path: root/Client/Assets/Scripts/XMainClient/Equip
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2021-01-25 14:28:30 +0800
committerchai <chaifix@163.com>2021-01-25 14:28:30 +0800
commit6eb915c129fc90c6f4c82ae097dd6ffad5239efc (patch)
tree7dd2be50edf41f36b60fac84696e731c13afe617 /Client/Assets/Scripts/XMainClient/Equip
+scripts
Diffstat (limited to 'Client/Assets/Scripts/XMainClient/Equip')
-rw-r--r--Client/Assets/Scripts/XMainClient/Equip/EquipAttrData.cs119
-rw-r--r--Client/Assets/Scripts/XMainClient/Equip/EquipAttrData.cs.meta12
-rw-r--r--Client/Assets/Scripts/XMainClient/Equip/EquipAttrDataMgr.cs76
-rw-r--r--Client/Assets/Scripts/XMainClient/Equip/EquipAttrDataMgr.cs.meta12
-rw-r--r--Client/Assets/Scripts/XMainClient/Equip/EquipAttrRange.cs52
-rw-r--r--Client/Assets/Scripts/XMainClient/Equip/EquipAttrRange.cs.meta12
-rw-r--r--Client/Assets/Scripts/XMainClient/Equip/EquipCompare.cs12
-rw-r--r--Client/Assets/Scripts/XMainClient/Equip/EquipCompare.cs.meta12
-rw-r--r--Client/Assets/Scripts/XMainClient/Equip/EquipFuseData.cs33
-rw-r--r--Client/Assets/Scripts/XMainClient/Equip/EquipFuseData.cs.meta12
-rw-r--r--Client/Assets/Scripts/XMainClient/Equip/EquipFusionDocument.cs685
-rw-r--r--Client/Assets/Scripts/XMainClient/Equip/EquipFusionDocument.cs.meta12
-rw-r--r--Client/Assets/Scripts/XMainClient/Equip/EquipLoadTask.cs100
-rw-r--r--Client/Assets/Scripts/XMainClient/Equip/EquipLoadTask.cs.meta12
-rw-r--r--Client/Assets/Scripts/XMainClient/Equip/EquipPosition.cs20
-rw-r--r--Client/Assets/Scripts/XMainClient/Equip/EquipPosition.cs.meta12
-rw-r--r--Client/Assets/Scripts/XMainClient/Equip/EquipSetCreateConfirmHandler.cs96
-rw-r--r--Client/Assets/Scripts/XMainClient/Equip/EquipSetCreateConfirmHandler.cs.meta12
-rw-r--r--Client/Assets/Scripts/XMainClient/Equip/EquipSetCreateHandler.cs215
-rw-r--r--Client/Assets/Scripts/XMainClient/Equip/EquipSetCreateHandler.cs.meta12
-rw-r--r--Client/Assets/Scripts/XMainClient/Equip/EquipSetHandler.cs561
-rw-r--r--Client/Assets/Scripts/XMainClient/Equip/EquipSetHandler.cs.meta12
-rw-r--r--Client/Assets/Scripts/XMainClient/Equip/EquipSetLevelHandler.cs162
-rw-r--r--Client/Assets/Scripts/XMainClient/Equip/EquipSetLevelHandler.cs.meta12
-rw-r--r--Client/Assets/Scripts/XMainClient/Equip/EquipSetProfHandler.cs126
-rw-r--r--Client/Assets/Scripts/XMainClient/Equip/EquipSetProfHandler.cs.meta12
-rw-r--r--Client/Assets/Scripts/XMainClient/Equip/EquipSetWearingHandler.cs130
-rw-r--r--Client/Assets/Scripts/XMainClient/Equip/EquipSetWearingHandler.cs.meta12
-rw-r--r--Client/Assets/Scripts/XMainClient/Equip/EquipSlotAttrData.cs93
-rw-r--r--Client/Assets/Scripts/XMainClient/Equip/EquipSlotAttrData.cs.meta12
-rw-r--r--Client/Assets/Scripts/XMainClient/Equip/EquipSlotAttrDatas.cs197
-rw-r--r--Client/Assets/Scripts/XMainClient/Equip/EquipSlotAttrDatas.cs.meta12
-rw-r--r--Client/Assets/Scripts/XMainClient/Equip/EquipSuitItemData.cs121
-rw-r--r--Client/Assets/Scripts/XMainClient/Equip/EquipSuitItemData.cs.meta12
-rw-r--r--Client/Assets/Scripts/XMainClient/Equip/EquipSuitMenuData.cs21
-rw-r--r--Client/Assets/Scripts/XMainClient/Equip/EquipSuitMenuData.cs.meta12
-rw-r--r--Client/Assets/Scripts/XMainClient/Equip/EquipSuitMenuDataItem.cs17
-rw-r--r--Client/Assets/Scripts/XMainClient/Equip/EquipSuitMenuDataItem.cs.meta12
-rw-r--r--Client/Assets/Scripts/XMainClient/Equip/EquipTransformBehaviour.cs80
-rw-r--r--Client/Assets/Scripts/XMainClient/Equip/EquipTransformBehaviour.cs.meta12
-rw-r--r--Client/Assets/Scripts/XMainClient/Equip/EquipTransformItemView.cs77
-rw-r--r--Client/Assets/Scripts/XMainClient/Equip/EquipTransformItemView.cs.meta12
-rw-r--r--Client/Assets/Scripts/XMainClient/Equip/EquipUpgradeDocument.cs131
-rw-r--r--Client/Assets/Scripts/XMainClient/Equip/EquipUpgradeDocument.cs.meta12
44 files changed, 3388 insertions, 0 deletions
diff --git a/Client/Assets/Scripts/XMainClient/Equip/EquipAttrData.cs b/Client/Assets/Scripts/XMainClient/Equip/EquipAttrData.cs
new file mode 100644
index 00000000..4703e1e5
--- /dev/null
+++ b/Client/Assets/Scripts/XMainClient/Equip/EquipAttrData.cs
@@ -0,0 +1,119 @@
+using System;
+using XMainClient.UI;
+using XUtliPoolLib;
+
+namespace XMainClient
+{
+ internal class EquipAttrData
+ {
+ public uint Slot
+ {
+ get
+ {
+ return this.m_slot;
+ }
+ }
+
+ public uint AttrId
+ {
+ get
+ {
+ return this.m_attrId;
+ }
+ }
+
+ public bool IsCanSmelt
+ {
+ get
+ {
+ return this.m_isCanSmelt;
+ }
+ }
+
+ public uint Prob
+ {
+ get
+ {
+ return this.m_prob;
+ }
+ }
+
+ public EquipAttrRange RangValue
+ {
+ get
+ {
+ return this.m_rang;
+ }
+ }
+
+ private uint m_slot = 0u;
+
+ private uint m_attrId = 0u;
+
+ private uint m_prob = 0u;
+
+ private bool m_isCanSmelt = false;
+
+ private EquipAttrRange m_rang;
+
+ public EquipAttrData(RandomAttributes.RowData row)
+ {
+ this.m_slot = (uint)row.Slot;
+ this.m_attrId = (uint)row.AttrID;
+ this.m_prob = (uint)row.Prob;
+ this.m_isCanSmelt = (row.CanSmelt == 1);
+ this.m_rang = new EquipAttrRange(row.Range);
+ }
+
+ public EquipAttrData(ForgeAttributes.RowData row)
+ {
+ this.m_slot = (uint)row.Slot;
+ this.m_attrId = (uint)row.AttrID;
+ this.m_prob = (uint)row.Prob;
+ this.m_isCanSmelt = (row.CanSmelt == 1);
+ this.m_rang = new EquipAttrRange(row.Range);
+ }
+
+ public double GetPercentValue(uint attrValue)
+ {
+ float num = (this.m_rang.D_value == 0f) ? 1f : this.m_rang.D_value;
+ bool flag = attrValue < this.m_rang.Max;
+ double num2;
+ if (flag)
+ {
+ num2 = (double)((attrValue - this.m_rang.Min) * 100f / num);
+ }
+ else
+ {
+ num2 = 100.0;
+ }
+ return num2 / 100.0;
+ }
+
+ public string GetColor(uint attrValue)
+ {
+ float num = (this.m_rang.D_value == 0f) ? 1f : this.m_rang.D_value;
+ bool flag = attrValue != this.m_rang.Max;
+ float num2;
+ if (flag)
+ {
+ num2 = (attrValue - this.m_rang.Min) * 100f / num;
+ }
+ else
+ {
+ num2 = 100f;
+ }
+ int quality = EquipAttrDataMgr.MarkList.Count - 1;
+ for (int i = 0; i < EquipAttrDataMgr.MarkList.Count; i++)
+ {
+ bool flag2 = num2 < (float)EquipAttrDataMgr.MarkList[i];
+ if (flag2)
+ {
+ quality = i;
+ break;
+ }
+ }
+ return XSingleton<UiUtility>.singleton.GetItemQualityRGB(quality);
+ }
+ }
+}
diff --git a/Client/Assets/Scripts/XMainClient/Equip/EquipAttrData.cs.meta b/Client/Assets/Scripts/XMainClient/Equip/EquipAttrData.cs.meta
new file mode 100644
index 00000000..0c384ef3
--- /dev/null
+++ b/Client/Assets/Scripts/XMainClient/Equip/EquipAttrData.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 5fe0557313e2e8c42a8a6873194eb723
+timeCreated: 1611403830
+licenseType: Free
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Client/Assets/Scripts/XMainClient/Equip/EquipAttrDataMgr.cs b/Client/Assets/Scripts/XMainClient/Equip/EquipAttrDataMgr.cs
new file mode 100644
index 00000000..efed7b59
--- /dev/null
+++ b/Client/Assets/Scripts/XMainClient/Equip/EquipAttrDataMgr.cs
@@ -0,0 +1,76 @@
+using System;
+using System.Collections.Generic;
+using XUtliPoolLib;
+
+namespace XMainClient
+{
+ internal class EquipAttrDataMgr
+ {
+ public static List<int> MarkList
+ {
+ get
+ {
+ bool flag = EquipAttrDataMgr.m_markList == null;
+ if (flag)
+ {
+ EquipAttrDataMgr.m_markList = XSingleton<XGlobalConfig>.singleton.GetIntList("SmeltCorlorRange");
+ }
+ return EquipAttrDataMgr.m_markList;
+ }
+ }
+
+ protected static List<int> m_markList;
+
+ protected Dictionary<uint, EquipSlotAttrDatas> m_attrDic = new Dictionary<uint, EquipSlotAttrDatas>();
+
+ public EquipSlotAttrDatas GetAttrData(uint itemId)
+ {
+ EquipSlotAttrDatas equipSlotAttrDatas;
+ bool flag = this.m_attrDic.TryGetValue(itemId, out equipSlotAttrDatas);
+ EquipSlotAttrDatas result;
+ if (flag)
+ {
+ result = equipSlotAttrDatas;
+ }
+ else
+ {
+ this.SetAttrByItemId(itemId);
+ bool flag2 = this.m_attrDic.TryGetValue(itemId, out equipSlotAttrDatas);
+ if (flag2)
+ {
+ result = equipSlotAttrDatas;
+ }
+ else
+ {
+ result = null;
+ }
+ }
+ return result;
+ }
+
+ public bool IsHadThisEquip(int itemId)
+ {
+ bool flag = this.m_attrDic.ContainsKey((uint)itemId);
+ bool result;
+ if (flag)
+ {
+ result = true;
+ }
+ else
+ {
+ this.SetAttrByItemId((uint)itemId);
+ result = this.m_attrDic.ContainsKey((uint)itemId);
+ }
+ return result;
+ }
+
+ protected virtual void SetAttrByItemId(uint itemId)
+ {
+ }
+
+ public void DataClear()
+ {
+ this.m_attrDic.Clear();
+ }
+ }
+}
diff --git a/Client/Assets/Scripts/XMainClient/Equip/EquipAttrDataMgr.cs.meta b/Client/Assets/Scripts/XMainClient/Equip/EquipAttrDataMgr.cs.meta
new file mode 100644
index 00000000..26b125e2
--- /dev/null
+++ b/Client/Assets/Scripts/XMainClient/Equip/EquipAttrDataMgr.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: f9dfb12922ccb6d44959713b9cd4d888
+timeCreated: 1611404901
+licenseType: Free
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Client/Assets/Scripts/XMainClient/Equip/EquipAttrRange.cs b/Client/Assets/Scripts/XMainClient/Equip/EquipAttrRange.cs
new file mode 100644
index 00000000..958d3800
--- /dev/null
+++ b/Client/Assets/Scripts/XMainClient/Equip/EquipAttrRange.cs
@@ -0,0 +1,52 @@
+using System;
+using XUtliPoolLib;
+
+namespace XMainClient
+{
+ internal class EquipAttrRange
+ {
+ public float Min
+ {
+ get
+ {
+ return this.m_min;
+ }
+ }
+
+ public float Max
+ {
+ get
+ {
+ return this.m_max;
+ }
+ }
+
+ public float D_value
+ {
+ get
+ {
+ return this.m_max - this.m_min;
+ }
+ }
+
+ public uint Prob
+ {
+ get
+ {
+ return this.m_prob;
+ }
+ }
+
+ private float m_min = 0f;
+
+ private float m_max = 0f;
+
+ private uint m_prob = 0u;
+
+ public EquipAttrRange(SeqRef<uint> seq)
+ {
+ this.m_min = seq[0];
+ this.m_max = seq[1];
+ }
+ }
+}
diff --git a/Client/Assets/Scripts/XMainClient/Equip/EquipAttrRange.cs.meta b/Client/Assets/Scripts/XMainClient/Equip/EquipAttrRange.cs.meta
new file mode 100644
index 00000000..240e2596
--- /dev/null
+++ b/Client/Assets/Scripts/XMainClient/Equip/EquipAttrRange.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 26c2d5765a7a6924a8bba8d452545f6c
+timeCreated: 1611403468
+licenseType: Free
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Client/Assets/Scripts/XMainClient/Equip/EquipCompare.cs b/Client/Assets/Scripts/XMainClient/Equip/EquipCompare.cs
new file mode 100644
index 00000000..85083bdb
--- /dev/null
+++ b/Client/Assets/Scripts/XMainClient/Equip/EquipCompare.cs
@@ -0,0 +1,12 @@
+using System;
+
+namespace XMainClient
+{
+ internal enum EquipCompare
+ {
+ EC_NONE,
+ EC_MORE_POWERFUL,
+ EC_CAN_SMELT,
+ EC_CAN_EQUIP = 4
+ }
+}
diff --git a/Client/Assets/Scripts/XMainClient/Equip/EquipCompare.cs.meta b/Client/Assets/Scripts/XMainClient/Equip/EquipCompare.cs.meta
new file mode 100644
index 00000000..07850c1c
--- /dev/null
+++ b/Client/Assets/Scripts/XMainClient/Equip/EquipCompare.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 77739da59e488b6489d6f709fafe6b89
+timeCreated: 1611403954
+licenseType: Free
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Client/Assets/Scripts/XMainClient/Equip/EquipFuseData.cs b/Client/Assets/Scripts/XMainClient/Equip/EquipFuseData.cs
new file mode 100644
index 00000000..13cb5add
--- /dev/null
+++ b/Client/Assets/Scripts/XMainClient/Equip/EquipFuseData.cs
@@ -0,0 +1,33 @@
+using System;
+
+namespace XMainClient
+{
+ public class EquipFuseData
+ {
+ public uint AttrId { get; set; }
+
+ public uint BeforeBaseAttrNum { get; set; }
+
+ public uint BeforeAddNum { get; set; }
+
+ public uint AfterAddNum { get; set; }
+
+ public bool IsExtra { get; set; }
+
+ public uint UpNum
+ {
+ get
+ {
+ return (this.AfterAddNum > this.BeforeAddNum) ? (this.AfterAddNum - this.BeforeAddNum) : 0u;
+ }
+ }
+
+ public void Init()
+ {
+ this.AttrId = 0u;
+ this.BeforeAddNum = 0u;
+ this.AfterAddNum = 0u;
+ this.IsExtra = false;
+ }
+ }
+}
diff --git a/Client/Assets/Scripts/XMainClient/Equip/EquipFuseData.cs.meta b/Client/Assets/Scripts/XMainClient/Equip/EquipFuseData.cs.meta
new file mode 100644
index 00000000..6853e281
--- /dev/null
+++ b/Client/Assets/Scripts/XMainClient/Equip/EquipFuseData.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: a1083f63ad16e9d4d81eac97b9078df5
+timeCreated: 1611404252
+licenseType: Free
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Client/Assets/Scripts/XMainClient/Equip/EquipFusionDocument.cs b/Client/Assets/Scripts/XMainClient/Equip/EquipFusionDocument.cs
new file mode 100644
index 00000000..dfa7c898
--- /dev/null
+++ b/Client/Assets/Scripts/XMainClient/Equip/EquipFusionDocument.cs
@@ -0,0 +1,685 @@
+using System;
+using System.Collections.Generic;
+using System.Reflection;
+using KKSG;
+using XMainClient.UI;
+using XMainClient.UI.UICommon;
+using XUtliPoolLib;
+
+namespace XMainClient
+{
+ internal class EquipFusionDocument : XDocComponent
+ {
+ public override uint ID
+ {
+ get
+ {
+ return EquipFusionDocument.uuID;
+ }
+ }
+
+ public static EquipFusionDocument Doc
+ {
+ get
+ {
+ return XSingleton<XGame>.singleton.Doc.GetXComponent(EquipFusionDocument.uuID) as EquipFusionDocument;
+ }
+ }
+
+ public EquipFusionHandler Handler { get; set; }
+
+ public int NeedNum
+ {
+ get
+ {
+ return this.m_needNum;
+ }
+ }
+
+ public int MaterialId
+ {
+ get
+ {
+ return this.m_materialId;
+ }
+ }
+
+ public ulong SelectUid
+ {
+ get
+ {
+ return this.m_selectUid;
+ }
+ }
+
+ public List<EquipFuseData> FuseDataList
+ {
+ get
+ {
+ return this.m_fuseDataList;
+ }
+ }
+
+ public bool IsBreak { get; set; }
+
+ public bool IsMax { get; set; }
+
+ public new static readonly uint uuID = XSingleton<XCommon>.singleton.XHash("EquipFusionDocument");
+
+ public static XTableAsyncLoader AsyncLoader = new XTableAsyncLoader();
+
+ public static EquipFusionExpTable m_equipFusionExpTab = new EquipFusionExpTable();
+
+ public static EquipFusionTable m_equipfusionTab = new EquipFusionTable();
+
+ private ulong m_selectUid = 0UL;
+
+ private int m_materialId = 0;
+
+ private int m_needNum = 0;
+
+ private List<EquipFuseData> m_fuseDataList = new List<EquipFuseData>();
+
+ private Dictionary<uint, string> m_effectPathDic;
+
+ private Dictionary<uint, string> m_fuseIconNameDic;
+
+ public static bool IsEquipDown = false;
+
+ private Dictionary<uint, XTuple<uint, uint>> m_addAttrDic = new Dictionary<uint, XTuple<uint, uint>>();
+
+ private static Dictionary<ulong, EquipFusionTable.RowData> m_equipFusionDic = new Dictionary<ulong, EquipFusionTable.RowData>();
+
+ public bool GetEffectPath(uint breakLevel, out string path)
+ {
+ bool flag = this.m_effectPathDic == null;
+ if (flag)
+ {
+ this.m_effectPathDic = new Dictionary<uint, string>();
+ string[] andSeparateValue = XSingleton<XGlobalConfig>.singleton.GetAndSeparateValue("EquipfuseLevelEffectPath", XGlobalConfig.AllSeparators);
+ for (int i = 0; i < andSeparateValue.Length; i += 2)
+ {
+ bool flag2 = i + 1 == andSeparateValue.Length;
+ if (flag2)
+ {
+ break;
+ }
+ uint key;
+ bool flag3 = uint.TryParse(andSeparateValue[i], out key);
+ if (flag3)
+ {
+ bool flag4 = !this.m_effectPathDic.ContainsKey(key);
+ if (flag4)
+ {
+ this.m_effectPathDic.Add(key, andSeparateValue[i + 1]);
+ }
+ }
+ }
+ }
+ int num = 0;
+ uint key2 = 0u;
+ foreach (KeyValuePair<uint, string> keyValuePair in this.m_effectPathDic)
+ {
+ bool flag5 = num == 0;
+ if (flag5)
+ {
+ bool flag6 = breakLevel < keyValuePair.Key;
+ if (flag6)
+ {
+ break;
+ }
+ key2 = keyValuePair.Key;
+ }
+ else
+ {
+ bool flag7 = breakLevel >= keyValuePair.Key;
+ if (flag7)
+ {
+ key2 = keyValuePair.Key;
+ }
+ }
+ num++;
+ }
+ path = string.Empty;
+ bool flag8 = this.m_effectPathDic.ContainsKey(key2);
+ bool result;
+ if (flag8)
+ {
+ path = this.m_effectPathDic[key2];
+ result = true;
+ }
+ else
+ {
+ result = false;
+ }
+ return result;
+ }
+
+ public string GetFuseIconName(uint breakLevel)
+ {
+ bool flag = this.m_fuseIconNameDic == null;
+ if (flag)
+ {
+ this.m_fuseIconNameDic = new Dictionary<uint, string>();
+ string[] andSeparateValue = XSingleton<XGlobalConfig>.singleton.GetAndSeparateValue("EquipFuseIconNames", XGlobalConfig.AllSeparators);
+ for (int i = 0; i < andSeparateValue.Length; i += 2)
+ {
+ bool flag2 = i + 1 == andSeparateValue.Length;
+ if (flag2)
+ {
+ break;
+ }
+ uint key;
+ bool flag3 = uint.TryParse(andSeparateValue[i], out key);
+ if (flag3)
+ {
+ bool flag4 = !this.m_fuseIconNameDic.ContainsKey(key);
+ if (flag4)
+ {
+ this.m_fuseIconNameDic.Add(key, andSeparateValue[i + 1]);
+ }
+ }
+ }
+ }
+ int num = 0;
+ uint key2 = 0u;
+ foreach (KeyValuePair<uint, string> keyValuePair in this.m_fuseIconNameDic)
+ {
+ bool flag5 = num == 0;
+ if (flag5)
+ {
+ bool flag6 = breakLevel < keyValuePair.Key;
+ if (flag6)
+ {
+ break;
+ }
+ key2 = keyValuePair.Key;
+ }
+ else
+ {
+ bool flag7 = breakLevel >= keyValuePair.Key;
+ if (flag7)
+ {
+ key2 = keyValuePair.Key;
+ }
+ }
+ num++;
+ }
+ bool flag8 = this.m_fuseIconNameDic.ContainsKey(key2);
+ string result;
+ if (flag8)
+ {
+ result = this.m_fuseIconNameDic[key2];
+ }
+ else
+ {
+ result = "";
+ }
+ return result;
+ }
+
+ public static void Execute(OnLoadedCallback callback = null)
+ {
+ EquipFusionDocument.AsyncLoader.AddTask("Table/EquipFusion", EquipFusionDocument.m_equipfusionTab, false);
+ EquipFusionDocument.AsyncLoader.AddTask("Table/EquipFusionExp", EquipFusionDocument.m_equipFusionExpTab, false);
+ EquipFusionDocument.AsyncLoader.Execute(callback);
+ }
+
+ public static void OnTableLoaded()
+ {
+ for (int i = 0; i < EquipFusionDocument.m_equipfusionTab.Table.Length; i++)
+ {
+ EquipFusionTable.RowData rowData = EquipFusionDocument.m_equipfusionTab.Table[i];
+ bool flag = rowData == null;
+ if (!flag)
+ {
+ ulong key = EquipFusionDocument.MakeKey(rowData.Profession, (uint)rowData.Slot, (uint)rowData.EquipType, (uint)rowData.BreakNum);
+ bool flag2 = !EquipFusionDocument.m_equipFusionDic.ContainsKey(key);
+ if (flag2)
+ {
+ EquipFusionDocument.m_equipFusionDic.Add(key, rowData);
+ }
+ }
+ }
+ }
+
+ public override void OnAttachToHost(XObject host)
+ {
+ base.OnAttachToHost(host);
+ }
+
+ protected override void EventSubscribe()
+ {
+ base.RegisterEvent(XEventDefine.XEvent_AddItem, new XComponent.XEventHandler(this.OnAddItem));
+ base.EventSubscribe();
+ }
+
+ protected override void OnReconnected(XReconnectedEventArgs arg)
+ {
+ EquipFusionDocument.IsEquipDown = false;
+ }
+
+ public override void OnDetachFromHost()
+ {
+ base.OnDetachFromHost();
+ }
+
+ public void SelectEquip(ulong uid)
+ {
+ XItem itemByUID = XBagDocument.BagDoc.GetItemByUID(uid);
+ bool flag = itemByUID == null;
+ if (!flag)
+ {
+ EquipList.RowData equipConf = XBagDocument.GetEquipConf(itemByUID.itemID);
+ bool flag2 = equipConf == null;
+ if (!flag2)
+ {
+ bool flag3 = equipConf.FuseCanBreakNum == 0;
+ if (flag3)
+ {
+ XSingleton<UiUtility>.singleton.ShowSystemTip(XSingleton<XStringTable>.singleton.GetString("CanNotFusion"), "fece00");
+ }
+ else
+ {
+ this.m_selectUid = uid;
+ this.SetFuseData();
+ bool flag4 = !DlgBase<ItemSystemDlg, TabDlgBehaviour>.singleton.IsVisible();
+ if (!flag4)
+ {
+ bool flag5 = this.Handler != null && this.Handler.IsVisible();
+ if (flag5)
+ {
+ this.ClearSelectMaterial();
+ this.Handler.ShowUI(false);
+ }
+ else
+ {
+ DlgBase<ItemSystemDlg, TabDlgBehaviour>.singleton.ShowRightPopView(DlgBase<ItemSystemDlg, TabDlgBehaviour>.singleton._equipFusionHandler);
+ }
+ bool flag6 = DlgBase<ItemSystemDlg, TabDlgBehaviour>.singleton._equipHandler != null;
+ if (flag6)
+ {
+ DlgBase<ItemSystemDlg, TabDlgBehaviour>.singleton._equipHandler.SelectEquip(uid);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ public void AddMaterial(int itemId)
+ {
+ this.m_materialId = itemId;
+ bool flag = this.Handler != null && this.Handler.IsVisible();
+ if (flag)
+ {
+ this.Handler.UpdateItem();
+ }
+ }
+
+ public void ReqEquipFuseMes()
+ {
+ RpcC2G_FuseEquip rpcC2G_FuseEquip = new RpcC2G_FuseEquip();
+ rpcC2G_FuseEquip.oArg.uid = this.m_selectUid;
+ bool flag = !this.IsBreak;
+ if (flag)
+ {
+ rpcC2G_FuseEquip.oArg.type = 0u;
+ }
+ else
+ {
+ rpcC2G_FuseEquip.oArg.type = 1u;
+ }
+ rpcC2G_FuseEquip.oArg.itemID = (uint)this.MaterialId;
+ XSingleton<XClientNetwork>.singleton.Send(rpcC2G_FuseEquip);
+ }
+
+ public void OnGetEquipFuseInfo(FuseEquipRes oRes)
+ {
+ bool flag = oRes == null;
+ if (flag)
+ {
+ XSingleton<UiUtility>.singleton.ShowSystemTip(ErrorCode.ERR_FAILED, "fece00");
+ }
+ else
+ {
+ bool flag2 = oRes.errorcode == ErrorCode.ERR_INVALID_REQUEST;
+ if (flag2)
+ {
+ string fullName = MethodBase.GetCurrentMethod().ReflectedType.FullName;
+ XSingleton<UiUtility>.singleton.OnGetInvalidRequest(fullName);
+ }
+ else
+ {
+ bool flag3 = oRes.errorcode > ErrorCode.ERR_SUCCESS;
+ if (flag3)
+ {
+ XSingleton<UiUtility>.singleton.ShowSystemTip(oRes.errorcode, "fece00");
+ }
+ else
+ {
+ bool isBreak = this.IsBreak;
+ this.SetFuseData();
+ bool flag4 = isBreak || this.IsBreak;
+ if (flag4)
+ {
+ this.ClearSelectMaterial();
+ }
+ bool flag5 = this.Handler != null && this.Handler.IsVisible();
+ if (flag5)
+ {
+ this.Handler.ShowUI(isBreak);
+ }
+ }
+ }
+ }
+ }
+
+ private void ClearSelectMaterial()
+ {
+ this.m_materialId = 0;
+ this.m_needNum = 0;
+ }
+
+ public List<EquipFuseData> GetNowFuseData(XItem item, uint profession)
+ {
+ List<EquipFuseData> list = new List<EquipFuseData>();
+ bool flag = item == null || item.Type != ItemType.EQUIP;
+ List<EquipFuseData> result;
+ if (flag)
+ {
+ result = list;
+ }
+ else
+ {
+ EquipList.RowData equipConf = XBagDocument.GetEquipConf(item.itemID);
+ bool flag2 = equipConf == null;
+ if (flag2)
+ {
+ result = list;
+ }
+ else
+ {
+ XEquipItem xequipItem = item as XEquipItem;
+ this.GetTotalAddAttr(xequipItem.fuseInfo, equipConf, profession, false);
+ for (int i = 0; i < xequipItem.changeAttr.Count; i++)
+ {
+ EquipFuseData equipFuseData = new EquipFuseData();
+ equipFuseData.Init();
+ equipFuseData.AttrId = xequipItem.changeAttr[i].AttrID;
+ equipFuseData.BeforeBaseAttrNum = xequipItem.changeAttr[i].AttrValue;
+ bool flag3 = this.m_addAttrDic.ContainsKey(equipFuseData.AttrId);
+ if (flag3)
+ {
+ equipFuseData.BeforeAddNum = this.m_addAttrDic[equipFuseData.AttrId].Item1;
+ this.m_addAttrDic.Remove(equipFuseData.AttrId);
+ }
+ list.Add(equipFuseData);
+ }
+ foreach (KeyValuePair<uint, XTuple<uint, uint>> keyValuePair in this.m_addAttrDic)
+ {
+ EquipFuseData equipFuseData2 = new EquipFuseData();
+ equipFuseData2.Init();
+ equipFuseData2.AttrId = keyValuePair.Key;
+ equipFuseData2.BeforeBaseAttrNum = keyValuePair.Value.Item1;
+ equipFuseData2.IsExtra = true;
+ list.Add(equipFuseData2);
+ }
+ result = list;
+ }
+ }
+ return result;
+ }
+
+ private void SetFuseData()
+ {
+ XItem itemByUID = XBagDocument.BagDoc.GetItemByUID(this.m_selectUid);
+ bool flag = itemByUID == null || itemByUID.Type != ItemType.EQUIP;
+ if (!flag)
+ {
+ bool flag2 = XSingleton<XEntityMgr>.singleton.Player == null;
+ if (!flag2)
+ {
+ EquipList.RowData equipConf = XBagDocument.GetEquipConf(itemByUID.itemID);
+ bool flag3 = equipConf == null;
+ if (!flag3)
+ {
+ this.m_fuseDataList.Clear();
+ XEquipItem xequipItem = itemByUID as XEquipItem;
+ int breakNum = (int)xequipItem.fuseInfo.BreakNum;
+ EquipFusionTable.RowData fuseData = this.GetFuseData(XSingleton<XEntityMgr>.singleton.Player.BasicTypeID, equipConf, (uint)breakNum);
+ bool flag4 = fuseData == null;
+ if (!flag4)
+ {
+ this.IsBreak = (xequipItem.fuseInfo.FuseExp >= fuseData.LevelNum * fuseData.NeedExpPerLevel);
+ this.IsMax = (this.IsBreak && breakNum >= (int)equipConf.FuseCanBreakNum);
+ this.GetTotalAddAttr(xequipItem.fuseInfo, equipConf, XSingleton<XEntityMgr>.singleton.Player.BasicTypeID, true);
+ foreach (KeyValuePair<uint, XTuple<uint, uint>> keyValuePair in this.m_addAttrDic)
+ {
+ EquipFuseData equipFuseData = new EquipFuseData();
+ equipFuseData.Init();
+ equipFuseData.AttrId = keyValuePair.Key;
+ equipFuseData.BeforeAddNum = keyValuePair.Value.Item1;
+ equipFuseData.AfterAddNum = keyValuePair.Value.Item2;
+ this.m_fuseDataList.Add(equipFuseData);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ private void GetTotalAddAttr(XequipFuseInfo info, EquipList.RowData equipRow, uint profession, bool needNextAttr)
+ {
+ this.m_addAttrDic.Clear();
+ int num = 0;
+ while ((long)num < (long)((ulong)(info.BreakNum + 1u)))
+ {
+ EquipFusionTable.RowData fuseData = this.GetFuseData(profession, equipRow, (uint)num);
+ bool flag = fuseData == null;
+ if (!flag)
+ {
+ bool flag2 = (long)num == (long)((ulong)info.BreakNum);
+ if (flag2)
+ {
+ for (int i = 0; i < (int)fuseData.LevelAddAttr.count; i++)
+ {
+ uint num2 = info.FuseExp / fuseData.NeedExpPerLevel;
+ num2 = ((num2 > fuseData.LevelNum) ? fuseData.LevelNum : num2);
+ bool flag3 = !this.m_addAttrDic.ContainsKey(fuseData.LevelAddAttr[i, 0]);
+ if (flag3)
+ {
+ XTuple<uint, uint> xtuple = new XTuple<uint, uint>();
+ xtuple.Item1 = fuseData.LevelAddAttr[i, 1] * num2;
+ this.m_addAttrDic.Add(fuseData.LevelAddAttr[i, 0], xtuple);
+ }
+ else
+ {
+ this.m_addAttrDic[fuseData.LevelAddAttr[i, 0]].Item1 += fuseData.LevelAddAttr[i, 1] * num2;
+ }
+ }
+ }
+ else
+ {
+ for (int j = 0; j < (int)fuseData.LevelAddAttr.count; j++)
+ {
+ bool flag4 = !this.m_addAttrDic.ContainsKey(fuseData.LevelAddAttr[j, 0]);
+ if (flag4)
+ {
+ XTuple<uint, uint> xtuple2 = new XTuple<uint, uint>();
+ xtuple2.Item1 = fuseData.LevelAddAttr[j, 1] * fuseData.LevelNum;
+ this.m_addAttrDic.Add(fuseData.LevelAddAttr[j, 0], xtuple2);
+ }
+ else
+ {
+ this.m_addAttrDic[fuseData.LevelAddAttr[j, 0]].Item1 += fuseData.LevelAddAttr[j, 1] * fuseData.LevelNum;
+ }
+ }
+ for (int k = 0; k < (int)fuseData.BreakAddAttr.count; k++)
+ {
+ bool flag5 = !this.m_addAttrDic.ContainsKey(fuseData.BreakAddAttr[k, 0]);
+ if (flag5)
+ {
+ XTuple<uint, uint> xtuple3 = new XTuple<uint, uint>();
+ xtuple3.Item1 = fuseData.BreakAddAttr[k, 1];
+ this.m_addAttrDic.Add(fuseData.BreakAddAttr[k, 0], xtuple3);
+ }
+ else
+ {
+ this.m_addAttrDic[fuseData.BreakAddAttr[k, 0]].Item1 += fuseData.BreakAddAttr[k, 1];
+ }
+ }
+ }
+ }
+ num++;
+ }
+ foreach (KeyValuePair<uint, XTuple<uint, uint>> keyValuePair in this.m_addAttrDic)
+ {
+ keyValuePair.Value.Item2 = keyValuePair.Value.Item1;
+ }
+ bool flag6 = needNextAttr && !this.IsMax;
+ if (flag6)
+ {
+ this.GetNextTotalAddAttr(info, equipRow, profession);
+ }
+ }
+
+ private void GetNextTotalAddAttr(XequipFuseInfo info, EquipList.RowData equipRow, uint profession)
+ {
+ EquipFusionTable.RowData fuseData = this.GetFuseData(profession, equipRow, info.BreakNum);
+ bool flag = fuseData == null;
+ if (!flag)
+ {
+ bool flag2 = info.FuseExp >= fuseData.LevelNum * fuseData.NeedExpPerLevel;
+ if (flag2)
+ {
+ for (int i = 0; i < (int)fuseData.BreakAddAttr.count; i++)
+ {
+ bool flag3 = !this.m_addAttrDic.ContainsKey(fuseData.BreakAddAttr[i, 0]);
+ if (flag3)
+ {
+ XTuple<uint, uint> xtuple = new XTuple<uint, uint>();
+ xtuple.Item2 = fuseData.BreakAddAttr[i, 1];
+ this.m_addAttrDic.Add(fuseData.BreakAddAttr[i, 0], xtuple);
+ }
+ else
+ {
+ this.m_addAttrDic[fuseData.BreakAddAttr[i, 0]].Item2 += fuseData.BreakAddAttr[i, 1];
+ }
+ }
+ }
+ else
+ {
+ for (int j = 0; j < (int)fuseData.LevelAddAttr.count; j++)
+ {
+ bool flag4 = !this.m_addAttrDic.ContainsKey(fuseData.LevelAddAttr[j, 0]);
+ if (flag4)
+ {
+ XTuple<uint, uint> xtuple2 = new XTuple<uint, uint>();
+ xtuple2.Item2 = fuseData.LevelAddAttr[j, 1];
+ this.m_addAttrDic.Add(fuseData.LevelAddAttr[j, 0], xtuple2);
+ }
+ else
+ {
+ this.m_addAttrDic[fuseData.LevelAddAttr[j, 0]].Item2 += fuseData.LevelAddAttr[j, 1];
+ }
+ }
+ }
+ }
+ }
+
+ private bool IsNewAttr(uint attrId, uint attrNum)
+ {
+ for (int i = 0; i < this.m_fuseDataList.Count; i++)
+ {
+ bool flag = this.m_fuseDataList[i].AttrId == attrId;
+ if (flag)
+ {
+ this.m_fuseDataList[i].AfterAddNum += attrNum;
+ return false;
+ }
+ }
+ return true;
+ }
+
+ private bool OnAddItem(XEventArgs args)
+ {
+ bool flag = this.Handler != null && this.Handler.IsVisible();
+ if (flag)
+ {
+ this.Handler.UpdateButtom();
+ }
+ return true;
+ }
+
+ public uint GetAddExp(uint coreItemId)
+ {
+ EquipFusionExpTable.RowData byCoreItemId = EquipFusionDocument.m_equipFusionExpTab.GetByCoreItemId(coreItemId);
+ bool flag = byCoreItemId != null;
+ uint result;
+ if (flag)
+ {
+ result = byCoreItemId.AddExp;
+ }
+ else
+ {
+ result = 0u;
+ }
+ return result;
+ }
+
+ public SeqListRef<uint> GetAssistItems(uint coreItemId)
+ {
+ EquipFusionExpTable.RowData byCoreItemId = EquipFusionDocument.m_equipFusionExpTab.GetByCoreItemId(coreItemId);
+ bool flag = byCoreItemId != null;
+ SeqListRef<uint> result;
+ if (flag)
+ {
+ result = byCoreItemId.AssistItemId;
+ }
+ else
+ {
+ result = default(SeqListRef<uint>);
+ }
+ return result;
+ }
+
+ private static ulong MakeKey(uint profession, uint slot, uint equipType, uint breakNum)
+ {
+ return (ulong)profession << 48 | (ulong)slot << 32 | (ulong)((ulong)equipType << 16) | (ulong)breakNum;
+ }
+
+ public EquipFusionTable.RowData GetFuseData(uint profession, uint slot, uint equipType, uint breakNum)
+ {
+ ulong key = EquipFusionDocument.MakeKey(profession, slot, equipType, breakNum);
+ EquipFusionTable.RowData result = null;
+ bool flag = !EquipFusionDocument.m_equipFusionDic.TryGetValue(key, out result);
+ if (flag)
+ {
+ XSingleton<XDebug>.singleton.AddGreenLog(string.Format("the data not exit int equipFusion.txt,profession = {0},slot = {1},equipType = {2},breakNum = {3}", new object[]
+ {
+ profession,
+ slot,
+ equipType,
+ breakNum
+ }), null, null, null, null, null);
+ }
+ return result;
+ }
+
+ public EquipFusionTable.RowData GetFuseData(uint profession, EquipList.RowData row, uint breakNum)
+ {
+ bool flag = row == null;
+ EquipFusionTable.RowData result;
+ if (flag)
+ {
+ result = null;
+ }
+ else
+ {
+ result = this.GetFuseData(profession, (uint)row.EquipPos, (uint)row.EquipType, breakNum);
+ }
+ return result;
+ }
+ }
+}
diff --git a/Client/Assets/Scripts/XMainClient/Equip/EquipFusionDocument.cs.meta b/Client/Assets/Scripts/XMainClient/Equip/EquipFusionDocument.cs.meta
new file mode 100644
index 00000000..fcafff16
--- /dev/null
+++ b/Client/Assets/Scripts/XMainClient/Equip/EquipFusionDocument.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: cfff3f45a1dc16e4ca3f14268ce13074
+timeCreated: 1611404583
+licenseType: Free
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Client/Assets/Scripts/XMainClient/Equip/EquipLoadTask.cs b/Client/Assets/Scripts/XMainClient/Equip/EquipLoadTask.cs
new file mode 100644
index 00000000..c821a180
--- /dev/null
+++ b/Client/Assets/Scripts/XMainClient/Equip/EquipLoadTask.cs
@@ -0,0 +1,100 @@
+using System;
+using System.Collections.Generic;
+using XUtliPoolLib;
+
+namespace XMainClient
+{
+ internal class EquipLoadTask
+ {
+ public EPartType part = EPartType.ENum;
+
+ public FashionPositionInfo fpi;
+
+ public EProcessStatus processStatus = EProcessStatus.ENotProcess;
+
+ protected string location = "";
+
+ public EquipLoadTask(EPartType p)
+ {
+ this.part = p;
+ this.fpi.Reset();
+ }
+
+ public bool IsSamePart(ref FashionPositionInfo newFpi)
+ {
+ return this.fpi.Equals(newFpi) && this.processStatus >= EProcessStatus.EPreProcess;
+ }
+
+ public bool MakePath(ref FashionPositionInfo newFpi, HashSet<string> loadedPath)
+ {
+ this.fpi = newFpi;
+ bool flag = this.fpi.presentID > 0u;
+ if (flag)
+ {
+ this.location = "Prefabs/" + XSingleton<XEntityMgr>.singleton.EntityInfo.GetByPresentID(this.fpi.presentID).Prefab;
+ this.processStatus = EProcessStatus.EProcessing;
+ }
+ else
+ {
+ bool flag2 = !string.IsNullOrEmpty(this.fpi.fashionName);
+ if (flag2)
+ {
+ bool flag3 = this.fpi.fashionName.StartsWith("/");
+ if (flag3)
+ {
+ this.location = "Equipments" + this.fpi.fashionName;
+ }
+ else
+ {
+ this.location = "Equipments/" + this.fpi.fashionName;
+ }
+ this.processStatus = EProcessStatus.EProcessing;
+ }
+ }
+ bool flag4 = loadedPath != null;
+ bool result;
+ if (flag4)
+ {
+ bool flag5 = !string.IsNullOrEmpty(this.location) && !loadedPath.Contains(this.location);
+ if (flag5)
+ {
+ loadedPath.Add(this.location);
+ result = true;
+ }
+ else
+ {
+ this.processStatus = EProcessStatus.EProcessed;
+ result = false;
+ }
+ }
+ else
+ {
+ result = !string.IsNullOrEmpty(this.location);
+ }
+ return result;
+ }
+
+ public virtual void Load(XEntity e, int prefessionID, ref FashionPositionInfo newFpi, bool async, HashSet<string> loadedPath)
+ {
+ bool flag = loadedPath != null;
+ if (flag)
+ {
+ bool flag2 = !string.IsNullOrEmpty(this.location) && !loadedPath.Contains(this.location);
+ if (flag2)
+ {
+ loadedPath.Add(this.location);
+ }
+ else
+ {
+ this.processStatus = EProcessStatus.EProcessed;
+ }
+ }
+ }
+
+ public virtual void Reset(XEntity e)
+ {
+ this.processStatus = EProcessStatus.ENotProcess;
+ this.location = "";
+ }
+ }
+}
diff --git a/Client/Assets/Scripts/XMainClient/Equip/EquipLoadTask.cs.meta b/Client/Assets/Scripts/XMainClient/Equip/EquipLoadTask.cs.meta
new file mode 100644
index 00000000..fd45f6ff
--- /dev/null
+++ b/Client/Assets/Scripts/XMainClient/Equip/EquipLoadTask.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: ac77f39ef40385640a26d351a1bc61cf
+timeCreated: 1611404331
+licenseType: Free
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Client/Assets/Scripts/XMainClient/Equip/EquipPosition.cs b/Client/Assets/Scripts/XMainClient/Equip/EquipPosition.cs
new file mode 100644
index 00000000..41800c11
--- /dev/null
+++ b/Client/Assets/Scripts/XMainClient/Equip/EquipPosition.cs
@@ -0,0 +1,20 @@
+using System;
+
+namespace XMainClient
+{
+ internal enum EquipPosition
+ {
+ EQUIP_START,
+ Headgear = 0,
+ Upperbody,
+ Lowerbody,
+ Gloves,
+ Boots,
+ Mainweapon,
+ Secondaryweapon,
+ Necklace,
+ Earrings,
+ Rings,
+ EQUIP_END
+ }
+}
diff --git a/Client/Assets/Scripts/XMainClient/Equip/EquipPosition.cs.meta b/Client/Assets/Scripts/XMainClient/Equip/EquipPosition.cs.meta
new file mode 100644
index 00000000..bd1d8246
--- /dev/null
+++ b/Client/Assets/Scripts/XMainClient/Equip/EquipPosition.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 618a5e72522e87c498250cf0b1284b41
+timeCreated: 1611403839
+licenseType: Free
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Client/Assets/Scripts/XMainClient/Equip/EquipSetCreateConfirmHandler.cs b/Client/Assets/Scripts/XMainClient/Equip/EquipSetCreateConfirmHandler.cs
new file mode 100644
index 00000000..fb1e0b58
--- /dev/null
+++ b/Client/Assets/Scripts/XMainClient/Equip/EquipSetCreateConfirmHandler.cs
@@ -0,0 +1,96 @@
+using System;
+using UILib;
+using UnityEngine;
+using XMainClient.UI;
+using XUtliPoolLib;
+
+namespace XMainClient
+{
+ internal class EquipSetCreateConfirmHandler : DlgHandlerBase
+ {
+ private IXUIButton mBtnCancel;
+
+ private IXUIButton mBtnOK;
+
+ private IXUILabel mLbLevel;
+
+ private EquipSetItemBaseView mItemView;
+
+ private XEquipCreateDocument mDoc;
+
+ protected override void Init()
+ {
+ base.Init();
+ this.mDoc = XEquipCreateDocument.Doc;
+ Transform transform = base.PanelObject.transform.Find("OK");
+ this.mBtnOK = (transform.GetComponent("XUIButton") as IXUIButton);
+ transform = base.PanelObject.transform.Find("Cancel");
+ this.mBtnCancel = (transform.GetComponent("XUIButton") as IXUIButton);
+ transform = base.PanelObject.transform.Find("Level");
+ this.mLbLevel = (transform.GetComponent("XUILabel") as IXUILabel);
+ this.mItemView = new EquipSetItemBaseView();
+ this.mItemView.FindFrom(base.PanelObject.transform);
+ }
+
+ public override void RegisterEvent()
+ {
+ base.Init();
+ this.mBtnOK.RegisterClickEventHandler(new ButtonClickEventHandler(this.OnClickButtonOK));
+ this.mBtnCancel.RegisterClickEventHandler(new ButtonClickEventHandler(this.OnClickButtonCancel));
+ }
+
+ public void SetEquipInfo(int _dataID)
+ {
+ ItemComposeTable.RowData itemConposeDataByID = XEquipCreateDocument.GetItemConposeDataByID(_dataID);
+ bool flag = itemConposeDataByID == null;
+ if (!flag)
+ {
+ ItemList.RowData itemConf = XBagDocument.GetItemConf(itemConposeDataByID.ItemID);
+ bool flag2 = itemConf == null;
+ if (!flag2)
+ {
+ this.mLbLevel.SetText(itemConf.ReqLevel.ToString());
+ bool isBind = this.mDoc.IsBind;
+ bool flag3 = itemConf.ItemType == 1 || itemConf.ItemType == 31;
+ if (flag3)
+ {
+ isBind = itemConposeDataByID.IsBind;
+ }
+ bool flag4 = !itemConf.CanTrade;
+ if (flag4)
+ {
+ isBind = true;
+ }
+ bool flag5 = base.IsVisible() && this.mItemView != null;
+ if (flag5)
+ {
+ EquipSetItemBaseView.stEquipInfoParam param;
+ param.isShowTooltip = false;
+ param.playerProf = 0;
+ this.mItemView.SetItemInfo(itemConf, param, isBind);
+ }
+ this.mBtnOK.ID = (ulong)((long)_dataID);
+ }
+ }
+ }
+
+ private bool OnClickButtonOK(IXUIButton btn)
+ {
+ base.SetVisible(false);
+ this.mDoc.StartCreateEquip((int)btn.ID);
+ return true;
+ }
+
+ private bool OnClickButtonCancel(IXUIButton btn)
+ {
+ base.SetVisible(false);
+ return true;
+ }
+
+ public override void OnUnload()
+ {
+ this.mDoc = null;
+ base.OnUnload();
+ }
+ }
+}
diff --git a/Client/Assets/Scripts/XMainClient/Equip/EquipSetCreateConfirmHandler.cs.meta b/Client/Assets/Scripts/XMainClient/Equip/EquipSetCreateConfirmHandler.cs.meta
new file mode 100644
index 00000000..54f0deea
--- /dev/null
+++ b/Client/Assets/Scripts/XMainClient/Equip/EquipSetCreateConfirmHandler.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 92f46c42d970cd74eb799183d75faec5
+timeCreated: 1611404148
+licenseType: Free
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Client/Assets/Scripts/XMainClient/Equip/EquipSetCreateHandler.cs b/Client/Assets/Scripts/XMainClient/Equip/EquipSetCreateHandler.cs
new file mode 100644
index 00000000..8fd6db7d
--- /dev/null
+++ b/Client/Assets/Scripts/XMainClient/Equip/EquipSetCreateHandler.cs
@@ -0,0 +1,215 @@
+using System;
+using UILib;
+using UnityEngine;
+using XMainClient.UI;
+using XUtliPoolLib;
+
+namespace XMainClient
+{
+ internal class EquipSetCreateHandler : DlgHandlerBase
+ {
+ public string CreatePath
+ {
+ get
+ {
+ bool flag = string.IsNullOrEmpty(this.m_createPath);
+ if (flag)
+ {
+ this.m_createPath = XSingleton<XGlobalConfig>.singleton.GetValue("EquipCreatEffectPath");
+ }
+ return this.m_createPath;
+ }
+ }
+
+ private IXUIButton mBtnDo;
+
+ private IXUILabel mLbBtnDo;
+
+ private IXUILabel mLbText;
+
+ private IXUISprite mSprBar;
+
+ private EquipSetItemBaseView mItemView;
+
+ private GameObject mBarView;
+
+ private GameObject mSuccessEffect;
+
+ private int mBarFullWidth;
+
+ private XEquipCreateDocument mEquipCreateDoc;
+
+ private XFx m_creatFx = null;
+
+ private string m_createPath = string.Empty;
+
+ protected override void Init()
+ {
+ base.Init();
+ this.mEquipCreateDoc = XEquipCreateDocument.Doc;
+ Transform transform = base.PanelObject.transform.Find("Do");
+ this.mBtnDo = (transform.GetComponent("XUIButton") as IXUIButton);
+ transform = base.PanelObject.transform.Find("Text");
+ this.mLbText = (transform.GetComponent("XUILabel") as IXUILabel);
+ transform = base.PanelObject.transform.Find("Do/T");
+ this.mLbBtnDo = (transform.GetComponent("XUILabel") as IXUILabel);
+ this.mItemView = new EquipSetItemBaseView();
+ this.mItemView.FindFrom(base.PanelObject.transform);
+ transform = base.PanelObject.transform.Find("Making");
+ this.mBarView = transform.gameObject;
+ transform = base.PanelObject.transform.Find("Making/Bar");
+ this.mSprBar = (transform.GetComponent("XUISprite") as IXUISprite);
+ transform = base.PanelObject.transform.Find("Suc");
+ this.mSuccessEffect = transform.gameObject;
+ this.mBarFullWidth = this.mSprBar.spriteWidth;
+ }
+
+ public override void RegisterEvent()
+ {
+ base.Init();
+ this.mBtnDo.RegisterClickEventHandler(new ButtonClickEventHandler(this.OnClickButtonOK));
+ }
+
+ public void SetEquipInfo(int _itemID)
+ {
+ bool flag = this.mItemView.goItem != null;
+ if (flag)
+ {
+ this.mItemView.goItem.SetActive(false);
+ }
+ }
+
+ public void SetFinishEquipInfo(XItem item)
+ {
+ bool flag = this.mItemView.goItem != null;
+ if (flag)
+ {
+ this.mItemView.goItem.SetActive(true);
+ }
+ bool flag2 = item != null && item.uid > 0UL && item.itemID > 0;
+ if (flag2)
+ {
+ bool flag3 = base.IsVisible() && this.mItemView != null;
+ if (flag3)
+ {
+ EquipSetItemBaseView.stEquipInfoParam param;
+ param.isShowTooltip = false;
+ param.playerProf = 0;
+ this.mItemView.SetItemInfo(item, param, item.bBinding);
+ }
+ this.mItemView.SetFinishItem(item);
+ }
+ }
+
+ public void SetBar(int percent)
+ {
+ percent = Mathf.Clamp(percent, 1, 100);
+ this.mSprBar.spriteWidth = this.mBarFullWidth * percent / 100;
+ }
+
+ public void HideBtn()
+ {
+ this.mBtnDo.SetVisible(false);
+ }
+
+ public void SetFinishState(bool bFinish)
+ {
+ this.mBarView.SetActive(!bFinish);
+ this.mSuccessEffect.SetActive(bFinish);
+ this.mBtnDo.SetVisible(true);
+ if (bFinish)
+ {
+ this.HideEffect();
+ XSingleton<XAudioMgr>.singleton.PlayUISound("Audio/UI/UI_Upgrade_Gear", true, AudioChannel.Action);
+ this.mLbText.SetText(XStringDefineProxy.GetString("EQUIPCREATE_EQUIPSET_SUCCESS").Replace("{n}", "\n"));
+ this.mLbBtnDo.SetText(XStringDefineProxy.GetString(XStringDefine.COMMON_OK));
+ this.mBtnDo.RegisterClickEventHandler(new ButtonClickEventHandler(this.OnClickButtonOK));
+ }
+ else
+ {
+ this.ShowEffect();
+ this.mLbText.SetText(XStringDefineProxy.GetString("EQUIPCREATE_EQUIPSET_MAKING"));
+ this.mLbBtnDo.SetText(XStringDefineProxy.GetString(XStringDefine.COMMON_CANCEL));
+ this.mBtnDo.RegisterClickEventHandler(new ButtonClickEventHandler(this.OnClickButtonCancel));
+ }
+ }
+
+ private void ShowEffect()
+ {
+ bool flag = this.m_creatFx == null;
+ if (flag)
+ {
+ this.m_creatFx = XSingleton<XFxMgr>.singleton.CreateFx(this.CreatePath, null, true);
+ }
+ else
+ {
+ this.m_creatFx.SetActive(true);
+ }
+ this.m_creatFx.Play(base.PanelObject.transform.Find("Bg"), Vector3.zero, Vector3.one, 1f, true, false);
+ XSingleton<XAudioMgr>.singleton.PlayUISound("Audio/UI/UI_datie", true, AudioChannel.Action);
+ }
+
+ private void HideEffect()
+ {
+ bool flag = this.m_creatFx != null;
+ if (flag)
+ {
+ this.m_creatFx.SetActive(false);
+ this.m_creatFx.Stop();
+ }
+ }
+
+ private bool OnClickButtonOK(IXUIButton btn)
+ {
+ base.SetVisible(false);
+ return true;
+ }
+
+ private bool OnClickButtonCancel(IXUIButton btn)
+ {
+ bool isCreating = XEquipCreateDocument.Doc.IsCreating;
+ bool result;
+ if (isCreating)
+ {
+ result = true;
+ }
+ else
+ {
+ base.SetVisible(false);
+ this.mEquipCreateDoc.CancelCreateEquip();
+ result = true;
+ }
+ return result;
+ }
+
+ protected override void OnShow()
+ {
+ base.OnShow();
+ }
+
+ protected override void OnHide()
+ {
+ base.OnHide();
+ this.HideEffect();
+ bool flag = null != this.mSuccessEffect;
+ if (flag)
+ {
+ this.mSuccessEffect.SetActive(false);
+ }
+ base.PanelObject.SetActive(false);
+ }
+
+ public override void OnUnload()
+ {
+ this.mEquipCreateDoc = null;
+ bool flag = this.m_creatFx != null;
+ if (flag)
+ {
+ XSingleton<XFxMgr>.singleton.DestroyFx(this.m_creatFx, true);
+ this.m_creatFx = null;
+ }
+ this.mSuccessEffect = null;
+ base.OnUnload();
+ }
+ }
+}
diff --git a/Client/Assets/Scripts/XMainClient/Equip/EquipSetCreateHandler.cs.meta b/Client/Assets/Scripts/XMainClient/Equip/EquipSetCreateHandler.cs.meta
new file mode 100644
index 00000000..583f60eb
--- /dev/null
+++ b/Client/Assets/Scripts/XMainClient/Equip/EquipSetCreateHandler.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 06c6da9b3b799e841b41439cff9e9d20
+timeCreated: 1611402966
+licenseType: Free
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Client/Assets/Scripts/XMainClient/Equip/EquipSetHandler.cs b/Client/Assets/Scripts/XMainClient/Equip/EquipSetHandler.cs
new file mode 100644
index 00000000..c8bd3b8c
--- /dev/null
+++ b/Client/Assets/Scripts/XMainClient/Equip/EquipSetHandler.cs
@@ -0,0 +1,561 @@
+using System;
+using System.Collections.Generic;
+using UILib;
+using UnityEngine;
+using XMainClient.UI;
+using XMainClient.UI.UICommon;
+using XUtliPoolLib;
+
+namespace XMainClient
+{
+ internal class EquipSetHandler : DlgHandlerBase
+ {
+ private IXUIWrapContent mItemListWrapContent;
+
+ private IXUIScrollView mItemListScrollView;
+
+ private IXUICheckBox mCurItemType2nd;
+
+ private IXUITable mItemTypeTable;
+
+ private IXUIScrollView mItemTypeScrollView;
+
+ private IXUICheckBox m_levelCheck;
+
+ private XUIPool mItemType1stPool = new XUIPool(XSingleton<XGameUI>.singleton.m_uiTool);
+
+ private XUIPool mItemType2ndPool = new XUIPool(XSingleton<XGameUI>.singleton.m_uiTool);
+
+ private Dictionary<int, GameObject> mQualityRedpointDic;
+
+ private Dictionary<int, GameObject> mEquipSuitIDRedpointDic;
+
+ private XEquipCreateDocument mDoc;
+
+ private XPurchaseDocument mPurchaseDoc;
+
+ private int mSelectLevel = 0;
+
+ public EquipSetProfHandler equipSetProfHandler;
+
+ private GameObject equipSetProfFrame;
+
+ private string mNoLevelLimitString;
+
+ protected override void Init()
+ {
+ base.Init();
+ this.mCurItemType2nd = null;
+ this.mDoc = XEquipCreateDocument.Doc;
+ this.mPurchaseDoc = XDocuments.GetSpecificDocument<XPurchaseDocument>(XPurchaseDocument.uuID);
+ this._InitItemType();
+ this._InitItemList();
+ this.equipSetProfFrame = base.PanelObject.transform.Find("EquipSetProfFrame").gameObject;
+ DlgHandlerBase.EnsureCreate<EquipSetProfHandler>(ref this.equipSetProfHandler, this.equipSetProfFrame, null, false);
+ this.m_levelCheck = (base.PanelObject.transform.Find("BtnHighPress").GetComponent("XUICheckBox") as IXUICheckBox);
+ this.mNoLevelLimitString = XStringDefineProxy.GetString("EQUIPCREATE_EQUIPSET_NO_LEVEL_LIMIT");
+ this.mDoc.RefreshEquipSuitListUIByProf(this.mDoc.CurRoleProf, false);
+ this.mQualityRedpointDic = new Dictionary<int, GameObject>();
+ this.mEquipSuitIDRedpointDic = new Dictionary<int, GameObject>();
+ this.mSelectLevel = this.mDoc.CurShowLevel(XSingleton<XAttributeMgr>.singleton.XPlayerData.Level, -1);
+ }
+
+ public override void RegisterEvent()
+ {
+ base.Init();
+ IXUISprite ixuisprite = base.PanelObject.transform.Find("Prof/Bg").GetComponent("XUISprite") as IXUISprite;
+ ixuisprite.RegisterSpriteClickEventHandler(new SpriteClickEventHandler(this.OnClickProfMenuSelect));
+ this.m_levelCheck.RegisterOnCheckEventHandler(new CheckBoxOnCheckEventHandler(this.OnLevelCheckClicked));
+ }
+
+ public override void StackRefresh()
+ {
+ this.mDoc.RefreshEquipSuitListUIByLevel(this.mSelectLevel, true);
+ this.RefreshItemType();
+ this.RefreshRedPoint();
+ base.StackRefresh();
+ }
+
+ protected override void OnShow()
+ {
+ base.OnShow();
+ this.mDoc.RefreshEquipSuitListUIByLevel(this.mSelectLevel, true);
+ this.RefreshItemType();
+ this.RefreshRedPoint();
+ }
+
+ protected override void OnHide()
+ {
+ base.OnHide();
+ base.PanelObject.SetActive(false);
+ }
+
+ public override void OnUnload()
+ {
+ this.mEquipSuitIDRedpointDic.Clear();
+ this.mEquipSuitIDRedpointDic = null;
+ this.mQualityRedpointDic.Clear();
+ this.mQualityRedpointDic = null;
+ DlgHandlerBase.EnsureUnload<EquipSetProfHandler>(ref this.equipSetProfHandler);
+ this.equipSetProfFrame = null;
+ this.mDoc = null;
+ this.mPurchaseDoc = null;
+ this.mCurItemType2nd = null;
+ base.OnUnload();
+ }
+
+ public void RefreshRedPoint()
+ {
+ bool flag = !base.IsVisible() || 0 >= this.mItemType1stPool.ActiveCount;
+ if (!flag)
+ {
+ List<EquipSuitMenuData> updateItemTypeList = this.mDoc.GetUpdateItemTypeList(true);
+ foreach (KeyValuePair<int, GameObject> keyValuePair in this.mQualityRedpointDic)
+ {
+ keyValuePair.Value.SetActive(false);
+ }
+ foreach (KeyValuePair<int, GameObject> keyValuePair2 in this.mEquipSuitIDRedpointDic)
+ {
+ keyValuePair2.Value.SetActive(false);
+ }
+ for (int i = 0; i < updateItemTypeList.Count; i++)
+ {
+ GameObject gameObject = null;
+ bool flag2 = this.mQualityRedpointDic.TryGetValue(updateItemTypeList[i].quality, out gameObject);
+ if (flag2)
+ {
+ gameObject.SetActive(updateItemTypeList[i].redpoint);
+ }
+ for (int j = 0; j < updateItemTypeList[i].list.Count; j++)
+ {
+ GameObject gameObject2 = null;
+ bool flag3 = this.mEquipSuitIDRedpointDic.TryGetValue(updateItemTypeList[i].list[j].suitData.SuitID, out gameObject2);
+ if (flag3)
+ {
+ gameObject2.SetActive(updateItemTypeList[i].list[j].redpoint);
+ }
+ }
+ }
+ }
+ }
+
+ public void RefreshItemList(List<EquipSuitItemData> _uiList)
+ {
+ bool flag = !base.IsVisible() || _uiList == null;
+ if (!flag)
+ {
+ this.mItemListWrapContent.SetContentCount(_uiList.Count, false);
+ this.mItemListScrollView.ResetPosition();
+ }
+ }
+
+ public void RefreshItemList()
+ {
+ bool flag = !base.IsVisible();
+ if (!flag)
+ {
+ bool flag2 = this.mCurItemType2nd != null;
+ if (flag2)
+ {
+ this.OnClickItemType2nd(this.mCurItemType2nd);
+ }
+ }
+ }
+
+ public void RefreshItemType()
+ {
+ bool flag = !base.IsVisible();
+ if (!flag)
+ {
+ List<EquipSuitMenuData> updateItemTypeList = this.mDoc.GetUpdateItemTypeList(true);
+ bool flag2 = updateItemTypeList == null;
+ if (flag2)
+ {
+ this.RefreshItemList();
+ }
+ else
+ {
+ List<EquipSuitMenuData> list = new List<EquipSuitMenuData>();
+ for (int i = 0; i < updateItemTypeList.Count; i++)
+ {
+ bool show = updateItemTypeList[i].show;
+ if (show)
+ {
+ list.Add(updateItemTypeList[i]);
+ }
+ }
+ this.mEquipSuitIDRedpointDic.Clear();
+ this.mQualityRedpointDic.Clear();
+ this.mItemType1stPool.ReturnAll(false);
+ this.mItemType2ndPool.ReturnAll(true);
+ this.mCurItemType2nd = null;
+ bool flag3 = true;
+ bool flag4 = true;
+ for (int j = 0; j < list.Count; j++)
+ {
+ GameObject gameObject = this.mItemType1stPool.FetchGameObject(false);
+ gameObject.name = list[j].quality.ToString();
+ this.mQualityRedpointDic[list[j].quality] = gameObject.transform.Find("RedPoint").gameObject;
+ GameObject gameObject2 = gameObject.transform.Find("UnSelectLab").gameObject;
+ GameObject gameObject3 = gameObject.transform.Find("SelectLab").gameObject;
+ IXUISprite ixuisprite = gameObject.transform.Find("Switch").GetComponent("XUISprite") as IXUISprite;
+ ixuisprite.RegisterSpriteClickEventHandler(new SpriteClickEventHandler(this.OnClickItemType1st));
+ IXUISprite ixuisprite2 = gameObject.transform.Find("P").GetComponent("XUISprite") as IXUISprite;
+ bool flag5 = ixuisprite2 != null;
+ if (flag5)
+ {
+ ixuisprite2.spriteName = XSingleton<UiUtility>.singleton.GetItemQualityIcon(list[j].quality);
+ }
+ Transform transform = gameObject.transform.Find("ChildList");
+ bool flag6 = 0f == transform.localScale.y;
+ if (flag6)
+ {
+ ixuisprite.SetSprite("l_add_01");
+ IXUITweenTool ixuitweenTool = ixuisprite.gameObject.GetComponent("XUIPlayTween") as IXUITweenTool;
+ ixuitweenTool.PlayTween(true, -1f);
+ }
+ bool flag7 = flag3;
+ if (flag7)
+ {
+ flag3 = false;
+ }
+ List<EquipSuitMenuDataItem> list2 = new List<EquipSuitMenuDataItem>();
+ for (int k = 0; k < list[j].list.Count; k++)
+ {
+ bool show2 = list[j].list[k].show;
+ if (show2)
+ {
+ list2.Add(list[j].list[k]);
+ }
+ }
+ for (int l = 0; l < list2.Count; l++)
+ {
+ GameObject gameObject4 = this.mItemType2ndPool.FetchGameObject(false);
+ gameObject4.name = list2[l].suitData.SuitID.ToString();
+ this.mEquipSuitIDRedpointDic[list2[l].suitData.SuitID] = gameObject4.transform.Find("RedPoint").gameObject;
+ IXUICheckBox ixuicheckBox = gameObject4.GetComponent("XUICheckBox") as IXUICheckBox;
+ ixuicheckBox.ID = (ulong)((long)list2[l].suitData.SuitID);
+ ixuicheckBox.RegisterOnCheckEventHandler(new CheckBoxOnCheckEventHandler(this.OnClickItemType2nd));
+ gameObject4.transform.parent = transform;
+ gameObject4.transform.localScale = Vector3.one;
+ gameObject4.transform.localPosition = new Vector3(0f, -((float)transform.childCount - 0.5f) * (float)ixuicheckBox.spriteHeight, 0f);
+ IXUILabel ixuilabel = gameObject4.transform.Find("SelectLab").GetComponent("XUILabel") as IXUILabel;
+ ixuilabel.SetText(list2[l].suitData.SuitName);
+ IXUILabel ixuilabel2 = gameObject4.transform.Find("UnSelectLab").GetComponent("XUILabel") as IXUILabel;
+ ixuilabel2.SetText(list2[l].suitData.SuitName);
+ ixuicheckBox.ForceSetFlag(false);
+ bool flag8 = l == list2.Count - 1 && !flag3 && flag4;
+ if (flag8)
+ {
+ flag4 = false;
+ this.mCurItemType2nd = ixuicheckBox;
+ ixuicheckBox.ForceSetFlag(true);
+ this.RefreshItemList();
+ ixuilabel.gameObject.SetActive(true);
+ ixuilabel2.gameObject.SetActive(false);
+ gameObject3.SetActive(true);
+ gameObject2.SetActive(false);
+ }
+ else
+ {
+ ixuicheckBox.ForceSetFlag(false);
+ ixuilabel2.gameObject.SetActive(true);
+ ixuilabel.gameObject.SetActive(false);
+ gameObject2.SetActive(true);
+ gameObject3.SetActive(false);
+ }
+ }
+ }
+ this.mItemTypeTable.RePositionNow();
+ }
+ this.RefreshRedPoint();
+ }
+ }
+
+ private void OnClickItemType1st(IXUISprite sp)
+ {
+ bool flag = sp.spriteName == "l_add_00";
+ if (flag)
+ {
+ sp.SetSprite("l_add_01");
+ }
+ else
+ {
+ sp.SetSprite("l_add_00");
+ }
+ }
+
+ private bool OnClickItemType2nd(IXUICheckBox cb)
+ {
+ bool flag = !cb.bChecked;
+ bool result;
+ if (flag)
+ {
+ result = false;
+ }
+ else
+ {
+ bool flag2 = this.mCurItemType2nd != null;
+ if (flag2)
+ {
+ this.SetSelectStatus(false);
+ }
+ this.mCurItemType2nd = cb;
+ this.SetSelectStatus(true);
+ List<EquipSuitItemData> updateRefreshEquipSuitList = this.mDoc.GetUpdateRefreshEquipSuitList((int)cb.ID);
+ this.RefreshItemList(updateRefreshEquipSuitList);
+ result = true;
+ }
+ return result;
+ }
+
+ private void SetSelectStatus(bool isSelected)
+ {
+ this.mCurItemType2nd.gameObject.transform.Find("UnSelectLab").gameObject.SetActive(!isSelected);
+ this.mCurItemType2nd.gameObject.transform.Find("SelectLab").gameObject.SetActive(isSelected);
+ Transform parent = this.mCurItemType2nd.gameObject.transform.parent.parent;
+ parent.Find("UnSelectLab").gameObject.SetActive(!isSelected);
+ parent.Find("SelectLab").gameObject.SetActive(isSelected);
+ }
+
+ private void OnClickProfMenuSelect(IXUISprite _spr)
+ {
+ this.equipSetProfHandler.SetVisible(true);
+ }
+
+ private bool OnClickItemCreateButton(IXUIButton btn)
+ {
+ int num = (int)btn.ID;
+ ItemComposeTable.RowData itemConposeDataByID = XEquipCreateDocument.GetItemConposeDataByID(num);
+ bool flag = itemConposeDataByID != null;
+ if (flag)
+ {
+ this.mDoc.CurUid = 0UL;
+ int level = (int)XSingleton<XAttributeMgr>.singleton.XPlayerData.Level;
+ XRechargeDocument specificDocument = XDocuments.GetSpecificDocument<XRechargeDocument>(XRechargeDocument.uuID);
+ int vipLevel = (int)specificDocument.VipLevel;
+ bool flag2 = (long)itemConposeDataByID.Coin <= (long)XBagDocument.BagDoc.GetVirtualItemCount(ItemEnum.GOLD);
+ if (flag2)
+ {
+ VIPTable.RowData byVIP = specificDocument.VIPReader.GetByVIP(vipLevel);
+ ulong typeFilter = 1UL << XFastEnumIntEqualityComparer<ItemType>.ToInt(ItemType.EQUIP);
+ List<XItem> list = new List<XItem>();
+ XSingleton<XGame>.singleton.Doc.XBagDoc.GetItemsByType(typeFilter, ref list);
+ bool flag3 = (long)list.Count >= (long)((ulong)byVIP.EquipMax);
+ if (flag3)
+ {
+ XSingleton<UiUtility>.singleton.ShowSystemTip(XStringDefineProxy.GetString("EquipBagFull"), "fece00");
+ return true;
+ }
+ this.mDoc.IsBind = true;
+ DlgBase<EquipCreateDlg, TabDlgBehaviour>.singleton.equipSetCreateConfirmHandler.SetVisible(true);
+ DlgBase<EquipCreateDlg, TabDlgBehaviour>.singleton.equipSetCreateConfirmHandler.SetEquipInfo(num);
+ }
+ else
+ {
+ XPurchaseInfo purchaseInfo = this.mPurchaseDoc.GetPurchaseInfo(level, vipLevel, ItemEnum.GOLD);
+ bool flag4 = purchaseInfo.totalBuyNum > purchaseInfo.curBuyNum;
+ if (flag4)
+ {
+ DlgBase<XPurchaseView, XPurchaseBehaviour>.singleton.ReqQuickCommonPurchase(ItemEnum.GOLD);
+ XSingleton<UiUtility>.singleton.ShowSystemTip(XStringDefineProxy.GetString("SpriteLotteryGoldNotEnough"), "fece00");
+ }
+ else
+ {
+ XSingleton<UiUtility>.singleton.ShowSystemTip(XStringDefineProxy.GetString("EQUIPCREATE_COIN_CANNOT_EXCHANGE"), "fece00");
+ }
+ }
+ }
+ return true;
+ }
+
+ private bool OnClickGetNeedItemButton(IXUIButton btn)
+ {
+ XSingleton<UiUtility>.singleton.ShowItemAccess((int)btn.ID, null);
+ return true;
+ }
+
+ private void OnNeedItemClick(IXUISprite item)
+ {
+ XSingleton<UiUtility>.singleton.ShowItemAccess((int)item.ID, null);
+ }
+
+ private bool OnLevelCheckClicked(IXUICheckBox box)
+ {
+ this.mSelectLevel = (this.m_levelCheck.bChecked ? this.mDoc.CurShowLevel(XSingleton<XAttributeMgr>.singleton.XPlayerData.Level, -1) : 0);
+ this.mDoc.RefreshEquipSuitListUIByLevel(this.mSelectLevel, true);
+ return true;
+ }
+
+ private void _InitItemList()
+ {
+ Transform transform = base.PanelObject.transform.Find("ItemList");
+ this.mItemListScrollView = (transform.GetComponent("XUIScrollView") as IXUIScrollView);
+ transform = transform.Find("WrapContent");
+ this.mItemListWrapContent = (transform.GetComponent("XUIWrapContent") as IXUIWrapContent);
+ this.mItemListWrapContent.RegisterItemUpdateEventHandler(new WrapItemUpdateEventHandler(this._RankWrapItemListUpdated));
+ }
+
+ private void _InitItemType()
+ {
+ Transform transform = base.PanelObject.transform.Find("TypeList");
+ this.mItemTypeScrollView = (transform.GetComponent("XUIScrollView") as IXUIScrollView);
+ transform = transform.Find("Table");
+ this.mItemTypeTable = (transform.GetComponent("XUITable") as IXUITable);
+ transform = base.PanelObject.transform.Find("TypeList/Table/LevelOneTpl");
+ this.mItemType1stPool.SetupPool(transform.parent.gameObject, transform.gameObject, 6u, false);
+ transform = base.PanelObject.transform.Find("TypeList/Table/LevelTwoTpl");
+ this.mItemType2ndPool.SetupPool(transform.parent.gameObject, transform.gameObject, 16u, false);
+ }
+
+ private bool _RankWrapItemListUpdatedNeedItem(GameObject _goItem, IXUILabel _lbCount, int _SrcItem0, int _SrcItem1)
+ {
+ _goItem.SetActive(true);
+ ulong num = (ulong)((long)_SrcItem1);
+ ulong itemCount = XBagDocument.BagDoc.GetItemCount(_SrcItem0);
+ XSingleton<XItemDrawerMgr>.singleton.normalItemDrawer.DrawItem(_goItem, _SrcItem0, 0, false);
+ IXUISprite ixuisprite = _goItem.transform.Find("Icon").GetComponent("XUISprite") as IXUISprite;
+ ixuisprite.ID = (ulong)((long)_SrcItem0);
+ ixuisprite.RegisterSpriteClickEventHandler(new SpriteClickEventHandler(this.OnNeedItemClick));
+ bool flag = itemCount >= num;
+ bool result;
+ if (flag)
+ {
+ _lbCount.SetText(string.Format("[{0}]{1}/{2}[-]", XStringDefineProxy.GetString("ZongColor"), itemCount, num));
+ result = true;
+ }
+ else
+ {
+ _lbCount.SetText(string.Format("[{0}]{1}[-][{2}]/{3}[-]", new object[]
+ {
+ XStringDefineProxy.GetString("NotEnoughColor"),
+ itemCount,
+ XStringDefineProxy.GetString("ZongColor"),
+ num
+ }));
+ result = false;
+ }
+ return result;
+ }
+
+ private void _RankWrapItemListUpdated(Transform t, int index)
+ {
+ EquipSuitItemData equipSuitListItem = this.mDoc.GetEquipSuitListItem(index);
+ t.name = index.ToString();
+ EquipSetItemView equipSetItemView = new EquipSetItemView();
+ equipSetItemView.FindFrom(t);
+ ItemList.RowData itemConf = XBagDocument.GetItemConf(equipSuitListItem.itemData.ItemID);
+ bool isBind = equipSuitListItem.itemComposeData.IsBind;
+ bool flag = !itemConf.CanTrade;
+ if (flag)
+ {
+ isBind = true;
+ }
+ EquipSetItemBaseView.stEquipInfoParam param;
+ param.isShowTooltip = true;
+ param.playerProf = this.mDoc.CurRoleProf;
+ equipSetItemView.SetItemInfo(equipSuitListItem.itemData.ItemID, param, isBind);
+ equipSetItemView.lbLevel.SetText(this._GetLevelString(equipSuitListItem.itemComposeData.Level));
+ bool flag2 = true;
+ int num = -1;
+ bool flag3 = equipSuitListItem.itemComposeData.SrcItem1[0] <= 0;
+ if (flag3)
+ {
+ equipSetItemView.goItem1.SetActive(false);
+ }
+ else
+ {
+ bool flag4 = this._RankWrapItemListUpdatedNeedItem(equipSetItemView.goItem1, equipSetItemView.lbItemCount1, equipSuitListItem.itemComposeData.SrcItem1[0], equipSuitListItem.itemComposeData.SrcItem1[1]);
+ flag2 = (flag2 && flag4);
+ bool flag5 = !flag4;
+ if (flag5)
+ {
+ num = equipSuitListItem.itemComposeData.SrcItem1[0];
+ }
+ }
+ bool flag6 = equipSuitListItem.itemComposeData.SrcItem2[1] <= 0;
+ if (flag6)
+ {
+ equipSetItemView.goItem2.SetActive(false);
+ }
+ else
+ {
+ bool flag4 = this._RankWrapItemListUpdatedNeedItem(equipSetItemView.goItem2, equipSetItemView.lbItemCount2, equipSuitListItem.itemComposeData.SrcItem2[0], equipSuitListItem.itemComposeData.SrcItem2[1]);
+ flag2 = (flag2 && flag4);
+ bool flag7 = !flag4;
+ if (flag7)
+ {
+ num = equipSuitListItem.itemComposeData.SrcItem2[0];
+ }
+ }
+ bool flag8 = equipSuitListItem.itemComposeData.SrcItem3[1] <= 0;
+ if (flag8)
+ {
+ equipSetItemView.goItem3.SetActive(false);
+ }
+ else
+ {
+ bool flag4 = this._RankWrapItemListUpdatedNeedItem(equipSetItemView.goItem3, equipSetItemView.lbItemCount3, equipSuitListItem.itemComposeData.SrcItem3[0], equipSuitListItem.itemComposeData.SrcItem3[1]);
+ flag2 = (flag2 && flag4);
+ bool flag9 = !flag4;
+ if (flag9)
+ {
+ num = equipSuitListItem.itemComposeData.SrcItem3[0];
+ }
+ }
+ bool flag10 = 0 >= equipSuitListItem.itemComposeData.SrcItem4[1];
+ if (flag10)
+ {
+ equipSetItemView.goItem4.SetActive(false);
+ }
+ else
+ {
+ bool flag4 = this._RankWrapItemListUpdatedNeedItem(equipSetItemView.goItem4, equipSetItemView.lbItemCount4, equipSuitListItem.itemComposeData.SrcItem4[0], equipSuitListItem.itemComposeData.SrcItem4[1]);
+ flag2 = (flag2 && flag4);
+ bool flag11 = !flag4;
+ if (flag11)
+ {
+ num = equipSuitListItem.itemComposeData.SrcItem4[0];
+ }
+ }
+ bool flag12 = equipSuitListItem.itemComposeData.Coin > 0;
+ if (flag12)
+ {
+ equipSetItemView.lbCost.SetText(equipSuitListItem.itemComposeData.Coin.ToString());
+ }
+ else
+ {
+ equipSetItemView.lbCost.SetText("0");
+ }
+ bool flag13 = flag2;
+ if (flag13)
+ {
+ equipSetItemView.btnCreate.SetEnable(true, false);
+ equipSetItemView.btnCreate.ID = (ulong)((long)equipSuitListItem.itemComposeData.ID);
+ equipSetItemView.btnCreate.RegisterClickEventHandler(new ButtonClickEventHandler(this.OnClickItemCreateButton));
+ }
+ else
+ {
+ equipSetItemView.btnCreate.SetEnable(true, false);
+ equipSetItemView.btnCreate.ID = (ulong)((long)num);
+ equipSetItemView.btnCreate.RegisterClickEventHandler(new ButtonClickEventHandler(this.OnClickGetNeedItemButton));
+ }
+ equipSetItemView.goRedpoint.SetActive(equipSuitListItem.redpoint);
+ }
+
+ private string _GetLevelString(int _level)
+ {
+ bool flag = _level > 0;
+ string result;
+ if (flag)
+ {
+ result = _level.ToString();
+ }
+ else
+ {
+ result = this.mNoLevelLimitString;
+ }
+ return result;
+ }
+ }
+}
diff --git a/Client/Assets/Scripts/XMainClient/Equip/EquipSetHandler.cs.meta b/Client/Assets/Scripts/XMainClient/Equip/EquipSetHandler.cs.meta
new file mode 100644
index 00000000..1a028d00
--- /dev/null
+++ b/Client/Assets/Scripts/XMainClient/Equip/EquipSetHandler.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: f96d8eab6628e614196b9c9c0a1dc1e6
+timeCreated: 1611404899
+licenseType: Free
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Client/Assets/Scripts/XMainClient/Equip/EquipSetLevelHandler.cs b/Client/Assets/Scripts/XMainClient/Equip/EquipSetLevelHandler.cs
new file mode 100644
index 00000000..47e1c7e0
--- /dev/null
+++ b/Client/Assets/Scripts/XMainClient/Equip/EquipSetLevelHandler.cs
@@ -0,0 +1,162 @@
+using System;
+using System.Collections.Generic;
+using UILib;
+using UnityEngine;
+using XUtliPoolLib;
+
+namespace XMainClient
+{
+ internal class EquipSetLevelHandler : DlgHandlerBase
+ {
+ private XUIPool mLevelListPool = new XUIPool(XSingleton<XGameUI>.singleton.m_uiTool);
+
+ private IXUILabel mLbCurLevel;
+
+ private IXUIList mGrid;
+
+ private string mLevelFmt;
+
+ private XEquipCreateDocument mDoc;
+
+ private EquipSetLevelHandler._LevelGameObjectItem[] mLevelGoArr;
+
+ private class _LevelGameObjectItem
+ {
+ public GameObject go;
+
+ public int level;
+
+ public GameObject select;
+ }
+
+ protected override void Init()
+ {
+ base.Init();
+ this.mDoc = XEquipCreateDocument.Doc;
+ this.mLevelFmt = XStringDefineProxy.GetString("EQUIPCREATE_EQUIPSET_LEVEL_FMT");
+ Transform transform = base.PanelObject.transform.Find("Grid/LevelTpl");
+ this.mLevelListPool.SetupPool(transform.parent.gameObject, transform.gameObject, 10u, false);
+ transform = base.PanelObject.transform.parent.Find("Level/V");
+ this.mLbCurLevel = (transform.GetComponent("XUILabel") as IXUILabel);
+ transform = base.PanelObject.transform.Find("Grid");
+ this.mGrid = (transform.GetComponent("XUIList") as IXUIList);
+ List<int> updateItemLevelList = this.mDoc.GetUpdateItemLevelList();
+ bool flag = updateItemLevelList == null || updateItemLevelList.Count <= 0;
+ if (!flag)
+ {
+ this.mLevelGoArr = new EquipSetLevelHandler._LevelGameObjectItem[updateItemLevelList.Count];
+ bool flag2 = false;
+ int level = (int)XSingleton<XAttributeMgr>.singleton.XPlayerData.Level;
+ for (int i = 0; i < updateItemLevelList.Count; i++)
+ {
+ this.mLevelGoArr[i] = new EquipSetLevelHandler._LevelGameObjectItem();
+ this.mLevelGoArr[i].go = this._CreateLevelMenuItem(updateItemLevelList[i]);
+ this.mLevelGoArr[i].level = updateItemLevelList[i];
+ this.mLevelGoArr[i].select = this.mLevelGoArr[i].go.transform.Find("Selected").gameObject;
+ bool flag3 = flag2;
+ if (flag3)
+ {
+ this.mLevelGoArr[i].select.SetActive(false);
+ }
+ else
+ {
+ flag2 = (this.mLevelGoArr[i].level <= level && this.mLevelGoArr[i].level != 0);
+ this.mLevelGoArr[i].select.SetActive(flag2);
+ bool flag4 = flag2;
+ if (flag4)
+ {
+ this.mLbCurLevel.SetText(this._GetLevelText(this.mLevelGoArr[i].level));
+ this.mDoc.RefreshEquipSuitListUIByLevel(this.mLevelGoArr[i].level, false);
+ }
+ }
+ }
+ bool flag5 = !flag2;
+ if (flag5)
+ {
+ this.mLevelGoArr[0].select.SetActive(true);
+ }
+ }
+ }
+
+ public override void RegisterEvent()
+ {
+ base.Init();
+ IXUISprite ixuisprite = base.PanelObject.transform.Find("Block").GetComponent("XUISprite") as IXUISprite;
+ ixuisprite.RegisterSpriteClickEventHandler(new SpriteClickEventHandler(this.OnClickBlockCollider));
+ }
+
+ private string _GetLevelText(int _level)
+ {
+ bool flag = _level > 0;
+ string result;
+ if (flag)
+ {
+ result = string.Format(this.mLevelFmt, _level);
+ }
+ else
+ {
+ result = XStringDefineProxy.GetString("ALL");
+ }
+ return result;
+ }
+
+ private GameObject _CreateLevelMenuItem(int _level)
+ {
+ GameObject gameObject = this.mLevelListPool.FetchGameObject(false);
+ gameObject.name = _level.ToString();
+ IXUISprite ixuisprite = gameObject.GetComponent("XUISprite") as IXUISprite;
+ ixuisprite.ID = (ulong)((long)_level);
+ ixuisprite.RegisterSpriteClickEventHandler(new SpriteClickEventHandler(this.OnClickLevelMenuItem));
+ IXUILabel ixuilabel = gameObject.transform.Find("T").GetComponent("XUILabel") as IXUILabel;
+ ixuilabel.SetText(this._GetLevelText(_level));
+ return gameObject;
+ }
+
+ private void OnClickBlockCollider(IXUISprite _spr)
+ {
+ base.SetVisible(false);
+ }
+
+ private void OnClickLevelMenuItem(IXUISprite _cb)
+ {
+ base.SetVisible(false);
+ int num = (int)_cb.ID;
+ for (int i = 0; i < this.mLevelGoArr.Length; i++)
+ {
+ this.mLevelGoArr[i].select.SetActive(num == this.mLevelGoArr[i].level);
+ }
+ this.mLbCurLevel.SetText(this._GetLevelText(num));
+ this.mDoc.RefreshEquipSuitListUIByLevel(num, true);
+ }
+
+ protected override void OnShow()
+ {
+ base.OnShow();
+ int level = (int)XSingleton<XAttributeMgr>.singleton.XPlayerData.Level;
+ int nextShowLevel = this.mDoc.NextShowLevel;
+ int num = 0;
+ for (int i = 0; i < this.mLevelGoArr.Length; i++)
+ {
+ bool flag = this.mLevelGoArr[i].level == 0 || level >= this.mLevelGoArr[i].level || this.mLevelGoArr[i].level == nextShowLevel;
+ if (flag)
+ {
+ this.mLevelGoArr[i].go.SetActive(true);
+ this.mLevelGoArr[i].go.transform.localPosition = new Vector3(0f, (float)(-(float)num * this.mLevelListPool.TplHeight), 0f);
+ num++;
+ }
+ else
+ {
+ this.mLevelGoArr[i].go.SetActive(false);
+ }
+ }
+ }
+
+ public override void OnUnload()
+ {
+ this.mDoc = null;
+ this.mLevelFmt = null;
+ this.mLevelGoArr = null;
+ base.OnUnload();
+ }
+ }
+}
diff --git a/Client/Assets/Scripts/XMainClient/Equip/EquipSetLevelHandler.cs.meta b/Client/Assets/Scripts/XMainClient/Equip/EquipSetLevelHandler.cs.meta
new file mode 100644
index 00000000..26697b1b
--- /dev/null
+++ b/Client/Assets/Scripts/XMainClient/Equip/EquipSetLevelHandler.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 84d015dfb9290d64da47e11cfdc8da82
+timeCreated: 1611404049
+licenseType: Free
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Client/Assets/Scripts/XMainClient/Equip/EquipSetProfHandler.cs b/Client/Assets/Scripts/XMainClient/Equip/EquipSetProfHandler.cs
new file mode 100644
index 00000000..42997846
--- /dev/null
+++ b/Client/Assets/Scripts/XMainClient/Equip/EquipSetProfHandler.cs
@@ -0,0 +1,126 @@
+using System;
+using System.Collections.Generic;
+using UILib;
+using UnityEngine;
+using XUtliPoolLib;
+
+namespace XMainClient
+{
+ internal class EquipSetProfHandler : DlgHandlerBase
+ {
+ private XUIPool mProfListPool = new XUIPool(XSingleton<XGameUI>.singleton.m_uiTool);
+
+ private IXUILabel mLbCurProf;
+
+ private IXUIList mGrid;
+
+ private XEquipCreateDocument mDoc;
+
+ private EquipSetProfHandler._ProfGameObjectItem[] mProfGoArr;
+
+ private class _ProfGameObjectItem
+ {
+ public int prof;
+
+ public GameObject select;
+ }
+
+ protected override void Init()
+ {
+ base.Init();
+ this.mDoc = XEquipCreateDocument.Doc;
+ Transform transform = base.PanelObject.transform.Find("Grid/ProfTpl");
+ this.mProfListPool.SetupPool(transform.parent.gameObject, transform.gameObject, 6u, false);
+ transform = base.PanelObject.transform.parent.Find("Prof/V");
+ this.mLbCurProf = (transform.GetComponent("XUILabel") as IXUILabel);
+ transform = base.PanelObject.transform.Find("Grid");
+ this.mGrid = (transform.GetComponent("XUIList") as IXUIList);
+ List<ProfSkillTable.RowData> mainProfList = this.mDoc.GetMainProfList();
+ bool flag = mainProfList == null || mainProfList.Count <= 0 || mainProfList.Count < XGame.RoleCount;
+ if (!flag)
+ {
+ this.mProfGoArr = new EquipSetProfHandler._ProfGameObjectItem[XGame.RoleCount];
+ int curRoleProf = this.mDoc.CurRoleProf;
+ bool flag2 = false;
+ for (int i = 0; i < XGame.RoleCount; i++)
+ {
+ GameObject gameObject = this._CreateProfMenuItem(mainProfList[i].ProfID, mainProfList[i].ProfName);
+ this.mProfGoArr[i] = new EquipSetProfHandler._ProfGameObjectItem();
+ this.mProfGoArr[i].prof = mainProfList[i].ProfID;
+ this.mProfGoArr[i].select = gameObject.transform.Find("Selected").gameObject;
+ bool flag3 = flag2;
+ if (flag3)
+ {
+ this.mProfGoArr[i].select.SetActive(false);
+ }
+ else
+ {
+ flag2 = (curRoleProf == this.mProfGoArr[i].prof);
+ this.mProfGoArr[i].select.SetActive(flag2);
+ bool flag4 = flag2;
+ if (flag4)
+ {
+ this.mLbCurProf.SetText(this.mDoc.GetMainProfByID(curRoleProf).ProfName);
+ this.mDoc.RefreshEquipSuitListUIByProf(curRoleProf, false);
+ }
+ }
+ }
+ this.mGrid.Refresh();
+ }
+ }
+
+ public override void RegisterEvent()
+ {
+ base.Init();
+ IXUISprite ixuisprite = base.PanelObject.transform.Find("Block").GetComponent("XUISprite") as IXUISprite;
+ ixuisprite.RegisterSpriteClickEventHandler(new SpriteClickEventHandler(this.OnClickBlockCollider));
+ }
+
+ private GameObject _CreateProfMenuItem(int _profID, string _profName)
+ {
+ GameObject gameObject = this.mProfListPool.FetchGameObject(false);
+ gameObject.name = _profID.ToString();
+ IXUISprite ixuisprite = gameObject.GetComponent("XUISprite") as IXUISprite;
+ ixuisprite.ID = (ulong)((long)_profID);
+ ixuisprite.RegisterSpriteClickEventHandler(new SpriteClickEventHandler(this.OnClickProfMenuItem));
+ IXUILabel ixuilabel = gameObject.transform.Find("T").GetComponent("XUILabel") as IXUILabel;
+ ixuilabel.SetText(_profName);
+ return gameObject;
+ }
+
+ private void OnClickBlockCollider(IXUISprite _spr)
+ {
+ base.SetVisible(false);
+ }
+
+ private void OnClickProfMenuItem(IXUISprite _cb)
+ {
+ base.SetVisible(false);
+ int num = (int)_cb.ID;
+ for (int i = 0; i < this.mProfGoArr.Length; i++)
+ {
+ this.mProfGoArr[i].select.SetActive(num == this.mProfGoArr[i].prof);
+ }
+ this.mLbCurProf.SetText(this.mDoc.GetMainProfByID(num).ProfName);
+ this.mDoc.RefreshEquipSuitListUIByProf(num, true);
+ }
+
+ protected override void OnShow()
+ {
+ base.OnShow();
+ }
+
+ protected override void OnHide()
+ {
+ base.OnHide();
+ base.PanelObject.SetActive(false);
+ }
+
+ public override void OnUnload()
+ {
+ this.mDoc = null;
+ this.mProfGoArr = null;
+ base.OnUnload();
+ }
+ }
+}
diff --git a/Client/Assets/Scripts/XMainClient/Equip/EquipSetProfHandler.cs.meta b/Client/Assets/Scripts/XMainClient/Equip/EquipSetProfHandler.cs.meta
new file mode 100644
index 00000000..1c35496c
--- /dev/null
+++ b/Client/Assets/Scripts/XMainClient/Equip/EquipSetProfHandler.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 6f158719231d40442836e3983205ed2f
+timeCreated: 1611403908
+licenseType: Free
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Client/Assets/Scripts/XMainClient/Equip/EquipSetWearingHandler.cs b/Client/Assets/Scripts/XMainClient/Equip/EquipSetWearingHandler.cs
new file mode 100644
index 00000000..e362a48a
--- /dev/null
+++ b/Client/Assets/Scripts/XMainClient/Equip/EquipSetWearingHandler.cs
@@ -0,0 +1,130 @@
+using System;
+using UILib;
+using UnityEngine;
+using XMainClient.UI;
+using XMainClient.UI.UICommon;
+using XUtliPoolLib;
+
+namespace XMainClient
+{
+ internal class EquipSetWearingHandler : DlgHandlerBase
+ {
+ protected override string FileName
+ {
+ get
+ {
+ return "ItemNew/WearingPanel";
+ }
+ }
+
+ private IXUIButton m_Help;
+
+ private IXUIButton m_Close;
+
+ private IXUISprite m_ClothFashion;
+
+ private IXUISprite m_ClothEquip;
+
+ private IXUISprite m_WeaponFashion;
+
+ private IXUISprite m_weaponEquip;
+
+ private Transform m_SettingPanel;
+
+ protected override void Init()
+ {
+ base.Init();
+ this.m_SettingPanel = base.transform.Find("Panel");
+ this.m_Close = (base.transform.Find("Panel/Close").GetComponent("XUIButton") as IXUIButton);
+ this.m_ClothFashion = (base.transform.Find("Panel/Cloth_fishion").GetComponent("XUISprite") as IXUISprite);
+ this.m_ClothEquip = (base.transform.Find("Panel/Cloth_equip").GetComponent("XUISprite") as IXUISprite);
+ this.m_weaponEquip = (base.transform.Find("Panel/Weapon_equip").GetComponent("XUISprite") as IXUISprite);
+ this.m_WeaponFashion = (base.transform.Find("Panel/Weapon_fashion").GetComponent("XUISprite") as IXUISprite);
+ this.m_Help = (base.transform.Find("Help").GetComponent("XUIButton") as IXUIButton);
+ }
+
+ public override void OnUnload()
+ {
+ }
+
+ public override void RegisterEvent()
+ {
+ base.RegisterEvent();
+ this.m_Close.RegisterClickEventHandler(new ButtonClickEventHandler(this.ClickCloseHandler));
+ this.m_ClothFashion.RegisterSpriteClickEventHandler(new SpriteClickEventHandler(this.ClickClothFashionHandler));
+ this.m_ClothEquip.RegisterSpriteClickEventHandler(new SpriteClickEventHandler(this.ClickClothEquipHandler));
+ this.m_WeaponFashion.RegisterSpriteClickEventHandler(new SpriteClickEventHandler(this.ClickWeaponFashionHandler));
+ this.m_weaponEquip.RegisterSpriteClickEventHandler(new SpriteClickEventHandler(this.ClickWeaponEquipHandler));
+ this.m_Help.RegisterClickEventHandler(new ButtonClickEventHandler(this.OnHelpClicked));
+ }
+
+ public override void UnRegisterEvent()
+ {
+ this.m_Close.RegisterClickEventHandler(null);
+ this.m_ClothFashion.RegisterSpriteClickEventHandler(null);
+ this.m_ClothEquip.RegisterSpriteClickEventHandler(null);
+ this.m_WeaponFashion.RegisterSpriteClickEventHandler(null);
+ this.m_weaponEquip.RegisterSpriteClickEventHandler(null);
+ }
+
+ public bool OnHelpClicked(IXUIButton button)
+ {
+ DlgBase<XCommonHelpTipView, XCommonHelpTipBehaviour>.singleton.ShowHelp(XSysDefine.XSys_Item_Equip);
+ return true;
+ }
+
+ protected override void OnShow()
+ {
+ base.OnShow();
+ this.RefreshData();
+ }
+
+ protected override void OnHide()
+ {
+ base.OnHide();
+ DlgBase<ItemSystemDlg, TabDlgBehaviour>.singleton.OnPopHandlerSetVisible(false, null);
+ }
+
+ public override void RefreshData()
+ {
+ base.RefreshData();
+ this.m_SettingPanel.gameObject.SetActive(true);
+ }
+
+ private void SetStateSprite(IXUISprite sprite, bool visible)
+ {
+ IXUISprite ixuisprite = sprite.gameObject.transform.Find("Sprite").GetComponent("XUISprite") as IXUISprite;
+ bool flag = ixuisprite == null;
+ if (flag)
+ {
+ XSingleton<XDebug>.singleton.AddErrorLog(XSingleton<XCommon>.singleton.StringCombine("State XUISprite is NULL", sprite.gameObject.name), null, null, null, null, null);
+ }
+ else
+ {
+ ixuisprite.SetAlpha((float)(visible ? 1 : 0));
+ }
+ }
+
+ private void ClickClothFashionHandler(IXUISprite sprite)
+ {
+ }
+
+ private void ClickClothEquipHandler(IXUISprite sprite)
+ {
+ }
+
+ private void ClickWeaponFashionHandler(IXUISprite sprite)
+ {
+ }
+
+ private void ClickWeaponEquipHandler(IXUISprite sprite)
+ {
+ }
+
+ private bool ClickCloseHandler(IXUIButton btn)
+ {
+ base.SetVisible(false);
+ return true;
+ }
+ }
+}
diff --git a/Client/Assets/Scripts/XMainClient/Equip/EquipSetWearingHandler.cs.meta b/Client/Assets/Scripts/XMainClient/Equip/EquipSetWearingHandler.cs.meta
new file mode 100644
index 00000000..532545b7
--- /dev/null
+++ b/Client/Assets/Scripts/XMainClient/Equip/EquipSetWearingHandler.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 9a16c5b5c0837304cacb92b542e93279
+timeCreated: 1611404199
+licenseType: Free
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Client/Assets/Scripts/XMainClient/Equip/EquipSlotAttrData.cs b/Client/Assets/Scripts/XMainClient/Equip/EquipSlotAttrData.cs
new file mode 100644
index 00000000..c694adbf
--- /dev/null
+++ b/Client/Assets/Scripts/XMainClient/Equip/EquipSlotAttrData.cs
@@ -0,0 +1,93 @@
+using System;
+using System.Collections.Generic;
+using XUtliPoolLib;
+
+namespace XMainClient
+{
+ internal class EquipSlotAttrData
+ {
+ public uint Slot
+ {
+ get
+ {
+ return this.m_slot;
+ }
+ }
+
+ public List<EquipAttrData> AttrDataList
+ {
+ get
+ {
+ return this.m_attrDataList;
+ }
+ }
+
+ private uint m_slot = 0u;
+
+ private List<EquipAttrData> m_attrDataList;
+
+ public EquipSlotAttrData(uint slot)
+ {
+ this.m_slot = slot;
+ this.m_attrDataList = new List<EquipAttrData>();
+ }
+
+ public void Add(RandomAttributes.RowData row)
+ {
+ EquipAttrData equipAttrData = new EquipAttrData(row);
+ int index;
+ bool flag = this.FindIndex((uint)row.AttrID, out index);
+ if (flag)
+ {
+ this.m_attrDataList[index] = equipAttrData;
+ }
+ else
+ {
+ this.m_attrDataList.Add(equipAttrData);
+ }
+ }
+
+ public void Add(ForgeAttributes.RowData row)
+ {
+ EquipAttrData equipAttrData = new EquipAttrData(row);
+ int index;
+ bool flag = this.FindIndex((uint)row.AttrID, out index);
+ if (flag)
+ {
+ this.m_attrDataList[index] = equipAttrData;
+ }
+ else
+ {
+ this.m_attrDataList.Add(equipAttrData);
+ }
+ }
+
+ public EquipAttrData GetAttrData(uint attrId)
+ {
+ for (int i = 0; i < this.m_attrDataList.Count; i++)
+ {
+ bool flag = this.m_attrDataList[i].AttrId == attrId;
+ if (flag)
+ {
+ return this.m_attrDataList[i];
+ }
+ }
+ return null;
+ }
+
+ private bool FindIndex(uint attrId, out int index)
+ {
+ for (int i = 0; i < this.m_attrDataList.Count; i++)
+ {
+ bool flag = this.m_attrDataList[i].AttrId == attrId;
+ if (flag)
+ {
+ index = i;
+ return true;
+ }
+ }
+ index = 0;
+ return false;
+ }
+ }
+}
diff --git a/Client/Assets/Scripts/XMainClient/Equip/EquipSlotAttrData.cs.meta b/Client/Assets/Scripts/XMainClient/Equip/EquipSlotAttrData.cs.meta
new file mode 100644
index 00000000..7c82f605
--- /dev/null
+++ b/Client/Assets/Scripts/XMainClient/Equip/EquipSlotAttrData.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: f20ce4cfbe7a4494480d3c9e701a823d
+timeCreated: 1611404841
+licenseType: Free
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Client/Assets/Scripts/XMainClient/Equip/EquipSlotAttrDatas.cs b/Client/Assets/Scripts/XMainClient/Equip/EquipSlotAttrDatas.cs
new file mode 100644
index 00000000..189b3dc5
--- /dev/null
+++ b/Client/Assets/Scripts/XMainClient/Equip/EquipSlotAttrDatas.cs
@@ -0,0 +1,197 @@
+using System;
+using System.Collections.Generic;
+using XMainClient.UI;
+using XUtliPoolLib;
+
+namespace XMainClient
+{
+ internal class EquipSlotAttrDatas
+ {
+ public uint EquipId
+ {
+ get
+ {
+ return this.m_equipId;
+ }
+ }
+
+ private uint m_equipId = 0u;
+
+ private List<EquipSlotAttrData> m_slotDataList;
+
+ public EquipSlotAttrDatas(uint equipId)
+ {
+ this.m_equipId = equipId;
+ this.m_slotDataList = new List<EquipSlotAttrData>();
+ }
+
+ public void Add(RandomAttributes.RowData row)
+ {
+ for (int i = 0; i < this.m_slotDataList.Count; i++)
+ {
+ bool flag = this.m_slotDataList[i].Slot == (uint)row.Slot;
+ if (flag)
+ {
+ this.m_slotDataList[i].Add(row);
+ return;
+ }
+ }
+ EquipSlotAttrData equipSlotAttrData = new EquipSlotAttrData((uint)row.Slot);
+ equipSlotAttrData.Add(row);
+ this.m_slotDataList.Add(equipSlotAttrData);
+ }
+
+ public void Add(ForgeAttributes.RowData row)
+ {
+ for (int i = 0; i < this.m_slotDataList.Count; i++)
+ {
+ bool flag = this.m_slotDataList[i].Slot == (uint)row.Slot;
+ if (flag)
+ {
+ this.m_slotDataList[i].Add(row);
+ return;
+ }
+ }
+ EquipSlotAttrData equipSlotAttrData = new EquipSlotAttrData((uint)row.Slot);
+ equipSlotAttrData.Add(row);
+ this.m_slotDataList.Add(equipSlotAttrData);
+ }
+
+ public EquipAttrData GetAttrData(int slot, XItemChangeAttr attr)
+ {
+ return this.GetAttrData(slot, attr.AttrID);
+ }
+
+ public EquipAttrData GetAttrData(int slot, uint attrid)
+ {
+ for (int i = 0; i < this.m_slotDataList.Count; i++)
+ {
+ bool flag = (ulong)this.m_slotDataList[i].Slot == (ulong)((long)slot);
+ if (flag)
+ {
+ return this.m_slotDataList[i].GetAttrData(attrid);
+ }
+ }
+ return null;
+ }
+
+ public double GetPercentValue(int slot, XItemChangeAttr attr)
+ {
+ EquipAttrData attrData = this.GetAttrData(slot, attr);
+ bool flag = attrData == null;
+ double result;
+ if (flag)
+ {
+ result = 0.0;
+ }
+ else
+ {
+ result = attrData.GetPercentValue(attr.AttrValue);
+ }
+ return result;
+ }
+
+ public string GetColor(int slot, XItemChangeAttr attr)
+ {
+ EquipAttrData attrData = this.GetAttrData(slot, attr);
+ bool flag = attrData == null;
+ string result;
+ if (flag)
+ {
+ result = XSingleton<UiUtility>.singleton.GetItemQualityRGB(0);
+ }
+ else
+ {
+ result = attrData.GetColor(attr.AttrValue);
+ }
+ return result;
+ }
+
+ public EquipSlotAttrData GetAttrData(int slot)
+ {
+ for (int i = 0; i < this.m_slotDataList.Count; i++)
+ {
+ bool flag = (ulong)this.m_slotDataList[i].Slot == (ulong)((long)slot);
+ if (flag)
+ {
+ return this.m_slotDataList[i];
+ }
+ }
+ return null;
+ }
+
+ public static uint GetMinPPT(EquipSlotAttrDatas data, XAttributes attributes, bool isForge)
+ {
+ uint num = 0u;
+ bool flag = !isForge;
+ if (flag)
+ {
+ for (int i = 0; i < data.m_slotDataList.Count; i++)
+ {
+ uint num2 = uint.MaxValue;
+ EquipSlotAttrData equipSlotAttrData = data.m_slotDataList[i];
+ for (int j = 0; j < equipSlotAttrData.AttrDataList.Count; j++)
+ {
+ EquipAttrData equipAttrData = equipSlotAttrData.AttrDataList[j];
+ bool flag2 = equipAttrData.RangValue.Prob == 0u;
+ if (!flag2)
+ {
+ num2 = Math.Min(num2, (uint)XSingleton<XPowerPointCalculator>.singleton.GetPPT(equipAttrData.AttrId, (double)equipAttrData.RangValue.Min, attributes, -1));
+ }
+ }
+ bool flag3 = num2 == uint.MaxValue;
+ if (flag3)
+ {
+ num2 = 0u;
+ }
+ num += num2;
+ }
+ }
+ else
+ {
+ bool flag4 = data.m_slotDataList.Count == 0;
+ if (flag4)
+ {
+ }
+ num = uint.MaxValue;
+ EquipSlotAttrData equipSlotAttrData2 = data.m_slotDataList[0];
+ for (int k = 0; k < equipSlotAttrData2.AttrDataList.Count; k++)
+ {
+ EquipAttrData equipAttrData2 = equipSlotAttrData2.AttrDataList[k];
+ bool flag5 = equipAttrData2.RangValue.Prob == 0u;
+ if (!flag5)
+ {
+ num = Math.Min(num, (uint)XSingleton<XPowerPointCalculator>.singleton.GetPPT(equipAttrData2.AttrId, (double)equipAttrData2.RangValue.Min, attributes, -1));
+ }
+ }
+ bool flag6 = num == uint.MaxValue;
+ if (flag6)
+ {
+ num = 0u;
+ }
+ }
+ return num;
+ }
+
+ public static uint GetMaxPPT(EquipSlotAttrDatas data, XAttributes attributes)
+ {
+ uint num = 0u;
+ for (int i = 0; i < data.m_slotDataList.Count; i++)
+ {
+ uint num2 = 0u;
+ EquipSlotAttrData equipSlotAttrData = data.m_slotDataList[i];
+ for (int j = 0; j < equipSlotAttrData.AttrDataList.Count; j++)
+ {
+ EquipAttrData equipAttrData = equipSlotAttrData.AttrDataList[j];
+ bool flag = equipAttrData.RangValue.Prob == 0u;
+ if (!flag)
+ {
+ num2 = Math.Max(num2, (uint)XSingleton<XPowerPointCalculator>.singleton.GetPPT(equipAttrData.AttrId, (double)equipAttrData.RangValue.Max, attributes, -1));
+ }
+ }
+ num += num2;
+ }
+ return num;
+ }
+ }
+}
diff --git a/Client/Assets/Scripts/XMainClient/Equip/EquipSlotAttrDatas.cs.meta b/Client/Assets/Scripts/XMainClient/Equip/EquipSlotAttrDatas.cs.meta
new file mode 100644
index 00000000..6f6582dd
--- /dev/null
+++ b/Client/Assets/Scripts/XMainClient/Equip/EquipSlotAttrDatas.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 03e4b05c463bf9e409b92892e6095e79
+timeCreated: 1611402960
+licenseType: Free
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Client/Assets/Scripts/XMainClient/Equip/EquipSuitItemData.cs b/Client/Assets/Scripts/XMainClient/Equip/EquipSuitItemData.cs
new file mode 100644
index 00000000..1cbaf4d1
--- /dev/null
+++ b/Client/Assets/Scripts/XMainClient/Equip/EquipSuitItemData.cs
@@ -0,0 +1,121 @@
+using System;
+using XUtliPoolLib;
+
+namespace XMainClient
+{
+ public class EquipSuitItemData : IComparable
+ {
+ public int CompareValue
+ {
+ get
+ {
+ bool flag = this.itemComposeData == null;
+ int result;
+ if (flag)
+ {
+ result = int.MinValue;
+ }
+ else
+ {
+ int num = (int)XBagDocument.BagDoc.GetItemCount(this.itemComposeData.SrcItem1[0]) - this.itemComposeData.SrcItem1[1];
+ bool flag2 = num < 0;
+ if (flag2)
+ {
+ result = num;
+ }
+ else
+ {
+ int num2 = (int)XBagDocument.BagDoc.GetItemCount(this.itemComposeData.SrcItem2[0]) - this.itemComposeData.SrcItem2[1];
+ bool flag3 = num2 < 0;
+ if (flag3)
+ {
+ result = num2;
+ }
+ else
+ {
+ int num3 = (int)XBagDocument.BagDoc.GetItemCount(this.itemComposeData.SrcItem3[0]) - this.itemComposeData.SrcItem3[1];
+ bool flag4 = num3 < 0;
+ if (flag4)
+ {
+ result = num3;
+ }
+ else
+ {
+ int num4 = (int)XBagDocument.BagDoc.GetItemCount(XEquipCreateDocument.CoinId) - this.itemComposeData.Coin;
+ bool flag5 = num4 < 0;
+ if (flag5)
+ {
+ result = num4;
+ }
+ else
+ {
+ result = num + num2 + num3 + num4;
+ }
+ }
+ }
+ }
+ }
+ return result;
+ }
+ }
+
+ public bool redpoint;
+
+ public EquipList.RowData itemData;
+
+ public ItemComposeTable.RowData itemComposeData;
+
+ public int CompareTo(object _other)
+ {
+ EquipSuitItemData equipSuitItemData = _other as EquipSuitItemData;
+ bool flag = this.itemComposeData != null && equipSuitItemData.itemComposeData != null;
+ if (flag)
+ {
+ bool flag2 = this.itemComposeData.Level != equipSuitItemData.itemComposeData.Level;
+ if (flag2)
+ {
+ return this.itemComposeData.Level - equipSuitItemData.itemComposeData.Level;
+ }
+ }
+ int compareValue = this.CompareValue;
+ int compareValue2 = equipSuitItemData.CompareValue;
+ bool flag3 = compareValue >= 0;
+ if (flag3)
+ {
+ bool flag4 = compareValue2 < 0;
+ if (flag4)
+ {
+ return -1;
+ }
+ }
+ else
+ {
+ bool flag5 = compareValue2 >= 0;
+ if (flag5)
+ {
+ return 1;
+ }
+ }
+ int[] equipPosOrderArray = XSingleton<XEquipCreateStaticData>.singleton.EquipPosOrderArray;
+ bool flag6 = equipPosOrderArray[(int)this.itemData.EquipPos] == equipPosOrderArray[(int)equipSuitItemData.itemData.EquipPos];
+ int result;
+ if (flag6)
+ {
+ bool flag7 = compareValue == compareValue2;
+ if (flag7)
+ {
+ result = this.itemComposeData.Coin - equipSuitItemData.itemComposeData.Coin;
+ }
+ else
+ {
+ result = compareValue2 - compareValue;
+ }
+ }
+ else
+ {
+ result = equipPosOrderArray[(int)this.itemData.EquipPos] - equipPosOrderArray[(int)equipSuitItemData.itemData.EquipPos];
+ }
+ return result;
+ }
+ }
+}
diff --git a/Client/Assets/Scripts/XMainClient/Equip/EquipSuitItemData.cs.meta b/Client/Assets/Scripts/XMainClient/Equip/EquipSuitItemData.cs.meta
new file mode 100644
index 00000000..9d7e9c98
--- /dev/null
+++ b/Client/Assets/Scripts/XMainClient/Equip/EquipSuitItemData.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 9c21b320bd442364bba7420355420dd8
+timeCreated: 1611404208
+licenseType: Free
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Client/Assets/Scripts/XMainClient/Equip/EquipSuitMenuData.cs b/Client/Assets/Scripts/XMainClient/Equip/EquipSuitMenuData.cs
new file mode 100644
index 00000000..809efc50
--- /dev/null
+++ b/Client/Assets/Scripts/XMainClient/Equip/EquipSuitMenuData.cs
@@ -0,0 +1,21 @@
+using System;
+using System.Collections.Generic;
+
+namespace XMainClient
+{
+ public class EquipSuitMenuData : IComparable<EquipSuitMenuData>
+ {
+ public bool show;
+
+ public bool redpoint;
+
+ public int quality;
+
+ public List<EquipSuitMenuDataItem> list;
+
+ public int CompareTo(EquipSuitMenuData _other)
+ {
+ return _other.quality - this.quality;
+ }
+ }
+}
diff --git a/Client/Assets/Scripts/XMainClient/Equip/EquipSuitMenuData.cs.meta b/Client/Assets/Scripts/XMainClient/Equip/EquipSuitMenuData.cs.meta
new file mode 100644
index 00000000..59dd05b5
--- /dev/null
+++ b/Client/Assets/Scripts/XMainClient/Equip/EquipSuitMenuData.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 68b59029a1cc993409cfecf9f9e023c8
+timeCreated: 1611403883
+licenseType: Free
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Client/Assets/Scripts/XMainClient/Equip/EquipSuitMenuDataItem.cs b/Client/Assets/Scripts/XMainClient/Equip/EquipSuitMenuDataItem.cs
new file mode 100644
index 00000000..d8a1c412
--- /dev/null
+++ b/Client/Assets/Scripts/XMainClient/Equip/EquipSuitMenuDataItem.cs
@@ -0,0 +1,17 @@
+using System;
+using System.Collections.Generic;
+using XUtliPoolLib;
+
+namespace XMainClient
+{
+ public class EquipSuitMenuDataItem
+ {
+ public bool show;
+
+ public bool redpoint;
+
+ public EquipSuitTable.RowData suitData;
+
+ public List<EquipSuitItemData> suitItemList;
+ }
+}
diff --git a/Client/Assets/Scripts/XMainClient/Equip/EquipSuitMenuDataItem.cs.meta b/Client/Assets/Scripts/XMainClient/Equip/EquipSuitMenuDataItem.cs.meta
new file mode 100644
index 00000000..021be9c5
--- /dev/null
+++ b/Client/Assets/Scripts/XMainClient/Equip/EquipSuitMenuDataItem.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 1802dc8b497037f4d843e3e9c36455d5
+timeCreated: 1611403295
+licenseType: Free
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Client/Assets/Scripts/XMainClient/Equip/EquipTransformBehaviour.cs b/Client/Assets/Scripts/XMainClient/Equip/EquipTransformBehaviour.cs
new file mode 100644
index 00000000..d90453ce
--- /dev/null
+++ b/Client/Assets/Scripts/XMainClient/Equip/EquipTransformBehaviour.cs
@@ -0,0 +1,80 @@
+using System;
+using UILib;
+using UnityEngine;
+using XMainClient.UI.UICommon;
+using XUtliPoolLib;
+
+namespace XMainClient
+{
+ internal class EquipTransformBehaviour : DlgBehaviourBase
+ {
+ public IXUISprite sprPerfect;
+
+ public IXUISprite sprImperfect;
+
+ public IXUITweenTool tweenTool;
+
+ public IXUIButton btnClose;
+
+ public IXUIButton btnTransform;
+
+ public IXUIScrollView TipScrollView;
+
+ public IXUIScrollView EquipScrollView;
+
+ public IXUIWrapContent EquipWrapContent;
+
+ public IXUILabel TipLabel;
+
+ public IXUILabel lbDragonCoin;
+
+ public EquipTransformItemView SrcView;
+
+ public EquipTransformItemView DestView;
+
+ public NeedItemView[] NeedItems;
+
+ public GameObject goPanelHint;
+
+ public IXUIButton btnPanelHintOk;
+
+ public IXUILabel lbPanelHintItem;
+
+ public GameObject goPanelHintItem;
+
+ public XUIPool FriendTabPool = new XUIPool(XSingleton<XGameUI>.singleton.m_uiTool);
+
+ private void Awake()
+ {
+ this.btnClose = (base.transform.Find("Close").GetComponent("XUIButton") as IXUIButton);
+ Transform transform = base.transform.Find("SmeltingReplaceFrame");
+ this.tweenTool = (transform.Find("Result").GetComponent("XUIPlayTween") as IXUITweenTool);
+ this.sprPerfect = (this.tweenTool.gameObject.transform.Find("wm").GetComponent("XUISprite") as IXUISprite);
+ this.sprImperfect = (this.tweenTool.gameObject.transform.Find("fwm").GetComponent("XUISprite") as IXUISprite);
+ this.sprPerfect.SetAlpha(0f);
+ this.sprImperfect.SetAlpha(0f);
+ this.SrcView = new EquipTransformItemView();
+ this.SrcView.FindFrom(transform.Find("1"));
+ this.DestView = new EquipTransformItemView();
+ this.DestView.FindFrom(transform.Find("2"));
+ this.btnTransform = (transform.Find("BtnReplace").GetComponent("XUIButton") as IXUIButton);
+ this.lbDragonCoin = (this.btnTransform.gameObject.transform.Find("MoneyCost").GetComponent("XUILabel") as IXUILabel);
+ this.TipScrollView = (transform.Find("Tip/TipPanel").GetComponent("XUIScrollView") as IXUIScrollView);
+ this.TipLabel = (this.TipScrollView.gameObject.transform.Find("tips").GetComponent("XUILabel") as IXUILabel);
+ this.EquipScrollView = (transform.Find("Panel").GetComponent("XUIScrollView") as IXUIScrollView);
+ this.EquipWrapContent = (this.EquipScrollView.gameObject.transform.Find("WrapContent").GetComponent("XUIWrapContent") as IXUIWrapContent);
+ this.goPanelHint = transform.Find("PanelHint").gameObject;
+ this.btnPanelHintOk = (this.goPanelHint.transform.Find("BtnOK").GetComponent("XUIButton") as IXUIButton);
+ this.lbPanelHintItem = (this.goPanelHint.transform.Find("Text").GetComponent("XUILabel") as IXUILabel);
+ this.goPanelHintItem = this.goPanelHint.transform.Find("ItemTpl").gameObject;
+ this.goPanelHint.SetActive(false);
+ transform = transform.Find("ItemNeeds");
+ this.NeedItems = new NeedItemView[transform.childCount];
+ for (int i = 0; i < this.NeedItems.Length; i++)
+ {
+ this.NeedItems[i] = new NeedItemView(false);
+ this.NeedItems[i].FindFrom(transform.GetChild(i));
+ }
+ }
+ }
+}
diff --git a/Client/Assets/Scripts/XMainClient/Equip/EquipTransformBehaviour.cs.meta b/Client/Assets/Scripts/XMainClient/Equip/EquipTransformBehaviour.cs.meta
new file mode 100644
index 00000000..91636256
--- /dev/null
+++ b/Client/Assets/Scripts/XMainClient/Equip/EquipTransformBehaviour.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 98cbec68f5b28d948b54a1f2961a9ae4
+timeCreated: 1611404192
+licenseType: Free
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Client/Assets/Scripts/XMainClient/Equip/EquipTransformItemView.cs b/Client/Assets/Scripts/XMainClient/Equip/EquipTransformItemView.cs
new file mode 100644
index 00000000..3181c744
--- /dev/null
+++ b/Client/Assets/Scripts/XMainClient/Equip/EquipTransformItemView.cs
@@ -0,0 +1,77 @@
+using System;
+using UILib;
+using UnityEngine;
+
+namespace XMainClient
+{
+ internal class EquipTransformItemView
+ {
+ public IXUISprite sprIcon;
+
+ public IXUILabel lbLevel;
+
+ public GameObject goEquipOn;
+
+ public GameObject goItem;
+
+ public GameObject goFX_wm;
+
+ public GameObject goFX_fwm;
+
+ public GameObject goAdd;
+
+ public void FindFrom(Transform trans)
+ {
+ bool flag = trans != null;
+ if (flag)
+ {
+ Transform transform = trans.Find("EquipOn");
+ bool flag2 = transform != null;
+ if (flag2)
+ {
+ this.goEquipOn = transform.gameObject;
+ }
+ transform = trans.Find("ItemTpl");
+ bool flag3 = transform != null;
+ if (flag3)
+ {
+ this.goItem = transform.gameObject;
+ }
+ bool flag4 = this.goItem != null;
+ if (flag4)
+ {
+ transform = transform.Find("Icon");
+ bool flag5 = transform != null;
+ if (flag5)
+ {
+ this.sprIcon = (transform.GetComponent("XUISprite") as IXUISprite);
+ }
+ }
+ transform = trans.Find("FX_wm");
+ bool flag6 = transform != null;
+ if (flag6)
+ {
+ this.goFX_wm = transform.gameObject;
+ }
+ transform = trans.Find("FX_fwm");
+ bool flag7 = transform != null;
+ if (flag7)
+ {
+ this.goFX_fwm = transform.gameObject;
+ }
+ transform = trans.Find("Add");
+ bool flag8 = transform != null;
+ if (flag8)
+ {
+ this.goAdd = transform.gameObject;
+ }
+ transform = trans.Find("Num");
+ bool flag9 = transform != null;
+ if (flag9)
+ {
+ this.lbLevel = (transform.GetComponent("XUILabel") as IXUILabel);
+ }
+ }
+ }
+ }
+}
diff --git a/Client/Assets/Scripts/XMainClient/Equip/EquipTransformItemView.cs.meta b/Client/Assets/Scripts/XMainClient/Equip/EquipTransformItemView.cs.meta
new file mode 100644
index 00000000..4e6ceca9
--- /dev/null
+++ b/Client/Assets/Scripts/XMainClient/Equip/EquipTransformItemView.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 3600561a2dce7da4ca33b827be148f7f
+timeCreated: 1611403561
+licenseType: Free
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Client/Assets/Scripts/XMainClient/Equip/EquipUpgradeDocument.cs b/Client/Assets/Scripts/XMainClient/Equip/EquipUpgradeDocument.cs
new file mode 100644
index 00000000..08791125
--- /dev/null
+++ b/Client/Assets/Scripts/XMainClient/Equip/EquipUpgradeDocument.cs
@@ -0,0 +1,131 @@
+using System;
+using KKSG;
+using XMainClient.UI;
+using XMainClient.UI.UICommon;
+using XUtliPoolLib;
+
+namespace XMainClient
+{
+ internal class EquipUpgradeDocument : XDocComponent
+ {
+ public override uint ID
+ {
+ get
+ {
+ return EquipUpgradeDocument.uuID;
+ }
+ }
+
+ public static EquipUpgradeDocument Doc
+ {
+ get
+ {
+ return XSingleton<XGame>.singleton.Doc.GetXComponent(EquipUpgradeDocument.uuID) as EquipUpgradeDocument;
+ }
+ }
+
+ public EquipUpgradeHandler Handler { get; set; }
+
+ public ulong SelectUid
+ {
+ get
+ {
+ return this.m_selectUid;
+ }
+ }
+
+ public new static readonly uint uuID = XSingleton<XCommon>.singleton.XHash("EquipUpgradeDocument");
+
+ public static XTableAsyncLoader AsyncLoader = new XTableAsyncLoader();
+
+ private ulong m_selectUid = 0UL;
+
+ public static void Execute(OnLoadedCallback callback = null)
+ {
+ EquipUpgradeDocument.AsyncLoader.Execute(callback);
+ }
+
+ public static void OnTableLoaded()
+ {
+ }
+
+ public override void OnAttachToHost(XObject host)
+ {
+ base.OnAttachToHost(host);
+ }
+
+ protected override void EventSubscribe()
+ {
+ base.EventSubscribe();
+ }
+
+ protected override void OnReconnected(XReconnectedEventArgs arg)
+ {
+ }
+
+ public override void OnDetachFromHost()
+ {
+ base.OnDetachFromHost();
+ }
+
+ public void SelectEquip(ulong uid)
+ {
+ XItem itemByUID = XBagDocument.BagDoc.GetItemByUID(uid);
+ bool flag = itemByUID == null;
+ if (!flag)
+ {
+ this.m_selectUid = uid;
+ bool flag2 = !DlgBase<ItemSystemDlg, TabDlgBehaviour>.singleton.IsVisible();
+ if (!flag2)
+ {
+ bool flag3 = this.Handler != null && this.Handler.IsVisible();
+ if (flag3)
+ {
+ this.Handler.ShowUI();
+ }
+ else
+ {
+ DlgBase<ItemSystemDlg, TabDlgBehaviour>.singleton.ShowRightPopView(DlgBase<ItemSystemDlg, TabDlgBehaviour>.singleton._equipUpgradeHandler);
+ }
+ bool flag4 = DlgBase<ItemSystemDlg, TabDlgBehaviour>.singleton._equipHandler != null;
+ if (flag4)
+ {
+ DlgBase<ItemSystemDlg, TabDlgBehaviour>.singleton._equipHandler.SelectEquip(uid);
+ }
+ }
+ }
+ }
+
+ public void ReqUpgrade()
+ {
+ RpcC2G_UpgradeEquip rpcC2G_UpgradeEquip = new RpcC2G_UpgradeEquip();
+ rpcC2G_UpgradeEquip.oArg.uid = this.m_selectUid;
+ XSingleton<XClientNetwork>.singleton.Send(rpcC2G_UpgradeEquip);
+ }
+
+ public void OnUpgradeBack(UpgradeEquipRes oRes)
+ {
+ bool flag = oRes == null;
+ if (flag)
+ {
+ XSingleton<UiUtility>.singleton.ShowSystemTip(ErrorCode.ERR_FAILED, "fece00");
+ }
+ else
+ {
+ bool flag2 = oRes.errorcode > ErrorCode.ERR_SUCCESS;
+ if (flag2)
+ {
+ XSingleton<UiUtility>.singleton.ShowSystemTip(oRes.errorcode, "fece00");
+ }
+ else
+ {
+ bool flag3 = this.Handler != null && this.Handler.IsVisible();
+ if (flag3)
+ {
+ this.Handler.SetVisible(false);
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/Client/Assets/Scripts/XMainClient/Equip/EquipUpgradeDocument.cs.meta b/Client/Assets/Scripts/XMainClient/Equip/EquipUpgradeDocument.cs.meta
new file mode 100644
index 00000000..3420c3be
--- /dev/null
+++ b/Client/Assets/Scripts/XMainClient/Equip/EquipUpgradeDocument.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: f9211d41c720b194ca55ff263f215c92
+timeCreated: 1611404897
+licenseType: Free
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant: