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/MapSignalHandler.cs | 168 +++++++++++++++++++++ 1 file changed, 168 insertions(+) create mode 100644 Client/Assets/Scripts/XMainClient/MapSignalHandler.cs (limited to 'Client/Assets/Scripts/XMainClient/MapSignalHandler.cs') diff --git a/Client/Assets/Scripts/XMainClient/MapSignalHandler.cs b/Client/Assets/Scripts/XMainClient/MapSignalHandler.cs new file mode 100644 index 00000000..1f98005c --- /dev/null +++ b/Client/Assets/Scripts/XMainClient/MapSignalHandler.cs @@ -0,0 +1,168 @@ +using System; +using System.Collections.Generic; +using UILib; +using UnityEngine; +using XUtliPoolLib; + +namespace XMainClient +{ + internal class MapSignalHandler : DlgHandlerBase + { + private XMobaBattleDocument _doc = null; + + private List m_SignalBtns = new List(); + + private IXUISprite m_SwitchBtn; + + private XUIPool m_SignalPool = new XUIPool(XSingleton.singleton.m_uiTool); + + private GameObject m_SignalTextFrame; + + private IXUISprite m_SignalHeroIcon; + + private IXUISprite m_SignalIcon; + + private IXUILabel m_SignalMsg; + + private IXUILabel m_SignalIconMsg; + + private GameObject m_SignalBoard; + + private uint _signalShowToken; + + protected override void Init() + { + base.Init(); + this._doc = XDocuments.GetSpecificDocument(XMobaBattleDocument.uuID); + this.m_SignalBtns.Clear(); + Transform transform = base.transform.Find("SignalFrame/OutBtn"); + for (int i = 0; i < transform.childCount; i++) + { + this.m_SignalBtns.Add(transform.Find(string.Format("SignalBtn{0}", i + 1)).GetComponent("XUISprite") as IXUISprite); + } + this.m_SwitchBtn = (base.transform.Find("SignalFrame/SwitchBtn").GetComponent("XUISprite") as IXUISprite); + Transform tpl = base.transform.Find("SignalFrame/Select/Tpl"); + this.SetupSignalPool(tpl); + this.m_SignalTextFrame = base.transform.Find("SignalFrame/Select").gameObject; + this.m_SignalTextFrame.SetActive(false); + this.m_SignalHeroIcon = (base.transform.Find("SignalBoard/HeroIcon").GetComponent("XUISprite") as IXUISprite); + this.m_SignalIcon = (base.transform.Find("SignalBoard/Icon").GetComponent("XUISprite") as IXUISprite); + this.m_SignalMsg = (base.transform.Find("SignalBoard/Msg").GetComponent("XUILabel") as IXUILabel); + this.m_SignalIconMsg = (base.transform.Find("SignalBoard/IconMsg").GetComponent("XUILabel") as IXUILabel); + this.m_SignalBoard = base.transform.Find("SignalBoard").gameObject; + this.m_SignalBoard.SetActive(false); + } + + public override void RegisterEvent() + { + base.RegisterEvent(); + this.m_SwitchBtn.RegisterSpriteClickEventHandler(new SpriteClickEventHandler(this.OnSignalSwitchClick)); + } + + public override void OnUnload() + { + XSingleton.singleton.KillTimer(this._signalShowToken); + base.OnUnload(); + } + + public void ShowSignal(string heroIcon, string heroIconAtlas, string iconStr, string msg) + { + XSingleton.singleton.KillTimer(this._signalShowToken); + this._signalShowToken = XSingleton.singleton.SetTimer(2f, new XTimerMgr.ElapsedEventHandler(this.OnSignalShowTimeOut), null); + this.m_SignalBoard.SetActive(true); + this.m_SignalHeroIcon.spriteName = heroIcon; + bool flag = string.IsNullOrEmpty(iconStr); + if (flag) + { + this.m_SignalIcon.SetVisible(false); + this.m_SignalIconMsg.SetVisible(false); + this.m_SignalMsg.SetVisible(true); + this.m_SignalMsg.SetText(msg); + } + else + { + this.m_SignalIcon.SetVisible(true); + this.m_SignalIconMsg.SetVisible(true); + this.m_SignalMsg.SetVisible(false); + this.m_SignalIcon.spriteName = iconStr; + this.m_SignalIconMsg.SetText(msg); + } + } + + public void OnSignalShowTimeOut(object o = null) + { + this.m_SignalBoard.SetActive(false); + } + + public void SetupSignalPool(Transform tpl) + { + this.m_SignalPool.SetupPool(tpl.parent.gameObject, tpl.gameObject, 10u, false); + int num = 0; + int num2 = XMobaBattleDocument.MobaSignalReader.Table.Length; + Vector3 tplPos = this.m_SignalPool.TplPos; + int num3 = 0; + for (int i = 0; i < num2; i++) + { + MobaSignalTable.RowData rowData = XMobaBattleDocument.MobaSignalReader.Table[i]; + bool flag = !this.CheckSceneType(rowData); + if (!flag) + { + bool flag2 = num3 < this.m_SignalBtns.Count; + if (flag2) + { + this.m_SignalBtns[num3].ID = (ulong)rowData.ID; + this.m_SignalBtns[num3].RegisterSpriteClickEventHandler(new SpriteClickEventHandler(this.OnSignalBtnClick)); + num3++; + } + else + { + GameObject gameObject = this.m_SignalPool.FetchGameObject(false); + num++; + gameObject.transform.localPosition = new Vector3(tplPos.x, tplPos.y - (float)((num - 1) * this.m_SignalPool.TplHeight)); + IXUISprite ixuisprite = gameObject.GetComponent("XUISprite") as IXUISprite; + ixuisprite.ID = (ulong)rowData.ID; + ixuisprite.RegisterSpriteClickEventHandler(new SpriteClickEventHandler(this.OnSignalBtnClick)); + IXUILabel ixuilabel = gameObject.transform.Find("Text").GetComponent("XUILabel") as IXUILabel; + ixuilabel.SetText(rowData.Text); + } + } + } + IXUISprite ixuisprite2 = tpl.parent.Find("Bg").GetComponent("XUISprite") as IXUISprite; + ixuisprite2.spriteHeight = 46 + this.m_SignalPool.TplHeight * (num - 1); + } + + public bool CheckSceneType(MobaSignalTable.RowData data) + { + bool flag = data.SceneType == null; + bool result; + if (flag) + { + result = false; + } + else + { + for (int i = 0; i < data.SceneType.Length; i++) + { + bool flag2 = data.SceneType[i] == (int)XSingleton.singleton.SceneType; + if (flag2) + { + return true; + } + } + result = false; + } + return result; + } + + public void OnSignalBtnClick(IXUISprite iSp) + { + this._doc.SendSignal((uint)iSp.ID); + this.m_SignalTextFrame.SetActive(false); + } + + public void OnSignalSwitchClick(IXUISprite iSp) + { + this.m_SignalTextFrame.SetActive(!this.m_SignalTextFrame.activeSelf); + } + } +} -- cgit v1.1-26-g67d0