TowerPanel.cs 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. using System.Collections.Generic;
  2. using System.Linq;
  3. using Excel2Json;
  4. using Fort23.Core;
  5. using Fort23.UTool;
  6. using GameLogic.Combat;
  7. using GameLogic.Combat.CombatTool;
  8. using UnityEngine;
  9. namespace Fort23.Mono
  10. {
  11. [UIBinding(prefab = "TowerPanel")]
  12. public partial class TowerPanel : UIPanel, IScrollListContent
  13. {
  14. public AccountFileInfo.TowerData _towerData;
  15. public List<TowerInfoConfig> towerInfoConfigps;
  16. public TowerLevelWidget currentLevelWidget;
  17. private TowerConfig towerConfig;
  18. public int ulockId;
  19. private void Init()
  20. {
  21. isAddStack = true;
  22. // IsShowAppBar = false;
  23. }
  24. public override CTask GetFocus()
  25. {
  26. TitlePanel.ClosePanel();
  27. AppBarPanel.OpenPanel(this);
  28. return base.GetFocus();
  29. }
  30. protected override void AddEvent()
  31. {
  32. }
  33. protected override void DelEvent()
  34. {
  35. }
  36. public override void AddButtonEvent()
  37. {
  38. Btn_Start.onClick.AddListener(async () =>
  39. {
  40. TowerInfoConfig towerInfoConfig = ConfigComponent.Instance.Get<TowerInfoConfig>(ulockId);
  41. if (towerInfoConfig.ID == 0)
  42. return;
  43. var currentTowerLevelData = _towerData.towerLevelDatas.FirstOrDefault(t => t.id == ulockId);
  44. var lastTowerLevelData = _towerData.towerLevelDatas.FirstOrDefault(t => t.id == ulockId - 1);
  45. if ((lastTowerLevelData == null ||
  46. !lastTowerLevelData.finish) &&
  47. ulockId != 1)
  48. {
  49. TipMessagePanel.OpenTipMessagePanel("上一关还没有解锁!");
  50. return;
  51. }
  52. if (currentTowerLevelData == null)
  53. {
  54. currentTowerLevelData = new AccountFileInfo.TowerLevelData();
  55. currentTowerLevelData.id = towerInfoConfig.ID;
  56. _towerData.towerLevelDatas.Add(currentTowerLevelData);
  57. // currentLevelWidget.towerLevelData = towerLevelData;
  58. AccountFileInfo.Instance.SavePlayerData();
  59. }
  60. CombatDrive.Instance.LoadLevelBattleCombat(towerInfoConfig.typeValue[0], true, -1,
  61. delegate(bool isWin)
  62. {
  63. LogTool.Log("战斗完成" + isWin);
  64. if (isWin)
  65. {
  66. currentTowerLevelData.finish = true;
  67. AccountFileInfo.Instance.SavePlayerData();
  68. CustomInit();
  69. }
  70. CombatController.currActiveCombat.ChangeState(CombatController.update);
  71. });
  72. });
  73. Btn_Back.onClick.AddListener(() => { UIManager.Instance.HideUIUIPanel(this); });
  74. }
  75. public override CTask<bool> AsyncInit(object[] uiData)
  76. {
  77. int towerId = (int)uiData[0];
  78. towerConfig = ConfigComponent.Instance.Get<TowerConfig>(towerId);
  79. _towerData = AccountFileInfo.Instance.playerData.TowerDatas.FirstOrDefault(td => td.id == towerId);
  80. if (_towerData == null)
  81. {
  82. _towerData = new AccountFileInfo.TowerData();
  83. _towerData.id = towerId;
  84. AccountFileInfo.Instance.playerData.TowerDatas.Add(_towerData);
  85. AccountFileInfo.Instance.SavePlayerData();
  86. }
  87. CustomInit();
  88. return base.AsyncInit(uiData);
  89. }
  90. public void CustomInit()
  91. {
  92. UIManager.Instance.DormancyAllGComponent<TowerLevelWidget>();
  93. var configs = ConfigComponent.Instance.GetAll<TowerInfoConfig>();
  94. towerInfoConfigps = configs.Where(t => t.groupId == towerConfig.towerinfoIdGroup).ToList();
  95. Vector2 size = Slider_Stage.GetComponent<RectTransform>().sizeDelta;
  96. size.y = (141.2778f + 40) * (towerInfoConfigps.Count - 1);
  97. ulockId = _towerData.GetMaxUlockid();
  98. TowerInfoConfig ulockTowerInfoConfig = default;
  99. if (ulockId == 0)
  100. {
  101. ulockTowerInfoConfig = towerInfoConfigps[0];
  102. ulockId = ulockTowerInfoConfig.ID;
  103. }
  104. else
  105. {
  106. ulockTowerInfoConfig = ConfigComponent.Instance.Get<TowerInfoConfig>(ulockId);
  107. }
  108. Slider_Stage.GetComponent<RectTransform>().sizeDelta = size;
  109. Slider_Stage.value = (float)(ulockTowerInfoConfig.level - 1) /
  110. (towerInfoConfigps.Count - 1);
  111. Content.Init(this, towerInfoConfigps.Count, towerInfoConfigps.Count - 1 - ulockTowerInfoConfig.level, true);
  112. }
  113. public static async CTask OpenPanel(int id)
  114. {
  115. TowerPanel towerPanel =
  116. await UIManager.Instance.LoadAndOpenPanel<TowerPanel>(null, uiData: new object[] { id });
  117. }
  118. public async CTask<IScorllListWidget> GetIScorllListWidget(int index, RectTransform root)
  119. {
  120. int currInsex = index;
  121. if (currInsex < 0 || currInsex >= towerInfoConfigps.Count)
  122. {
  123. return null;
  124. }
  125. TowerLevelWidget woc1 =
  126. await UIManager.Instance.CreateGComponent<TowerLevelWidget>(null, ContentRoot);
  127. // woc1.OnClick = OnClick;
  128. woc1.CustomInit(_towerData, towerInfoConfigps[towerInfoConfigps.Count - 1 - currInsex]);
  129. // if (towerInfoConfigps[towerInfoConfigps.Count - 1 - currInsex].ID == ulockId)
  130. // {
  131. // OnClick(woc1);
  132. // // woc1.OnPointerClick();
  133. // }
  134. return woc1;
  135. }
  136. private void OnClick(ItemWidgetBasic obj)
  137. {
  138. TowerLevelWidget woc = obj as TowerLevelWidget;
  139. currentLevelWidget = woc;
  140. ulockId = currentLevelWidget._towerInfoConfig.ID;
  141. // SelectBigsecretArea(woc);
  142. }
  143. public void SelectBigsecretArea(TowerLevelWidget towerLevelWidget, bool isSelect = true)
  144. {
  145. if (isSelect)
  146. {
  147. Icon_Select.gameObject.SetActive(true);
  148. Icon_Select.transform.SetParent(towerLevelWidget.transform);
  149. Icon_Select.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(24.75f, 0);
  150. Icon_Select.transform.SetAsFirstSibling();
  151. }
  152. else
  153. {
  154. Icon_Select.gameObject.SetActive(false);
  155. Icon_Select.transform.SetParent(transform);
  156. Icon_Select.transform.SetAsFirstSibling();
  157. }
  158. }
  159. public void HindIScorllListWidget(IScorllListWidget widget)
  160. {
  161. TowerLevelWidget towerLevelWidget = widget as TowerLevelWidget;
  162. if (towerLevelWidget._towerInfoConfig.ID == ulockId)
  163. {
  164. // SelectBigsecretArea(towerLevelWidget, false);
  165. }
  166. UIManager.Instance.DormancyGComponent(widget as UIComponent);
  167. }
  168. public async override CTask Close()
  169. {
  170. _towerData = null;
  171. ulockId = 0;
  172. currentLevelWidget = null;
  173. CombatController.currActiveCombat.ChangeState(CombatController.update);
  174. await base.Close();
  175. }
  176. }
  177. }