From 6eb915c129fc90c6f4c82ae097dd6ffad5239efc Mon Sep 17 00:00:00 2001 From: chai Date: Mon, 25 Jan 2021 14:28:30 +0800 Subject: +scripts --- .../Scripts/XMainClient/RaceBattleHandler.cs | 327 +++++++++++++++++++++ 1 file changed, 327 insertions(+) create mode 100644 Client/Assets/Scripts/XMainClient/RaceBattleHandler.cs (limited to 'Client/Assets/Scripts/XMainClient/RaceBattleHandler.cs') diff --git a/Client/Assets/Scripts/XMainClient/RaceBattleHandler.cs b/Client/Assets/Scripts/XMainClient/RaceBattleHandler.cs new file mode 100644 index 00000000..e45fb31b --- /dev/null +++ b/Client/Assets/Scripts/XMainClient/RaceBattleHandler.cs @@ -0,0 +1,327 @@ +using System; +using System.Text; +using KKSG; +using UILib; +using UnityEngine; +using XMainClient.UI; +using XMainClient.UI.UICommon; +using XUtliPoolLib; + +namespace XMainClient +{ + internal class RaceBattleHandler : DlgHandlerBase + { + protected override string FileName + { + get + { + return "Battle/RaceBattleDlg"; + } + } + + private XRaceDocument doc = null; + + private XLeftTimeCounter _RaceCounter; + + private XLeftTimeCounter _EndCounter; + + private uint m_ShowRankTimerID = 0u; + + private bool isRaceLeftTime = false; + + private bool isEndLeftTime = false; + + private bool isRaceEnd = false; + + public static readonly uint ITEM_DOODAD_COUNT_MAX = 2u; + + private IXUILabel m_lblTime; + + private IXUISlider m_sliderBattery; + + private IXUISprite m_sprwifi; + + private IXUILabel m_lblFree; + + private IXUILabel m_Rank; + + private IXUILabel m_NowLap; + + private IXUILabel m_MAXLap; + + private IXUILabel m_RaceTime; + + private Transform m_End; + + private IXUILabel m_EndTime; + + private IXUILabel m_EndRank; + + public XUIPool m_ItemPool = new XUIPool(XSingleton.singleton.m_uiTool); + + private Transform[] ItemDoodad = new Transform[2]; + + private IXUISprite[] DoodadIcon = new IXUISprite[2]; + + private IXUILabel[] DoodadName = new IXUILabel[2]; + + private float lastPingTime = -60f; + + protected override void Init() + { + base.Init(); + this.doc = XDocuments.GetSpecificDocument(XRaceDocument.uuID); + this.doc.RaceHandler = this; + this.m_lblTime = (base.transform.Find("Bg/PING/TIME").GetComponent("XUILabel") as IXUILabel); + this.m_sliderBattery = (base.transform.Find("Bg/PING/Battery").GetComponent("XUISlider") as IXUISlider); + this.m_sprwifi = (base.transform.Find("Bg/PING/SysWifi").GetComponent("XUISprite") as IXUISprite); + this.m_lblFree = (base.transform.Find("Bg/PING/T2").GetComponent("XUILabel") as IXUILabel); + Transform transform = base.transform.Find("Bg/RaceInfo"); + this.m_Rank = (transform.Find("Rank").GetComponent("XUILabel") as IXUILabel); + this.m_NowLap = (transform.Find("NowLap").GetComponent("XUILabel") as IXUILabel); + this.m_MAXLap = (transform.Find("MAXLap").GetComponent("XUILabel") as IXUILabel); + this.m_RaceTime = (transform.Find("Time").GetComponent("XUILabel") as IXUILabel); + this.m_End = base.transform.Find("Bg/End"); + this.m_EndTime = (this.m_End.Find("Time/LeftTime").GetComponent("XUILabel") as IXUILabel); + this.m_EndRank = (base.transform.Find("Bg/EndRank").GetComponent("XUILabel") as IXUILabel); + this._RaceCounter = new XLeftTimeCounter(this.m_RaceTime, false); + this._RaceCounter.SetForward(1); + this._RaceCounter.SetTimeFormat(2, 3, 4, true); + this._EndCounter = new XLeftTimeCounter(this.m_EndTime, false); + this._EndCounter.SetFormat(false); + Transform transform2 = base.transform.Find("Bg/Item/ItemTpl"); + this.m_ItemPool.SetupPool(null, transform2.gameObject, RaceBattleHandler.ITEM_DOODAD_COUNT_MAX, false); + this.m_ItemPool.FakeReturnAll(); + int num = 0; + while ((long)num < (long)((ulong)RaceBattleHandler.ITEM_DOODAD_COUNT_MAX)) + { + GameObject gameObject = this.m_ItemPool.FetchGameObject(false); + gameObject.transform.localPosition = new Vector3((float)(num * this.m_ItemPool.TplWidth), 0f, 0f); + this.ItemDoodad[num] = gameObject.transform.Find("Item"); + this.ItemDoodad[num].gameObject.SetActive(false); + this.DoodadIcon[num] = (this.ItemDoodad[num].Find("uiIcon").GetComponent("XUISprite") as IXUISprite); + this.DoodadName[num] = (this.ItemDoodad[num].Find("Name").GetComponent("XUILabel") as IXUILabel); + num++; + } + this.m_ItemPool.ActualReturnAll(false); + } + + public override void RegisterEvent() + { + int num = 0; + while ((long)num < (long)((ulong)RaceBattleHandler.ITEM_DOODAD_COUNT_MAX)) + { + this.DoodadIcon[num].ID = (ulong)((long)num); + this.DoodadIcon[num].RegisterSpriteClickEventHandler(new SpriteClickEventHandler(this._OnItemClick)); + num++; + } + } + + protected override void OnShow() + { + base.OnShow(); + XSingleton.singleton.KillTimer(this.m_ShowRankTimerID); + this.RefreshInfo(); + } + + protected override void OnHide() + { + XSingleton.singleton.KillTimer(this.m_ShowRankTimerID); + this.m_ShowRankTimerID = 0u; + base.OnHide(); + } + + public override void OnUnload() + { + this.doc.RaceHandler = null; + XSingleton.singleton.KillTimer(this.m_ShowRankTimerID); + this.m_ShowRankTimerID = 0u; + base.OnUnload(); + } + + public override void OnUpdate() + { + base.OnUpdate(); + this.UpdateWifi(); + bool flag = Time.unscaledTime - this.lastPingTime > 60f || this.lastPingTime < 0f; + if (flag) + { + this.RefreshPing(); + this.lastPingTime = Time.unscaledTime; + } + bool flag2 = this.isRaceLeftTime && !this.isRaceEnd; + if (flag2) + { + this._RaceCounter.Update(); + } + bool flag3 = this.isEndLeftTime; + if (flag3) + { + this._EndCounter.Update(); + } + } + + private void RefreshInfo() + { + this.m_Rank.SetText("0"); + this.m_NowLap.SetText("0"); + Horse.RowData horseRace = XRaceDocument.GetHorseRace(XSingleton.singleton.SceneID); + this.m_MAXLap.SetText(string.Format("/{0}", horseRace.Laps)); + this.m_RaceTime.SetText("00:00.00"); + DlgBase.singleton.HideLeftTime(); + this.m_End.gameObject.SetActive(false); + this.m_EndRank.gameObject.SetActive(false); + } + + public void RefreshRank(uint rank) + { + this.m_Rank.SetText(rank.ToString()); + } + + public void RefreshLap(uint lap) + { + this.m_NowLap.SetText(lap.ToString()); + } + + public void RefreshTime(float time) + { + bool flag = time == 0f; + if (flag) + { + time = 0.01f; + } + this._RaceCounter.SetLeftTime(time, -1); + this.isRaceLeftTime = true; + } + + private void UpdateWifi() + { + XSingleton.singleton.UpdateWifi(null, this.m_sprwifi); + } + + private void RefreshPing() + { + XSingleton.singleton.RefreshPing(this.m_lblTime, this.m_sliderBattery, null); + } + + public void RaceStart() + { + this.RefreshTime(0.01f); + this.isRaceLeftTime = true; + } + + public void RaceEnd() + { + this.isRaceEnd = true; + } + + public void HideInfo() + { + this.CloseEndLeftTime(); + this.CloseRank(null); + } + + public void ShowRank(uint rank) + { + this.m_EndRank.gameObject.SetActive(true); + this.m_EndRank.SetText(rank.ToString()); + this.m_ShowRankTimerID = XSingleton.singleton.SetTimer((float)int.Parse(XSingleton.singleton.GetValue("HorseShowRankTime")), new XTimerMgr.ElapsedEventHandler(this.CloseRank), null); + } + + private void CloseRank(object param) + { + this.m_EndRank.gameObject.SetActive(false); + } + + public void ShowEndLeftTime(float time) + { + this.m_End.gameObject.SetActive(true); + this.isEndLeftTime = true; + this._EndCounter.SetLeftTime(time, -1); + } + + private void CloseEndLeftTime() + { + this.m_End.gameObject.SetActive(false); + this.isEndLeftTime = false; + } + + public void RefreshDoodad(DoodadItemAllSkill data) + { + bool flag = data == null; + if (!flag) + { + int num = 0; + while ((long)num < (long)((ulong)RaceBattleHandler.ITEM_DOODAD_COUNT_MAX)) + { + int num2 = -1; + for (int i = 0; i < data.skills.Count; i++) + { + bool flag2 = (ulong)data.skills[i].index == (ulong)((long)num); + if (flag2) + { + num2 = i; + } + } + bool flag3 = num2 == -1; + if (flag3) + { + this.ItemDoodad[num].gameObject.SetActive(false); + } + else + { + uint itemid = data.skills[num2].itemid; + BuffTable.RowData buffData = XSingleton.singleton.GetBuffData((int)itemid, 1); + bool flag4 = buffData == null; + if (flag4) + { + XSingleton.singleton.AddErrorLog(string.Format("ChickenDinner GetDoodad: Buff data not found: [{0} {1}]", itemid, 1), null, null, null, null, null); + break; + } + this.ItemDoodad[num].gameObject.SetActive(true); + this.DoodadIcon[num].SetSprite(buffData.BuffIcon); + StringBuilder stringBuilder = new StringBuilder(); + bool flag5 = false; + for (int j = 0; j < buffData.BuffName.Length; j++) + { + bool flag6 = buffData.BuffName[j] == ')'; + if (flag6) + { + flag5 = false; + } + bool flag7 = flag5; + if (flag7) + { + stringBuilder.Append(buffData.BuffName[j]); + } + bool flag8 = buffData.BuffName[j] == '('; + if (flag8) + { + flag5 = true; + } + } + this.DoodadName[num].SetText(stringBuilder.ToString()); + } + num++; + } + } + } + + public void UseDoodad(uint index) + { + this.ItemDoodad[(int)index].gameObject.SetActive(false); + } + + private void _OnItemClick(IXUISprite iSp) + { + bool activeSelf = this.ItemDoodad[(int)(checked((IntPtr)iSp.ID))].gameObject.activeSelf; + if (activeSelf) + { + RpcC2G_ItemBuffOp rpcC2G_ItemBuffOp = new RpcC2G_ItemBuffOp(); + rpcC2G_ItemBuffOp.oArg.index = (uint)iSp.ID; + rpcC2G_ItemBuffOp.oArg.op = 3u; + XSingleton.singleton.Send(rpcC2G_ItemBuffOp); + } + } + } +} -- cgit v1.1-26-g67d0