From 6eb915c129fc90c6f4c82ae097dd6ffad5239efc Mon Sep 17 00:00:00 2001 From: chai Date: Mon, 25 Jan 2021 14:28:30 +0800 Subject: +scripts --- .../Assets/Scripts/XMainClient/XPetSkillHandler.cs | 338 +++++++++++++++++++++ 1 file changed, 338 insertions(+) create mode 100644 Client/Assets/Scripts/XMainClient/XPetSkillHandler.cs (limited to 'Client/Assets/Scripts/XMainClient/XPetSkillHandler.cs') diff --git a/Client/Assets/Scripts/XMainClient/XPetSkillHandler.cs b/Client/Assets/Scripts/XMainClient/XPetSkillHandler.cs new file mode 100644 index 00000000..27247227 --- /dev/null +++ b/Client/Assets/Scripts/XMainClient/XPetSkillHandler.cs @@ -0,0 +1,338 @@ +using System; +using UILib; +using UnityEngine; +using XMainClient.UI; +using XMainClient.UI.UICommon; +using XUtliPoolLib; + +namespace XMainClient +{ + internal class XPetSkillHandler : DlgHandlerBase + { + private XPetDocument _PetDoc; + + public XPet CurPet = null; + + public bool HasGetSkillUI = false; + + private static readonly uint SKILL_HORIZONTAL_NUM_MAX = 4u; + + private static readonly uint SKILL_VERTICAL_NUM_MAX = 2u; + + public static readonly uint SKILL_MAX = 8u; + + private Transform m_SkillTpl; + + private IXUISprite m_SkillTips; + + private XUIPool m_SkillPool = new XUIPool(XSingleton.singleton.m_uiTool); + + private Transform m_NewSkill; + + private IXUILabel m_NewSkillText; + + private Transform m_NewSkillIcon; + + private IXUISprite m_NewSkillClose; + + private IXUISprite uiSkillTipsClose; + + private IXUISprite uiIcon; + + private IXUISprite uiQuality; + + private IXUILabel uiName; + + private IXUILabel uiExplanation; + + private IXUILabel uiOpenCondition; + + protected override void Init() + { + base.Init(); + this._PetDoc = XDocuments.GetSpecificDocument(XPetDocument.uuID); + this.m_SkillTpl = base.PanelObject.transform.Find("SkillTpl"); + this.m_SkillPool.SetupPool(null, this.m_SkillTpl.gameObject, XPetSkillHandler.SKILL_MAX, false); + int num = 0; + while ((long)num < (long)((ulong)XPetSkillHandler.SKILL_MAX)) + { + GameObject gameObject = this.m_SkillPool.FetchGameObject(false); + gameObject.name = string.Format("Skill{0}", num); + num++; + } + Transform transform = base.PanelObject.transform.Find("Tips"); + bool flag = transform != null; + if (flag) + { + this.m_SkillTips = (transform.GetComponent("XUISprite") as IXUISprite); + this.m_SkillTips.gameObject.SetActive(false); + } + this.m_NewSkill = base.PanelObject.transform.Find("NewSkill"); + bool flag2 = this.m_NewSkill != null; + if (flag2) + { + this.m_NewSkillText = (this.m_NewSkill.Find("level").GetComponent("XUILabel") as IXUILabel); + this.m_NewSkillIcon = this.m_NewSkill.Find("NewSkilllIcon"); + this.m_NewSkillClose = (this.m_NewSkill.Find("Close").GetComponent("XUISprite") as IXUISprite); + this.m_NewSkillClose.RegisterSpriteClickEventHandler(new SpriteClickEventHandler(this._OnNewSkillCloseClick)); + this.m_NewSkill.gameObject.SetActive(false); + } + } + + public override void RegisterEvent() + { + base.RegisterEvent(); + } + + public override void OnUnload() + { + this._PetDoc = null; + base.OnUnload(); + } + + public void Refresh(XPet pet) + { + this.CurPet = pet; + bool flag = this.CurPet == null; + if (!flag) + { + PetInfoTable.RowData petInfo = XPetDocument.GetPetInfo(this.CurPet.ID); + uint num = petInfo.randSkillMax + XPet.FIX_SKILL_COUNT_MAX; + this.m_SkillPool.ReturnAll(false); + int num2 = 0; + while ((long)num2 < (long)((ulong)XPetSkillHandler.SKILL_VERTICAL_NUM_MAX)) + { + int num3 = 0; + while ((long)num3 < (long)((ulong)XPetSkillHandler.SKILL_HORIZONTAL_NUM_MAX)) + { + GameObject gameObject = this.m_SkillPool.FetchGameObject(false); + IXUISprite ixuisprite = gameObject.transform.GetComponent("XUISprite") as IXUISprite; + int spriteWidth = ixuisprite.spriteWidth; + int spriteHeight = ixuisprite.spriteHeight; + gameObject.transform.localPosition = new Vector3((float)(spriteWidth * num3), (float)(-(float)spriteHeight * num2), 0f); + int num4 = (int)((long)num2 * (long)((ulong)XPetSkillHandler.SKILL_HORIZONTAL_NUM_MAX) + (long)num3); + XPet.Skill skillInfo = null; + bool flag2 = num4 < this.CurPet.ShowSkillList.Count; + if (flag2) + { + skillInfo = this.CurPet.ShowSkillList[num4]; + } + bool flag3 = !this._DrawSkillIcon(gameObject, skillInfo, num4, (ulong)num <= (ulong)((long)num4)); + if (flag3) + { + XSingleton.singleton.AddErrorLog(string.Concat(new object[] + { + "PetSkillCount Error!\n PetID:", + this.CurPet.ID, + " CurSKill-SkillNumMAX:", + this.CurPet.ShowSkillList.Count, + "-", + num + }), null, null, null, null, null); + } + ixuisprite.ID = (ulong)((long)num4); + ixuisprite.RegisterSpriteClickEventHandler(new SpriteClickEventHandler(this._OnSkillClicked)); + num3++; + } + num2++; + } + } + } + + private bool _DrawSkillIcon(GameObject go, XPet.Skill skillInfo, int index = -1, bool isCover = false) + { + IXUISprite ixuisprite = null; + IXUILabel ixuilabel = null; + IXUISprite ixuisprite2 = null; + Transform transform = null; + Transform transform2 = go.transform.Find("SkillIcon"); + bool flag = transform2 != null; + if (flag) + { + ixuisprite = (transform2.GetComponent("XUISprite") as IXUISprite); + } + transform2 = go.transform.Find("level"); + bool flag2 = transform2 != null; + if (flag2) + { + ixuilabel = (transform2.GetComponent("XUILabel") as IXUILabel); + } + transform2 = go.transform.Find("Quality"); + bool flag3 = transform2 != null; + if (flag3) + { + ixuisprite2 = (transform2.GetComponent("XUISprite") as IXUISprite); + } + transform2 = go.transform.Find("Cover"); + bool flag4 = transform2 != null; + if (flag4) + { + transform = transform2; + } + bool flag5 = ixuisprite != null; + if (flag5) + { + ixuisprite.SetSprite(""); + } + bool flag6 = ixuilabel != null; + if (flag6) + { + ixuilabel.gameObject.SetActive(false); + } + bool flag7 = ixuisprite2 != null; + if (flag7) + { + ixuisprite2.SetSprite("kuang_zq"); + } + bool flag8 = transform != null; + if (flag8) + { + transform.gameObject.SetActive(isCover); + } + bool flag9 = skillInfo == null; + bool result; + if (flag9) + { + result = true; + } + else if (isCover) + { + result = false; + } + else + { + PetPassiveSkillTable.RowData petSkill = XPetDocument.GetPetSkill(skillInfo.id); + bool flag10 = petSkill == null; + if (flag10) + { + XSingleton.singleton.AddErrorLog("PetSkill Id:" + skillInfo.id + " No Find!", null, null, null, null, null); + } + bool flag11 = ixuisprite != null; + if (flag11) + { + ixuisprite.SetSprite(petSkill.Icon); + } + bool flag12 = ixuisprite != null; + if (flag12) + { + ixuisprite.SetColor(Color.white); + } + bool flag13 = !skillInfo.open; + if (flag13) + { + PetInfoTable.RowData petInfo = XPetDocument.GetPetInfo(this.CurPet.ID); + bool flag14 = ixuilabel != null; + if (flag14) + { + ixuilabel.gameObject.SetActive(true); + ixuilabel.SetText(string.Format(XSingleton.singleton.GetString("PET_LEVEL_OPEN"), petInfo.LvRequire[index])); + } + bool flag15 = ixuisprite != null; + if (flag15) + { + ixuisprite.SetColor(Color.black); + } + } + bool flag16 = ixuisprite2 != null; + if (flag16) + { + ixuisprite2.SetSprite(string.Format("kuang_zq0{0}", petSkill.quality)); + } + result = true; + } + return result; + } + + private void _OnSkillClicked(IXUISprite iSp) + { + bool flag = this.CurPet == null; + if (!flag) + { + int num = (int)iSp.ID; + bool flag2 = num >= this.CurPet.ShowSkillList.Count; + if (!flag2) + { + XPet.Skill skill = this.CurPet.ShowSkillList[num]; + PetInfoTable.RowData petInfo = XPetDocument.GetPetInfo(this.CurPet.ID); + uint id = skill.id; + this.m_SkillTips.SetVisible(true); + Transform transform = this.m_SkillTips.gameObject.transform; + Transform parent = base.PanelObject.transform.Find(string.Format("Skill{0}", num)); + Vector3 localPosition = transform.localPosition; + XSingleton.singleton.AddChild(parent, transform); + transform.localPosition = localPosition; + bool flag3 = this.uiSkillTipsClose == null; + if (flag3) + { + this.uiSkillTipsClose = (transform.Find("Close").GetComponent("XUISprite") as IXUISprite); + this.uiIcon = (transform.Find("uiIcon").GetComponent("XUISprite") as IXUISprite); + this.uiQuality = (transform.Find("Quality").GetComponent("XUISprite") as IXUISprite); + this.uiName = (transform.Find("Name").GetComponent("XUILabel") as IXUILabel); + this.uiExplanation = (transform.Find("Explanation").GetComponent("XUILabel") as IXUILabel); + this.uiOpenCondition = (transform.Find("OpenCondition").GetComponent("XUILabel") as IXUILabel); + } + this.uiSkillTipsClose.RegisterSpriteClickEventHandler(new SpriteClickEventHandler(this._OnSkillClose)); + PetPassiveSkillTable.RowData petSkill = XPetDocument.GetPetSkill(id); + this.uiIcon.SetSprite(petSkill.Icon); + this.uiQuality.SetSprite(string.Format("kuang_zq0{0}", petSkill.quality)); + this.uiName.SetText(petSkill.name); + this.uiExplanation.SetText(petSkill.Detail); + bool open = skill.open; + if (open) + { + this.uiOpenCondition.SetText(""); + } + else + { + uint num2 = petInfo.LvRequire[num]; + this.uiOpenCondition.SetText(string.Format(XSingleton.singleton.GetString("PET_OPEN_SKILL"), num2)); + } + } + } + } + + public void PlayNewSkillTip(int newSkillIndex, uint lostSkillId = 0u) + { + bool flag = !DlgBase.singleton.IsVisible(); + if (!flag) + { + bool flag2 = this.CurPet == null || newSkillIndex >= this.CurPet.ShowSkillList.Count || newSkillIndex < 0; + if (!flag2) + { + XPet.Skill skill = this.CurPet.ShowSkillList[newSkillIndex]; + this.m_NewSkill.gameObject.SetActive(true); + this.HasGetSkillUI = true; + PetPassiveSkillTable.RowData petSkill = XPetDocument.GetPetSkill(skill.id); + string text = string.Format(XSingleton.singleton.GetString("PET_NEW_SKILL"), this.CurPet.Name, petSkill.name); + bool flag3 = lostSkillId == 0u; + if (flag3) + { + text = string.Format(XSingleton.singleton.GetString("PET_NEW_SKILL"), this.CurPet.Name, petSkill.name); + } + else + { + PetPassiveSkillTable.RowData petSkill2 = XPetDocument.GetPetSkill(lostSkillId); + text = string.Format(XSingleton.singleton.GetString("PET_REPLACE_SKILL"), this.CurPet.Name, petSkill.name, petSkill2.name); + } + this.m_NewSkillText.SetText(text); + this._DrawSkillIcon(this.m_NewSkillIcon.gameObject, skill, -1, false); + this.m_NewSkillClose.ID = (ulong)((long)newSkillIndex); + this.Refresh(this.CurPet); + } + } + } + + private void _OnSkillClose(IXUISprite iSp) + { + this.m_SkillTips.SetVisible(false); + } + + private void _OnNewSkillCloseClick(IXUISprite iSp) + { + this.m_NewSkill.gameObject.SetActive(false); + this.HasGetSkillUI = false; + Transform parent = base.PanelObject.transform.Find(string.Format("Skill{0}", iSp.ID)); + XSingleton.singleton.CreateAndPlay("Effects/FX_Particle/VehicleFX/Vehicle_jnjh", parent, Vector3.zero, Vector3.one, 1f, false, 3f, true); + } + } +} -- cgit v1.1-26-g67d0