From 6eb915c129fc90c6f4c82ae097dd6ffad5239efc Mon Sep 17 00:00:00 2001 From: chai Date: Mon, 25 Jan 2021 14:28:30 +0800 Subject: +scripts --- .../Scripts/XMainClient/XArtifactAttrView.cs | 507 +++++++++++++++++++++ 1 file changed, 507 insertions(+) create mode 100644 Client/Assets/Scripts/XMainClient/XArtifactAttrView.cs (limited to 'Client/Assets/Scripts/XMainClient/XArtifactAttrView.cs') diff --git a/Client/Assets/Scripts/XMainClient/XArtifactAttrView.cs b/Client/Assets/Scripts/XMainClient/XArtifactAttrView.cs new file mode 100644 index 00000000..29f6ec45 --- /dev/null +++ b/Client/Assets/Scripts/XMainClient/XArtifactAttrView.cs @@ -0,0 +1,507 @@ +using System; +using System.Collections.Generic; +using KKSG; +using XUtliPoolLib; + +namespace XMainClient +{ + internal class XArtifactAttrView : XAttrCommonHandler where T : XAttrCommonFile, new() + { + private List m_attrDataList; + + private List m_percentAttrDataList; + + private List m_effectDataList; + + private List> m_suitDataList; + + private class SuitStatistics + { + public ArtifactSuit Suit; + + public int Count = 0; + } + + public void SetBaseData(XBodyBag equipments) + { + this.SetShowData(equipments); + bool flag = base.IsVisible(); + if (flag) + { + this.RefreshData(); + } + } + + public void SetBaseData(List lst) + { + this.SetShowData(lst); + bool flag = base.IsVisible(); + if (flag) + { + this.RefreshData(); + } + } + + public override void SetData() + { + base.SetData(); + bool flag = this.m_attrDataList != null || this.m_percentAttrDataList != null; + if (flag) + { + XAttrData xattrData = base._FetchAttrData(); + xattrData.Type = AttriDataType.Attri; + xattrData.Title = XStringDefineProxy.GetString("Tooltip_Artifact_attr"); + bool flag2 = (this.m_attrDataList == null || this.m_attrDataList.Count == 0) && (this.m_percentAttrDataList == null || this.m_percentAttrDataList.Count == 0); + if (flag2) + { + xattrData.StrEmpty = XStringDefineProxy.GetString("No_Artifact_attr"); + } + else + { + bool flag3 = this.m_attrDataList != null; + if (flag3) + { + for (int i = 0; i < this.m_attrDataList.Count; i++) + { + xattrData.Left.Add(this.m_attrDataList[i].Name); + xattrData.Right.Add(this.m_attrDataList[i].NumStr); + } + } + bool flag4 = this.m_percentAttrDataList != null; + if (flag4) + { + for (int j = 0; j < this.m_percentAttrDataList.Count; j++) + { + xattrData.Left.Add(this.m_percentAttrDataList[j].Name); + xattrData.Right.Add(this.m_percentAttrDataList[j].NumStr); + } + } + } + } + bool flag5 = this.m_effectDataList != null; + if (flag5) + { + XAttrData xattrData = base._FetchAttrData(); + xattrData.Title = XStringDefineProxy.GetString("ArytifactSkillEffect"); + xattrData.Type = AttriDataType.SingleLine; + bool flag6 = this.m_effectDataList.Count == 0; + if (flag6) + { + xattrData.StrEmpty = XStringDefineProxy.GetString("NoArtifactSkillEffect"); + } + else + { + for (int k = 0; k < this.m_effectDataList.Count; k++) + { + xattrData.Left.Add(this.m_effectDataList[k].LeftStr); + xattrData.Right.Add(this.m_effectDataList[k].RightStr); + } + } + } + bool flag7 = this.m_suitDataList != null; + if (flag7) + { + bool flag8 = this.m_suitDataList.Count == 0; + if (flag8) + { + XAttrData xattrData = base._FetchAttrData(); + xattrData.Title = XStringDefineProxy.GetString("ArtifactSuitTittle"); + xattrData.Type = AttriDataType.Attri; + xattrData.StrEmpty = XStringDefineProxy.GetString("NoArtifactSuit"); + } + else + { + for (int l = 0; l < this.m_suitDataList.Count; l++) + { + List list = this.m_suitDataList[l]; + XAttrData xattrData = base._FetchAttrData(); + bool flag9 = list.Count > 0; + if (flag9) + { + xattrData.Title = string.Format("{0}{1}", list[0].SuitName, XStringDefineProxy.GetString("ArtifactSuitTittle")); + } + else + { + xattrData.Title = XStringDefineProxy.GetString("ArtifactSuitTittle"); + } + xattrData.Type = AttriDataType.Attri; + for (int m = 0; m < list.Count; m++) + { + xattrData.Left.Add(list[m].LeftStr); + xattrData.Right.Add(list[m].RightStr); + } + } + } + } + } + + private void SetShowData(XBodyBag artifacts) + { + int num = XBagDocument.BodyPosition(ArtifactPosition.ARTIFACT_START); + int num2 = XBagDocument.BodyPosition(ArtifactPosition.ARTIFACT_END); + bool flag = this.m_attrDataList == null; + if (flag) + { + this.m_attrDataList = new List(); + } + else + { + this.m_attrDataList.Clear(); + } + bool flag2 = this.m_percentAttrDataList == null; + if (flag2) + { + this.m_percentAttrDataList = new List(); + } + else + { + this.m_percentAttrDataList.Clear(); + } + for (int i = num; i < num2; i++) + { + bool flag3 = artifacts[i] == null || artifacts[i].itemID == 0 || (ulong)artifacts[i].type != (ulong)((long)XFastEnumIntEqualityComparer.ToInt(ItemType.ARTIFACT)); + if (!flag3) + { + XArtifactItem xartifactItem = artifacts[i] as XArtifactItem; + for (int j = 0; j < xartifactItem.RandAttrInfo.RandAttr.Count; j++) + { + bool flag4 = xartifactItem.RandAttrInfo.RandAttr[j].AttrID == 0u; + if (!flag4) + { + uint attrID = xartifactItem.RandAttrInfo.RandAttr[j].AttrID; + bool flag5 = XAttributeCommon.IsPercentRange((int)attrID); + ArtifactTotalAttrData artifactTotalAttrData = this.FindTheSameAttri(attrID, flag5); + bool flag6 = artifactTotalAttrData == null; + if (flag6) + { + artifactTotalAttrData = new ArtifactTotalAttrData(xartifactItem.RandAttrInfo.RandAttr[j]); + bool flag7 = flag5; + if (flag7) + { + this.m_percentAttrDataList.Add(artifactTotalAttrData); + } + else + { + this.m_attrDataList.Add(artifactTotalAttrData); + } + } + else + { + artifactTotalAttrData.Add(xartifactItem.RandAttrInfo.RandAttr[j].AttrValue); + } + } + } + } + } + bool flag8 = this.m_effectDataList == null; + if (flag8) + { + this.m_effectDataList = new List(); + } + else + { + this.m_effectDataList.Clear(); + } + for (int k = num; k < num2; k++) + { + bool flag9 = artifacts[k] == null || artifacts[k].itemID == 0 || artifacts[k].Type != ItemType.ARTIFACT; + if (!flag9) + { + XArtifactItem xartifactItem = artifacts[k] as XArtifactItem; + bool flag10 = xartifactItem != null; + if (flag10) + { + for (int l = 0; l < xartifactItem.EffectInfoList.Count; l++) + { + bool flag11 = !xartifactItem.EffectInfoList[l].IsValid; + if (!flag11) + { + string artifactEffectDes = ArtifactDocument.GetArtifactEffectDes(xartifactItem.EffectInfoList[l].EffectId, xartifactItem.EffectInfoList[l].GetValues()); + ArtifactTotalAttrData item = new ArtifactTotalAttrData(artifactEffectDes, ""); + this.m_effectDataList.Add(item); + } + } + } + } + } + bool flag12 = this.m_suitDataList == null; + if (flag12) + { + this.m_suitDataList = new List>(); + } + else + { + this.m_suitDataList.Clear(); + } + List.SuitStatistics> list = new List.SuitStatistics>(); + for (int m = num; m < num2; m++) + { + bool flag13 = artifacts[m] == null || artifacts[m].itemID == 0 || (ulong)artifacts[m].type != (ulong)((long)XFastEnumIntEqualityComparer.ToInt(ItemType.ARTIFACT)); + if (!flag13) + { + XArtifactItem xartifactItem = artifacts[m] as XArtifactItem; + ArtifactSuit suitByArtifactId = ArtifactDocument.SuitMgr.GetSuitByArtifactId((uint)xartifactItem.itemID); + bool flag14 = suitByArtifactId == null; + if (!flag14) + { + this.SetHadSuitList(ref list, suitByArtifactId); + } + } + } + for (int n = 0; n < list.Count; n++) + { + List list2 = new List(); + int num3 = list[n].Suit.effects.Length; + for (int num4 = 0; num4 < num3; num4++) + { + bool flag15 = num4 > list[n].Count; + if (flag15) + { + break; + } + SeqListRef seqListRef = list[n].Suit.effects[num4]; + bool flag16 = seqListRef.Count == 0; + if (!flag16) + { + for (int num5 = 0; num5 < seqListRef.Count; num5++) + { + bool flag17 = seqListRef[num5, 0] == 0u; + if (!flag17) + { + string leftStr = string.Format(XSingleton.singleton.GetString("ArtifactSuitEffect"), num4); + string rightStr = string.Format("{0}{1}", XStringDefineProxy.GetString((XAttributeDefine)seqListRef[num5, 0]), XAttributeCommon.GetAttrValueStr((int)seqListRef[num5, 0], (float)seqListRef[num5, 1])); + list2.Add(new ArtifactTotalAttrData(leftStr, rightStr) + { + SuitName = list[n].Suit.Name + }); + } + } + } + } + bool flag18 = list2.Count != 0; + if (flag18) + { + this.m_suitDataList.Add(list2); + } + } + } + + private void SetShowData(List lst) + { + bool flag = this.m_attrDataList == null; + if (flag) + { + this.m_attrDataList = new List(); + } + else + { + this.m_attrDataList.Clear(); + } + bool flag2 = this.m_percentAttrDataList == null; + if (flag2) + { + this.m_percentAttrDataList = new List(); + } + else + { + this.m_percentAttrDataList.Clear(); + } + bool flag3 = this.m_effectDataList == null; + if (flag3) + { + this.m_effectDataList = new List(); + } + else + { + this.m_effectDataList.Clear(); + } + bool flag4 = this.m_suitDataList == null; + if (flag4) + { + this.m_suitDataList = new List>(); + } + else + { + this.m_suitDataList.Clear(); + } + bool flag5 = lst == null; + if (flag5) + { + XSingleton.singleton.AddErrorLog("lst is null", null, null, null, null, null); + } + else + { + int num = XBagDocument.BodyPosition(ArtifactPosition.ARTIFACT_START); + int num2 = XBagDocument.BodyPosition(ArtifactPosition.ARTIFACT_END); + bool flag6 = lst.Count < num2; + if (flag6) + { + XSingleton.singleton.AddErrorLog(string.Format("gived data count < 4,count = {0}", lst.Count), null, null, null, null, null); + } + else + { + XItemChangeAttr attr = default(XItemChangeAttr); + for (int i = num; i < num2; i++) + { + bool flag7 = lst[i] == null || lst[i].ItemID == 0u || (ulong)lst[i].ItemType != (ulong)((long)XFastEnumIntEqualityComparer.ToInt(ItemType.ARTIFACT)); + if (!flag7) + { + for (int j = 0; j < lst[i].AttrID.Count; j++) + { + uint num3 = lst[i].AttrID[j]; + bool flag8 = num3 == 0u; + if (!flag8) + { + bool flag9 = XAttributeCommon.IsPercentRange((int)num3); + ArtifactTotalAttrData artifactTotalAttrData = this.FindTheSameAttri(num3, flag9); + bool flag10 = artifactTotalAttrData == null; + if (flag10) + { + attr.AttrID = num3; + attr.AttrValue = lst[i].AttrValue[j]; + artifactTotalAttrData = new ArtifactTotalAttrData(attr); + bool flag11 = flag9; + if (flag11) + { + this.m_percentAttrDataList.Add(artifactTotalAttrData); + } + else + { + this.m_attrDataList.Add(artifactTotalAttrData); + } + } + else + { + artifactTotalAttrData.Add(lst[i].AttrValue[j]); + } + } + } + } + } + for (int k = num; k < num2; k++) + { + bool flag12 = lst[k] == null || lst[k].ItemID == 0u || (ulong)lst[k].ItemType != (ulong)((long)XFastEnumIntEqualityComparer.ToInt(ItemType.ARTIFACT)); + if (!flag12) + { + XArtifactItem xartifactItem = XBagDocument.MakeXItem(lst[k]) as XArtifactItem; + bool flag13 = xartifactItem != null; + if (flag13) + { + for (int l = 0; l < xartifactItem.EffectInfoList.Count; l++) + { + bool flag14 = !xartifactItem.EffectInfoList[l].IsValid; + if (!flag14) + { + string artifactEffectDes = ArtifactDocument.GetArtifactEffectDes(xartifactItem.EffectInfoList[l].EffectId, xartifactItem.EffectInfoList[l].GetValues()); + ArtifactTotalAttrData item = new ArtifactTotalAttrData(artifactEffectDes, ""); + this.m_effectDataList.Add(item); + } + } + } + } + } + List.SuitStatistics> list = new List.SuitStatistics>(); + for (int m = num; m < num2; m++) + { + bool flag15 = lst[m] == null || lst[m].ItemID == 0u || (ulong)lst[m].ItemType != (ulong)((long)XFastEnumIntEqualityComparer.ToInt(ItemType.ARTIFACT)); + if (!flag15) + { + ArtifactSuit suitByArtifactId = ArtifactDocument.SuitMgr.GetSuitByArtifactId(lst[m].ItemID); + bool flag16 = suitByArtifactId == null; + if (!flag16) + { + this.SetHadSuitList(ref list, suitByArtifactId); + } + } + } + for (int n = 0; n < list.Count; n++) + { + List list2 = new List(); + int num4 = list[n].Suit.effects.Length; + for (int num5 = 0; num5 < num4; num5++) + { + bool flag17 = num5 > list[n].Count; + if (flag17) + { + break; + } + SeqListRef seqListRef = list[n].Suit.effects[num5]; + bool flag18 = seqListRef.Count == 0; + if (!flag18) + { + for (int num6 = 0; num6 < seqListRef.Count; num6++) + { + bool flag19 = seqListRef[num6, 0] == 0u; + if (!flag19) + { + string leftStr = string.Format(XSingleton.singleton.GetString("ArtifactSuitEffect"), num5); + string rightStr = string.Format("{0}{1}", XStringDefineProxy.GetString((XAttributeDefine)seqListRef[num6, 0]), XAttributeCommon.GetAttrValueStr((int)seqListRef[num6, 0], (float)seqListRef[num6, 1])); + list2.Add(new ArtifactTotalAttrData(leftStr, rightStr) + { + SuitName = list[n].Suit.Name + }); + } + } + } + } + bool flag20 = list2.Count != 0; + if (flag20) + { + this.m_suitDataList.Add(list2); + } + } + } + } + } + + private ArtifactTotalAttrData FindTheSameAttri(uint nameId, bool isPrecent) + { + if (isPrecent) + { + for (int i = 0; i < this.m_percentAttrDataList.Count; i++) + { + bool flag = this.m_percentAttrDataList[i].NameId == nameId; + if (flag) + { + return this.m_percentAttrDataList[i]; + } + } + } + else + { + for (int j = 0; j < this.m_attrDataList.Count; j++) + { + bool flag2 = this.m_attrDataList[j].NameId == nameId; + if (flag2) + { + return this.m_attrDataList[j]; + } + } + } + return null; + } + + private void SetHadSuitList(ref List.SuitStatistics> suits, ArtifactSuit suit) + { + bool flag = false; + for (int i = 0; i < suits.Count; i++) + { + bool flag2 = suit.Id == suits[i].Suit.Id; + if (flag2) + { + flag = true; + suits[i].Count++; + break; + } + } + bool flag3 = !flag; + if (flag3) + { + XArtifactAttrView.SuitStatistics suitStatistics = new XArtifactAttrView.SuitStatistics(); + suitStatistics.Suit = suit; + suitStatistics.Count++; + suits.Add(suitStatistics); + } + } + } +} -- cgit v1.1-26-g67d0