QiankundaiPanel.cs 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. using System.Collections.Generic;
  2. using Core.Language;
  3. using Excel2Json;
  4. using Fort23.Core;
  5. using GameLogic.Bag;
  6. using GameLogic.Player;
  7. using Utility;
  8. namespace Fort23.Mono
  9. {
  10. [UIBinding(prefab = "QiankundaiPanel")]
  11. public partial class QiankundaiPanel : UIPanel
  12. {
  13. List<WidgetItem> items = new List<WidgetItem>();
  14. private void Init()
  15. {
  16. isPopUi = true;
  17. }
  18. protected override void AddEvent()
  19. {
  20. }
  21. protected override void DelEvent()
  22. {
  23. }
  24. public override void AddButtonEvent()
  25. {
  26. Btn_Close.onClick.AddListener(() => { UIManager.Instance.HideUIUIPanel(this); });
  27. Btn_LingQu.onClick.AddListener(() =>
  28. {
  29. List<ItemInfo> itemInfos = new List<ItemInfo>();
  30. //固定时间掉落奖励
  31. foreach (var playerDataQiankundaiItemData in AccountFileInfo.Instance.playerData.QiankundaiItemDatas)
  32. {
  33. ItemInfo itemInfo = new ItemInfo(playerDataQiankundaiItemData);
  34. //TODO 挂机
  35. PlayerManager.Instance.BagController.AddItem(itemInfo);
  36. itemInfos.Add(itemInfo);
  37. }
  38. //可以掉落每日刷新奖励
  39. if (TimeHelper.ClientNow() >= AccountFileInfo.Instance.playerData.QiankundaiLingQuDailyDropTime)
  40. {
  41. List<QiankundaiConfig> qiankundaiConfigs = PlayerManager.Instance.GetFixedTimeQiankundaiConfigs();
  42. foreach (var qiankundaiConfig in qiankundaiConfigs)
  43. {
  44. for (var i = 0; i < qiankundaiConfig.ChoukaID.Length; i++)
  45. {
  46. List<ItemInfo> itemInfo = DropManager.Instance.Drop(qiankundaiConfig.ChoukaID[i],
  47. qiankundaiConfig.DropCount[i]);
  48. foreach (var info in itemInfo)
  49. {
  50. //TODO 挂机(一日一次的)
  51. PlayerManager.Instance.BagController.AddItem(info);
  52. itemInfos.Add(info);
  53. }
  54. }
  55. }
  56. }
  57. if (itemInfos.Count <= 0)
  58. {
  59. return;
  60. }
  61. AccountFileInfo.Instance.playerData.QiankundaiDropTimer = 0;
  62. AccountFileInfo.Instance.playerData.QiankundaiLingQuAwardTime = TimeHelper.ClientNow();
  63. AccountFileInfo.Instance.playerData.QiankundaiItemDatas.Clear();
  64. AccountFileInfo.Instance.playerData.QiankundaiLingQuDailyDropTime =
  65. TimeHelper.GetBaseRefreshTime(TimeHelper.ClientNow());
  66. AccountFileInfo.Instance.SavePlayerData();
  67. RewardsPanel.OpenPanel(itemInfos);
  68. CustomInit();
  69. RedDotManager.Instance.AllRedDotUpDate();
  70. });
  71. Btn_XiangQing.onClick.AddListener(() => { QiankundaiInfoPanel.OpenPanel(); });
  72. }
  73. public async override CTask<bool> AsyncInit(object[] uiData)
  74. {
  75. await CustomInit();
  76. return await base.AsyncInit(uiData);
  77. }
  78. public async CTask CustomInit()
  79. {
  80. foreach (var widgetItem in items)
  81. {
  82. UIManager.Instance.DormancyGComponent(widgetItem);
  83. }
  84. items.Clear();
  85. Text_Desc.text =
  86. LanguageManager.Instance.Text(10172,
  87. UtilTools.TimeToHSM(AccountFileInfo.Instance.playerData.QiankundaiDropTimer),
  88. UtilTools.TimeToHSM(PlayerManager.Instance.gameConstantConfig.qiankundaiMaxTime));
  89. List<ItemInfo> itemInfos = new List<ItemInfo>();
  90. //可以掉落每日刷新奖励
  91. if (TimeHelper.ClientNow() >= AccountFileInfo.Instance.playerData.QiankundaiLingQuDailyDropTime)
  92. {
  93. List<QiankundaiConfig> qiankundaiConfigs = PlayerManager.Instance.GetFixedTimeQiankundaiConfigs();
  94. foreach (var qiankundaiConfig in qiankundaiConfigs)
  95. {
  96. for (var i = 0; i < qiankundaiConfig.ChoukaID.Length; i++)
  97. {
  98. List<ItemInfo> itemInfo = DropManager.Instance.Drop(qiankundaiConfig.ChoukaID[i],
  99. qiankundaiConfig.DropCount[i]);
  100. itemInfos.AddRange(itemInfo);
  101. }
  102. }
  103. }
  104. foreach (var playerDataQiankundaiItemData in AccountFileInfo.Instance.playerData.QiankundaiItemDatas)
  105. {
  106. itemInfos.Add(new ItemInfo(playerDataQiankundaiItemData));
  107. }
  108. using (CTaskAwaitBuffer<WidgetItem> cta = new CTaskAwaitBuffer<WidgetItem>())
  109. {
  110. for (var i = 0; i < itemInfos.Count; i++)
  111. {
  112. cta.AddTask(UIManager.Instance.CreateGComponent<WidgetItem>(null, Content));
  113. }
  114. items = await cta.WaitAll();
  115. }
  116. for (var i = 0; i < itemInfos.Count; i++)
  117. {
  118. items[i].InitWidget(itemInfos[i]);
  119. }
  120. }
  121. public static async CTask OpenPanel()
  122. {
  123. await UIManager.Instance.LoadAndOpenPanel<QiankundaiPanel>(null, UILayer.Top, isShowBG: true);
  124. }
  125. public async override CTask Close()
  126. {
  127. foreach (var widgetItem in items)
  128. {
  129. UIManager.Instance.DormancyGComponent(widgetItem);
  130. }
  131. items.Clear();
  132. await base.Close();
  133. }
  134. }
  135. }