using ET.Client; using ET.EventType; using FairyGUI; using System.Collections.Generic; using UnityEngine; namespace ET { [Event] public class RankEventHandler : BEvent { protected override async ETTask OnEvent(RankChangeEvent a) { GameoverEventHandler.RankList = a.InfoList; await ETTask.CompletedTask; } } [Event] public class GameoverEventHandler : BEvent { public static List RankList = new(); public static bool IsGameOver = false; protected override async ETTask OnEvent(EventType.GameoverEvent args) { IsGameOver = true; GComponent view; if(args.winForce == 1) { view = await UIHelper.Create("CommonDialog", "GameoverSuccess"); } else { view = await UIHelper.Create("CommonDialog", "GameoverFailed"); } //等1秒,等排行榜数据 await TimerComponent.Instance.WaitAsync(1000); view.GetChild("btn_ok").onClick.Set(async () => { GRoot.inst.RemoveChild(view); view = await UIHelper.Create("paiming", "paiming"); InitRankView(view); view.GetChild("btn_ok").onClick.Set(() => { RankList = null; IsGameOver = false; GRoot.inst.RemoveChild(view); EventSystem.Instance.Publish(); }); }); } //展示排行榜 private void InitRankView(GComponent view) { var list = view.GetChild("list").asList; var data = RankList; int i = 0; for (; i < data.Count; i++) { var chd = list.GetChildAt(i).asCom; if (chd == null) { chd = UIPackage.CreateObject("paiming", $"paiminsg_0{((i<3) ? (i+1) : 4)}").asCom; list.AddChild(chd); } else { chd.visible = true; } if(i >= 3) { chd.GetChild("rank").text = (i + 1).ToString(); } chd.GetChild("name").text = data[i].Name; chd.GetChild("score").text = data[i].Value.ToString(); } for (; i < list.numChildren; i++) { list.GetChildAt(i).visible = false; } } } }