GameoverHanler.cs 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. using ET.Client;
  2. using ET.EventType;
  3. using FairyGUI;
  4. using System.Collections.Generic;
  5. using UnityEngine;
  6. namespace ET
  7. {
  8. [Event]
  9. public class RankEventHandler : BEvent<RankChangeEvent>
  10. {
  11. protected override async ETTask OnEvent(RankChangeEvent a)
  12. {
  13. GameoverEventHandler.RankList = a.InfoList;
  14. await ETTask.CompletedTask;
  15. }
  16. }
  17. [Event]
  18. public class GameoverEventHandler : BEvent<EventType.GameoverEvent>
  19. {
  20. public static List<RankInfo> RankList = new();
  21. public static bool IsGameOver = false;
  22. protected override async ETTask OnEvent(EventType.GameoverEvent args)
  23. {
  24. IsGameOver = true;
  25. GComponent view;
  26. if(args.winForce == 1)
  27. {
  28. view = await UIHelper.Create("CommonDialog", "GameoverSuccess");
  29. }
  30. else
  31. {
  32. view = await UIHelper.Create("CommonDialog", "GameoverFailed");
  33. }
  34. //等1秒,等排行榜数据
  35. await TimerComponent.Instance.WaitAsync(1000);
  36. view.GetChild("btn_ok").onClick.Set(async () =>
  37. {
  38. GRoot.inst.RemoveChild(view);
  39. view = await UIHelper.Create("paiming", "paiming");
  40. InitRankView(view);
  41. view.GetChild("btn_ok").onClick.Set(() =>
  42. {
  43. RankList = null;
  44. IsGameOver = false;
  45. GRoot.inst.RemoveChild(view);
  46. EventSystem.Instance.Publish<ReOpenGame>();
  47. });
  48. });
  49. }
  50. //展示排行榜
  51. private void InitRankView(GComponent view)
  52. {
  53. var list = view.GetChild("list").asList;
  54. var data = RankList;
  55. int i = 0;
  56. for (; i < data.Count; i++)
  57. {
  58. var chd = list.GetChildAt(i).asCom;
  59. if (chd == null)
  60. {
  61. chd = UIPackage.CreateObject("paiming", $"paiminsg_0{((i<3) ? (i+1) : 4)}").asCom;
  62. list.AddChild(chd);
  63. }
  64. else
  65. {
  66. chd.visible = true;
  67. }
  68. if(i >= 3)
  69. {
  70. chd.GetChild("rank").text = (i + 1).ToString();
  71. }
  72. chd.GetChild("name").text = data[i].Name;
  73. chd.GetChild("score").text = data[i].Value.ToString();
  74. }
  75. for (; i < list.numChildren; i++)
  76. {
  77. list.GetChildAt(i).visible = false;
  78. }
  79. }
  80. }
  81. }