From 6eb915c129fc90c6f4c82ae097dd6ffad5239efc Mon Sep 17 00:00:00 2001 From: chai Date: Mon, 25 Jan 2021 14:28:30 +0800 Subject: +scripts --- .../Scripts/XMainClient/Equip/EquipAttrData.cs | 119 ++++ .../XMainClient/Equip/EquipAttrData.cs.meta | 12 + .../Scripts/XMainClient/Equip/EquipAttrDataMgr.cs | 76 +++ .../XMainClient/Equip/EquipAttrDataMgr.cs.meta | 12 + .../Scripts/XMainClient/Equip/EquipAttrRange.cs | 52 ++ .../XMainClient/Equip/EquipAttrRange.cs.meta | 12 + .../Scripts/XMainClient/Equip/EquipCompare.cs | 12 + .../Scripts/XMainClient/Equip/EquipCompare.cs.meta | 12 + .../Scripts/XMainClient/Equip/EquipFuseData.cs | 33 + .../XMainClient/Equip/EquipFuseData.cs.meta | 12 + .../XMainClient/Equip/EquipFusionDocument.cs | 685 +++++++++++++++++++++ .../XMainClient/Equip/EquipFusionDocument.cs.meta | 12 + .../Scripts/XMainClient/Equip/EquipLoadTask.cs | 100 +++ .../XMainClient/Equip/EquipLoadTask.cs.meta | 12 + .../Scripts/XMainClient/Equip/EquipPosition.cs | 20 + .../XMainClient/Equip/EquipPosition.cs.meta | 12 + .../Equip/EquipSetCreateConfirmHandler.cs | 96 +++ .../Equip/EquipSetCreateConfirmHandler.cs.meta | 12 + .../XMainClient/Equip/EquipSetCreateHandler.cs | 215 +++++++ .../Equip/EquipSetCreateHandler.cs.meta | 12 + .../Scripts/XMainClient/Equip/EquipSetHandler.cs | 561 +++++++++++++++++ .../XMainClient/Equip/EquipSetHandler.cs.meta | 12 + .../XMainClient/Equip/EquipSetLevelHandler.cs | 162 +++++ .../XMainClient/Equip/EquipSetLevelHandler.cs.meta | 12 + .../XMainClient/Equip/EquipSetProfHandler.cs | 126 ++++ .../XMainClient/Equip/EquipSetProfHandler.cs.meta | 12 + .../XMainClient/Equip/EquipSetWearingHandler.cs | 130 ++++ .../Equip/EquipSetWearingHandler.cs.meta | 12 + .../Scripts/XMainClient/Equip/EquipSlotAttrData.cs | 93 +++ .../XMainClient/Equip/EquipSlotAttrData.cs.meta | 12 + .../XMainClient/Equip/EquipSlotAttrDatas.cs | 197 ++++++ .../XMainClient/Equip/EquipSlotAttrDatas.cs.meta | 12 + .../Scripts/XMainClient/Equip/EquipSuitItemData.cs | 121 ++++ .../XMainClient/Equip/EquipSuitItemData.cs.meta | 12 + .../Scripts/XMainClient/Equip/EquipSuitMenuData.cs | 21 + .../XMainClient/Equip/EquipSuitMenuData.cs.meta | 12 + .../XMainClient/Equip/EquipSuitMenuDataItem.cs | 17 + .../Equip/EquipSuitMenuDataItem.cs.meta | 12 + .../XMainClient/Equip/EquipTransformBehaviour.cs | 80 +++ .../Equip/EquipTransformBehaviour.cs.meta | 12 + .../XMainClient/Equip/EquipTransformItemView.cs | 77 +++ .../Equip/EquipTransformItemView.cs.meta | 12 + .../XMainClient/Equip/EquipUpgradeDocument.cs | 131 ++++ .../XMainClient/Equip/EquipUpgradeDocument.cs.meta | 12 + 44 files changed, 3388 insertions(+) create mode 100644 Client/Assets/Scripts/XMainClient/Equip/EquipAttrData.cs create mode 100644 Client/Assets/Scripts/XMainClient/Equip/EquipAttrData.cs.meta create mode 100644 Client/Assets/Scripts/XMainClient/Equip/EquipAttrDataMgr.cs create mode 100644 Client/Assets/Scripts/XMainClient/Equip/EquipAttrDataMgr.cs.meta create mode 100644 Client/Assets/Scripts/XMainClient/Equip/EquipAttrRange.cs create mode 100644 Client/Assets/Scripts/XMainClient/Equip/EquipAttrRange.cs.meta create mode 100644 Client/Assets/Scripts/XMainClient/Equip/EquipCompare.cs create mode 100644 Client/Assets/Scripts/XMainClient/Equip/EquipCompare.cs.meta create mode 100644 Client/Assets/Scripts/XMainClient/Equip/EquipFuseData.cs create mode 100644 Client/Assets/Scripts/XMainClient/Equip/EquipFuseData.cs.meta create mode 100644 Client/Assets/Scripts/XMainClient/Equip/EquipFusionDocument.cs create mode 100644 Client/Assets/Scripts/XMainClient/Equip/EquipFusionDocument.cs.meta create mode 100644 Client/Assets/Scripts/XMainClient/Equip/EquipLoadTask.cs create mode 100644 Client/Assets/Scripts/XMainClient/Equip/EquipLoadTask.cs.meta create mode 100644 Client/Assets/Scripts/XMainClient/Equip/EquipPosition.cs create mode 100644 Client/Assets/Scripts/XMainClient/Equip/EquipPosition.cs.meta create mode 100644 Client/Assets/Scripts/XMainClient/Equip/EquipSetCreateConfirmHandler.cs create mode 100644 Client/Assets/Scripts/XMainClient/Equip/EquipSetCreateConfirmHandler.cs.meta create mode 100644 Client/Assets/Scripts/XMainClient/Equip/EquipSetCreateHandler.cs create mode 100644 Client/Assets/Scripts/XMainClient/Equip/EquipSetCreateHandler.cs.meta create mode 100644 Client/Assets/Scripts/XMainClient/Equip/EquipSetHandler.cs create mode 100644 Client/Assets/Scripts/XMainClient/Equip/EquipSetHandler.cs.meta create mode 100644 Client/Assets/Scripts/XMainClient/Equip/EquipSetLevelHandler.cs create mode 100644 Client/Assets/Scripts/XMainClient/Equip/EquipSetLevelHandler.cs.meta create mode 100644 Client/Assets/Scripts/XMainClient/Equip/EquipSetProfHandler.cs create mode 100644 Client/Assets/Scripts/XMainClient/Equip/EquipSetProfHandler.cs.meta create mode 100644 Client/Assets/Scripts/XMainClient/Equip/EquipSetWearingHandler.cs create mode 100644 Client/Assets/Scripts/XMainClient/Equip/EquipSetWearingHandler.cs.meta create mode 100644 Client/Assets/Scripts/XMainClient/Equip/EquipSlotAttrData.cs create mode 100644 Client/Assets/Scripts/XMainClient/Equip/EquipSlotAttrData.cs.meta create mode 100644 Client/Assets/Scripts/XMainClient/Equip/EquipSlotAttrDatas.cs create mode 100644 Client/Assets/Scripts/XMainClient/Equip/EquipSlotAttrDatas.cs.meta create mode 100644 Client/Assets/Scripts/XMainClient/Equip/EquipSuitItemData.cs create mode 100644 Client/Assets/Scripts/XMainClient/Equip/EquipSuitItemData.cs.meta create mode 100644 Client/Assets/Scripts/XMainClient/Equip/EquipSuitMenuData.cs create mode 100644 Client/Assets/Scripts/XMainClient/Equip/EquipSuitMenuData.cs.meta create mode 100644 Client/Assets/Scripts/XMainClient/Equip/EquipSuitMenuDataItem.cs create mode 100644 Client/Assets/Scripts/XMainClient/Equip/EquipSuitMenuDataItem.cs.meta create mode 100644 Client/Assets/Scripts/XMainClient/Equip/EquipTransformBehaviour.cs create mode 100644 Client/Assets/Scripts/XMainClient/Equip/EquipTransformBehaviour.cs.meta create mode 100644 Client/Assets/Scripts/XMainClient/Equip/EquipTransformItemView.cs create mode 100644 Client/Assets/Scripts/XMainClient/Equip/EquipTransformItemView.cs.meta create mode 100644 Client/Assets/Scripts/XMainClient/Equip/EquipUpgradeDocument.cs create mode 100644 Client/Assets/Scripts/XMainClient/Equip/EquipUpgradeDocument.cs.meta (limited to 'Client/Assets/Scripts/XMainClient/Equip') 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.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 MarkList + { + get + { + bool flag = EquipAttrDataMgr.m_markList == null; + if (flag) + { + EquipAttrDataMgr.m_markList = XSingleton.singleton.GetIntList("SmeltCorlorRange"); + } + return EquipAttrDataMgr.m_markList; + } + } + + protected static List m_markList; + + protected Dictionary m_attrDic = new Dictionary(); + + 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 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.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 FuseDataList + { + get + { + return this.m_fuseDataList; + } + } + + public bool IsBreak { get; set; } + + public bool IsMax { get; set; } + + public new static readonly uint uuID = XSingleton.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 m_fuseDataList = new List(); + + private Dictionary m_effectPathDic; + + private Dictionary m_fuseIconNameDic; + + public static bool IsEquipDown = false; + + private Dictionary> m_addAttrDic = new Dictionary>(); + + private static Dictionary m_equipFusionDic = new Dictionary(); + + public bool GetEffectPath(uint breakLevel, out string path) + { + bool flag = this.m_effectPathDic == null; + if (flag) + { + this.m_effectPathDic = new Dictionary(); + string[] andSeparateValue = XSingleton.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 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(); + string[] andSeparateValue = XSingleton.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 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.singleton.ShowSystemTip(XSingleton.singleton.GetString("CanNotFusion"), "fece00"); + } + else + { + this.m_selectUid = uid; + this.SetFuseData(); + bool flag4 = !DlgBase.singleton.IsVisible(); + if (!flag4) + { + bool flag5 = this.Handler != null && this.Handler.IsVisible(); + if (flag5) + { + this.ClearSelectMaterial(); + this.Handler.ShowUI(false); + } + else + { + DlgBase.singleton.ShowRightPopView(DlgBase.singleton._equipFusionHandler); + } + bool flag6 = DlgBase.singleton._equipHandler != null; + if (flag6) + { + DlgBase.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.singleton.Send(rpcC2G_FuseEquip); + } + + public void OnGetEquipFuseInfo(FuseEquipRes oRes) + { + bool flag = oRes == null; + if (flag) + { + XSingleton.singleton.ShowSystemTip(ErrorCode.ERR_FAILED, "fece00"); + } + else + { + bool flag2 = oRes.errorcode == ErrorCode.ERR_INVALID_REQUEST; + if (flag2) + { + string fullName = MethodBase.GetCurrentMethod().ReflectedType.FullName; + XSingleton.singleton.OnGetInvalidRequest(fullName); + } + else + { + bool flag3 = oRes.errorcode > ErrorCode.ERR_SUCCESS; + if (flag3) + { + XSingleton.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 GetNowFuseData(XItem item, uint profession) + { + List list = new List(); + bool flag = item == null || item.Type != ItemType.EQUIP; + List 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> 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.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.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.singleton.Player.BasicTypeID, true); + foreach (KeyValuePair> 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 xtuple = new XTuple(); + 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 xtuple2 = new XTuple(); + 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 xtuple3 = new XTuple(); + 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> 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 xtuple = new XTuple(); + 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 xtuple2 = new XTuple(); + 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 GetAssistItems(uint coreItemId) + { + EquipFusionExpTable.RowData byCoreItemId = EquipFusionDocument.m_equipFusionExpTab.GetByCoreItemId(coreItemId); + bool flag = byCoreItemId != null; + SeqListRef result; + if (flag) + { + result = byCoreItemId.AssistItemId; + } + else + { + result = default(SeqListRef); + } + 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.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 loadedPath) + { + this.fpi = newFpi; + bool flag = this.fpi.presentID > 0u; + if (flag) + { + this.location = "Prefabs/" + XSingleton.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 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.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.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.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.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.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.singleton.m_uiTool); + + private XUIPool mItemType2ndPool = new XUIPool(XSingleton.singleton.m_uiTool); + + private Dictionary mQualityRedpointDic; + + private Dictionary 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.uuID); + this._InitItemType(); + this._InitItemList(); + this.equipSetProfFrame = base.PanelObject.transform.Find("EquipSetProfFrame").gameObject; + DlgHandlerBase.EnsureCreate(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(); + this.mEquipSuitIDRedpointDic = new Dictionary(); + this.mSelectLevel = this.mDoc.CurShowLevel(XSingleton.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(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 updateItemTypeList = this.mDoc.GetUpdateItemTypeList(true); + foreach (KeyValuePair keyValuePair in this.mQualityRedpointDic) + { + keyValuePair.Value.SetActive(false); + } + foreach (KeyValuePair 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 _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 updateItemTypeList = this.mDoc.GetUpdateItemTypeList(true); + bool flag2 = updateItemTypeList == null; + if (flag2) + { + this.RefreshItemList(); + } + else + { + List list = new List(); + 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.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 list2 = new List(); + 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 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.singleton.XPlayerData.Level; + XRechargeDocument specificDocument = XDocuments.GetSpecificDocument(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.ToInt(ItemType.EQUIP); + List list = new List(); + XSingleton.singleton.Doc.XBagDoc.GetItemsByType(typeFilter, ref list); + bool flag3 = (long)list.Count >= (long)((ulong)byVIP.EquipMax); + if (flag3) + { + XSingleton.singleton.ShowSystemTip(XStringDefineProxy.GetString("EquipBagFull"), "fece00"); + return true; + } + this.mDoc.IsBind = true; + DlgBase.singleton.equipSetCreateConfirmHandler.SetVisible(true); + DlgBase.singleton.equipSetCreateConfirmHandler.SetEquipInfo(num); + } + else + { + XPurchaseInfo purchaseInfo = this.mPurchaseDoc.GetPurchaseInfo(level, vipLevel, ItemEnum.GOLD); + bool flag4 = purchaseInfo.totalBuyNum > purchaseInfo.curBuyNum; + if (flag4) + { + DlgBase.singleton.ReqQuickCommonPurchase(ItemEnum.GOLD); + XSingleton.singleton.ShowSystemTip(XStringDefineProxy.GetString("SpriteLotteryGoldNotEnough"), "fece00"); + } + else + { + XSingleton.singleton.ShowSystemTip(XStringDefineProxy.GetString("EQUIPCREATE_COIN_CANNOT_EXCHANGE"), "fece00"); + } + } + } + return true; + } + + private bool OnClickGetNeedItemButton(IXUIButton btn) + { + XSingleton.singleton.ShowItemAccess((int)btn.ID, null); + return true; + } + + private void OnNeedItemClick(IXUISprite item) + { + XSingleton.singleton.ShowItemAccess((int)item.ID, null); + } + + private bool OnLevelCheckClicked(IXUICheckBox box) + { + this.mSelectLevel = (this.m_levelCheck.bChecked ? this.mDoc.CurShowLevel(XSingleton.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.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.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 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.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.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.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 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.singleton.ShowHelp(XSysDefine.XSys_Item_Equip); + return true; + } + + protected override void OnShow() + { + base.OnShow(); + this.RefreshData(); + } + + protected override void OnHide() + { + base.OnHide(); + DlgBase.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.singleton.AddErrorLog(XSingleton.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 AttrDataList + { + get + { + return this.m_attrDataList; + } + } + + private uint m_slot = 0u; + + private List m_attrDataList; + + public EquipSlotAttrData(uint slot) + { + this.m_slot = slot; + this.m_attrDataList = new List(); + } + + 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 m_slotDataList; + + public EquipSlotAttrDatas(uint equipId) + { + this.m_equipId = equipId; + this.m_slotDataList = new List(); + } + + 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.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.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.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.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.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 + { + public bool show; + + public bool redpoint; + + public int quality; + + public List 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 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.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.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.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.singleton.IsVisible(); + if (!flag2) + { + bool flag3 = this.Handler != null && this.Handler.IsVisible(); + if (flag3) + { + this.Handler.ShowUI(); + } + else + { + DlgBase.singleton.ShowRightPopView(DlgBase.singleton._equipUpgradeHandler); + } + bool flag4 = DlgBase.singleton._equipHandler != null; + if (flag4) + { + DlgBase.singleton._equipHandler.SelectEquip(uid); + } + } + } + } + + public void ReqUpgrade() + { + RpcC2G_UpgradeEquip rpcC2G_UpgradeEquip = new RpcC2G_UpgradeEquip(); + rpcC2G_UpgradeEquip.oArg.uid = this.m_selectUid; + XSingleton.singleton.Send(rpcC2G_UpgradeEquip); + } + + public void OnUpgradeBack(UpgradeEquipRes oRes) + { + bool flag = oRes == null; + if (flag) + { + XSingleton.singleton.ShowSystemTip(ErrorCode.ERR_FAILED, "fece00"); + } + else + { + bool flag2 = oRes.errorcode > ErrorCode.ERR_SUCCESS; + if (flag2) + { + XSingleton.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: -- cgit v1.1-26-g67d0