GongFaUpgradePanel.cs 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399
  1. using System.Collections.Generic;
  2. using System.Linq;
  3. using Core.Language;
  4. using Excel2Json;
  5. using Fort23.Core;
  6. using Fort23.UTool;
  7. using GameLogic.Hero;
  8. using GameLogic.Player;
  9. using UnityEngine;
  10. using UnityEngine.UI;
  11. using Utility;
  12. namespace Fort23.Mono
  13. {
  14. [UIBinding(prefab = "GongFaUpgradePanel")]
  15. public partial class GongFaUpgradePanel : UIPanel
  16. {
  17. private SkillInfo _skillInfo;
  18. private List<SkillConfig> configs;
  19. List<GongFaUpgradeInfoWidget> _gongFaUpgradeInfoWidgets = new List<GongFaUpgradeInfoWidget>();
  20. private List<SkillPowerupConfig> _skillPowerupConfigs;
  21. private SkillConstant skillConstant;
  22. List<ItemWidgetType1> _itemWidgetType1 = new List<ItemWidgetType1>();
  23. List<EnergyWidget> _energyWidgets = new List<EnergyWidget>();
  24. bool isUpStar = false;
  25. bool isUpGrad = false;
  26. private void Init()
  27. {
  28. isAddStack = true;
  29. // IsShowAppBar = false;
  30. }
  31. public async override CTask GetFocus()
  32. {
  33. await AppBarPanel.OpenPanel(this);
  34. base.GetFocus();
  35. }
  36. protected override void AddEvent()
  37. {
  38. }
  39. protected override void DelEvent()
  40. {
  41. }
  42. public override void AddButtonEvent()
  43. {
  44. Btn_Back.onClick.AddListener(() =>
  45. {
  46. if (isUpStar || isUpGrad)
  47. {
  48. isUpStar = false;
  49. isUpGrad = false;
  50. UpdateStarBtn();
  51. return;
  52. }
  53. UIManager.Instance.HideUIUIPanel<GongFaUpgradePanel>();
  54. });
  55. Btn_UpGrade.onClick.AddListener(() =>
  56. {
  57. if (_skillInfo.SkillData == null)
  58. {
  59. return;
  60. }
  61. if (!isUpGrad)
  62. {
  63. isUpGrad = true;
  64. UpdateStarBtn();
  65. return;
  66. }
  67. if (_skillInfo.SkillData.level >= _skillPowerupConfigs.Count)
  68. {
  69. TipMessagePanel.OpenTipMessagePanel("已经满级!");
  70. return;
  71. }
  72. if (PlayerManager.Instance.myHero.level.Value < _skillInfo.SkillPowerupConfig.PlayerLevelLimit)
  73. {
  74. HeroPowerUpConfig heroPowerUpConfig = ConfigComponent.Instance.Get<HeroPowerUpConfig>(_skillInfo.SkillPowerupConfig.PlayerLevelLimit);
  75. TipMessagePanel.OpenTipMessagePanel($"需境界达到{LanguageManager.Instance.Text(heroPowerUpConfig.jingjieLanIDs[0]) + LanguageManager.Instance.Text(heroPowerUpConfig.jingjieLanIDs[1]) + LanguageManager.Instance.Text(heroPowerUpConfig.jingjieLanIDs[2])}");
  76. return;
  77. }
  78. for (var i = 0; i < _skillInfo.SkillPowerupConfig.LevelupItem.Length; i++)
  79. {
  80. if (!PlayerManager.Instance.BagController.IsEnough(_skillInfo.SkillPowerupConfig.LevelupItem[i], _skillInfo.SkillPowerupConfig.LevelupItemNum[i]))
  81. {
  82. TipMessagePanel.OpenTipMessagePanel("道具不足!");
  83. return;
  84. }
  85. }
  86. for (var i = 0; i < _skillInfo.SkillPowerupConfig.LevelupItem.Length; i++)
  87. {
  88. if (!PlayerManager.Instance.BagController.DeductItem(_skillInfo.SkillPowerupConfig.LevelupItem[i], _skillInfo.SkillPowerupConfig.LevelupItemNum[i]))
  89. {
  90. TipMessagePanel.OpenTipMessagePanel("道具不足!");
  91. return;
  92. }
  93. }
  94. _skillInfo.SkillData.level++;
  95. _skillInfo.CustomInt(_skillInfo.SkillData);
  96. CustomInit(_skillInfo);
  97. AccountFileInfo.Instance.SavePlayerData();
  98. });
  99. Btn_UpStar.onClick.AddListener(() =>
  100. {
  101. if (!isUpStar)
  102. {
  103. isUpStar = true;
  104. UpdateStarBtn();
  105. return;
  106. }
  107. if (_skillInfo.SkillData == null)
  108. {
  109. return;
  110. }
  111. if (_skillInfo.SkillData.star > _gongFaUpgradeInfoWidgets.Count)
  112. {
  113. TipMessagePanel.OpenTipMessagePanel("已经满星!");
  114. return;
  115. }
  116. int count = skillConstant.SkillPromoteNeedPieceNum[_skillInfo.skillConfig.level];
  117. if (!PlayerManager.Instance.BagController.DeductItem(_skillInfo.skillConfig.PieceID, count))
  118. {
  119. TipMessagePanel.OpenTipMessagePanel("道具不足!");
  120. return;
  121. }
  122. _skillInfo.SkillData.star++;
  123. _skillInfo.CustomInt(_skillInfo.SkillData);
  124. CustomInit(_skillInfo);
  125. AccountFileInfo.Instance.SavePlayerData();
  126. });
  127. }
  128. public async void CustomInit(SkillInfo skillInfo)
  129. {
  130. foreach (var gongFaUpgradeInfoWidget in _gongFaUpgradeInfoWidgets)
  131. {
  132. UIManager.Instance.DormancyGComponent(gongFaUpgradeInfoWidget);
  133. }
  134. _gongFaUpgradeInfoWidgets.Clear();
  135. _skillInfo = skillInfo;
  136. _skillPowerupConfigs = ConfigComponent.Instance.GetAll<SkillPowerupConfig>().ToList();
  137. SkillConfig skillConfig = _skillInfo.skillConfig;
  138. Icon_GongFaIcon.icon_name = skillConfig.icon;
  139. Text_Level1.text = "Lv." + _skillInfo.SkillPowerupConfig.ID.ToString();
  140. Text_Level.text = "Lv." + _skillInfo.SkillPowerupConfig.ID.ToString();
  141. Text_SkillCd.text = $"功法运作周期:{skillConfig.cd}转";
  142. skillConstant = ConfigComponent.Instance.Get<SkillConstant>(1);
  143. UpdateStarBtn();
  144. Text_GongFaDesc.text = UtilTools.GetString(LanguageManager.Instance.Text(skillConfig.dec), _skillInfo.effectValue);
  145. Text_GongFaName.text = LanguageManager.Instance.Text(skillConfig.name) + " ";
  146. LayoutRebuilder.ForceRebuildLayoutImmediate(Text_GongFaName.GetComponent<RectTransform>());
  147. LayoutRebuilder.ForceRebuildLayoutImmediate(Text_Level.GetComponent<RectTransform>());
  148. LayoutRebuilder.ForceRebuildLayoutImmediate(Text_GongFaName.transform.parent.GetComponent<RectTransform>());
  149. switch (skillConfig.attribute)
  150. {
  151. case 1:
  152. Icon_Attribute.icon_name = "dec_jin";
  153. break;
  154. case 2:
  155. Icon_Attribute.icon_name = "dec_mu";
  156. break;
  157. case 4:
  158. Icon_Attribute.icon_name = "dec_shui";
  159. break;
  160. case 8:
  161. Icon_Attribute.icon_name = "dec_huo";
  162. break;
  163. case 16:
  164. Icon_Attribute.icon_name = "dec_tu";
  165. break;
  166. }
  167. for (var i = 0; i < StarRoot.Count; i++)
  168. {
  169. MyImage icon = StarRoot[i] as MyImage;
  170. if (i < skillInfo.skillConfig.level - 1)
  171. {
  172. icon.gameObject.SetActive(true);
  173. }
  174. else
  175. {
  176. icon.gameObject.SetActive(false);
  177. }
  178. }
  179. // for (var i = 0; i < StarRoot.Count; i++)
  180. // {
  181. // MyImage myImage = StarRoot[i] as MyImage;
  182. // myImage.gameObject.SetActive(false);
  183. // }
  184. //
  185. // int yinstar = skillInfo.skillConfig.level - 5;
  186. // for (var i = 0; i < StarRoot.Count; i++)
  187. // {
  188. // MyImage icon = StarRoot[i] as MyImage;
  189. // if (skillInfo.skillConfig.level > 5)
  190. // {
  191. // if (i < yinstar)
  192. // {
  193. // icon.icon_name = "dec_star_2";
  194. // icon.gameObject.SetActive(true);
  195. // }
  196. // else
  197. // {
  198. // icon.icon_name = "dec_gfxingji";
  199. // icon.gameObject.SetActive(true);
  200. // }
  201. // }
  202. // else
  203. // {
  204. // if (i < skillInfo.skillConfig.level)
  205. // {
  206. // icon.icon_name = "dec_gfxingji";
  207. // icon.gameObject.SetActive(true);
  208. // }
  209. // }
  210. // }
  211. List<SkillConfig> allSkillConfigs = ConfigComponent.Instance.GetAll<SkillConfig>().ToList();
  212. configs = allSkillConfigs.Where(s => s.IDGroup == skillConfig.IDGroup).ToList();
  213. for (var i = 0; i < configs.Count; i++)
  214. {
  215. if (configs[i].level == 1)
  216. continue;
  217. SkillInfo skillInfo1 = new SkillInfo(configs[i].IDGroup, _skillInfo.SkillPowerupConfig.ID,configs[i].level);
  218. GongFaUpgradeInfoWidget gongFaUpgradeInfoWidget = await UIManager.Instance.CreateGComponent<GongFaUpgradeInfoWidget>(null, Content);
  219. gongFaUpgradeInfoWidget.CustomInit(_skillInfo, skillInfo1);
  220. _gongFaUpgradeInfoWidgets.Add(gongFaUpgradeInfoWidget);
  221. }
  222. }
  223. private async CTask UpdateStarBtn()
  224. {
  225. foreach (var itemWidgetType1 in _itemWidgetType1)
  226. {
  227. UIManager.Instance.DormancyGComponent(itemWidgetType1);
  228. }
  229. _itemWidgetType1.Clear();
  230. foreach (var energyWidget in _energyWidgets)
  231. {
  232. UIManager.Instance.DormancyGComponent(energyWidget);
  233. }
  234. _energyWidgets.Clear();
  235. if (isUpGrad)
  236. {
  237. if (_skillInfo.SkillData.level < _skillPowerupConfigs.Count)
  238. {
  239. Btn_UpStar.gameObject.SetActive(false);
  240. if (PlayerManager.Instance.myHero.level.Value < _skillInfo.SkillPowerupConfig.PlayerLevelLimit)
  241. {
  242. HeroPowerUpConfig heroPowerUpConfig = ConfigComponent.Instance.Get<HeroPowerUpConfig>(_skillInfo.SkillPowerupConfig.PlayerLevelLimit);
  243. Text_UpGrade.text = $"需境界达到{LanguageManager.Instance.Text(heroPowerUpConfig.jingjieLanIDs[0]) + LanguageManager.Instance.Text(heroPowerUpConfig.jingjieLanIDs[1]) + LanguageManager.Instance.Text(heroPowerUpConfig.jingjieLanIDs[2])}";
  244. Btn_UpGrade.gameObject.transform.Gray(true);
  245. UpGradeItemRoot.SetActive(false);
  246. }
  247. else
  248. {
  249. Btn_UpGrade.gameObject.transform.RecoverColor();
  250. Text_UpGrade.text = "升级";
  251. UpGradeItemRoot.SetActive(true);
  252. for (var i = 0; i < _skillInfo.SkillPowerupConfig.LevelupItem.Length; i++)
  253. {
  254. ItemWidgetType1 itemWidgetType1 = await UIManager.Instance.CreateGComponentForObject<ItemWidgetType1>(ItemWidgetType1Gam, null, UpGradeItemRoot.GetComponent<RectTransform>(), isInstance: true);
  255. itemWidgetType1.CustomInit(_skillInfo.SkillPowerupConfig.LevelupItem[i], _skillInfo.SkillPowerupConfig.LevelupItemNum[i]);
  256. _itemWidgetType1.Add(itemWidgetType1);
  257. EnergyWidget energyWidget =
  258. await UIManager.Instance.CreateGComponent<EnergyWidget>(null, EnergyRoot);
  259. energyWidget.CustomInit(_skillInfo.SkillPowerupConfig.LevelupItem[i]);
  260. _energyWidgets.Add(energyWidget);
  261. }
  262. }
  263. }
  264. else
  265. {
  266. Text_UpGrade.text = "已满级";
  267. Btn_UpStar.gameObject.SetActive(false);
  268. UpGradeItemRoot.SetActive(false);
  269. }
  270. }
  271. if (isUpStar)
  272. {
  273. if (_skillInfo.skillConfig.level < 6)
  274. {
  275. Btn_UpStar.gameObject.transform.RecoverColor();
  276. Text_UpStar.text = "领悟";
  277. Btn_UpGrade.gameObject.SetActive(false);
  278. UpStarItemRoot.SetActive(true);
  279. int count = skillConstant.SkillPromoteNeedPieceNum[_skillInfo.skillConfig.level];
  280. ItemWidgetType1 itemWidgetType1 = await UIManager.Instance.CreateGComponentForObject<ItemWidgetType1>(ItemWidgetType1Gam, null, UpStarItemRoot.GetComponent<RectTransform>(), isInstance: true);
  281. itemWidgetType1.CustomInit(_skillInfo.skillConfig.PieceID, count);
  282. _itemWidgetType1.Add(itemWidgetType1);
  283. EnergyWidget energyWidget =
  284. await UIManager.Instance.CreateGComponent<EnergyWidget>(null, EnergyRoot);
  285. energyWidget.CustomInit(_skillInfo.skillConfig.PieceID);
  286. _energyWidgets.Add(energyWidget);
  287. }
  288. else
  289. {
  290. Text_UpStar.text = "已满星";
  291. Btn_UpGrade.gameObject.SetActive(false);
  292. UpStarItemRoot.SetActive(false);
  293. }
  294. }
  295. if (!isUpGrad && !isUpStar)
  296. {
  297. Btn_UpGrade.gameObject.SetActive(true);
  298. Btn_UpStar.gameObject.SetActive(true);
  299. UpStarItemRoot.SetActive(false);
  300. UpGradeItemRoot.SetActive(false);
  301. Text_UpStar.text = "领悟";
  302. Text_UpGrade.text = "升级";
  303. Btn_UpGrade.gameObject.transform.RecoverColor();
  304. }
  305. LayoutRebuilder.ForceRebuildLayoutImmediate(UpStarItemRoot.GetComponent<RectTransform>());
  306. LayoutRebuilder.ForceRebuildLayoutImmediate(UpGradeItemRoot.GetComponent<RectTransform>());
  307. LayoutRebuilder.ForceRebuildLayoutImmediate(Text_UpStar.GetComponent<RectTransform>());
  308. LayoutRebuilder.ForceRebuildLayoutImmediate(Text_UpGrade.GetComponent<RectTransform>());
  309. LayoutRebuilder.ForceRebuildLayoutImmediate(UpGradeItemRoot.transform.parent.GetComponent<RectTransform>());
  310. LayoutRebuilder.ForceRebuildLayoutImmediate(UpStarItemRoot.transform.parent.GetComponent<RectTransform>());
  311. LayoutRebuilder.ForceRebuildLayoutImmediate(Btn_UpGrade.GetComponent<RectTransform>());
  312. }
  313. public async static CTask<GongFaUpgradePanel> Open(SkillInfo skillInfo)
  314. {
  315. GongFaUpgradePanel gongFaUpgradePanel = await UIManager.Instance.LoadAndOpenPanel<GongFaUpgradePanel>(null);
  316. gongFaUpgradePanel.CustomInit(skillInfo);
  317. return gongFaUpgradePanel;
  318. }
  319. public override void Close()
  320. {
  321. foreach (var gongFaUpgradeInfoWidget in _gongFaUpgradeInfoWidgets)
  322. {
  323. UIManager.Instance.DormancyGComponent(gongFaUpgradeInfoWidget);
  324. }
  325. foreach (var itemWidgetType1 in _itemWidgetType1)
  326. {
  327. UIManager.Instance.DormancyGComponent(itemWidgetType1);
  328. }
  329. foreach (var energyWidget in _energyWidgets)
  330. {
  331. UIManager.Instance.DormancyGComponent(energyWidget);
  332. }
  333. _energyWidgets.Clear();
  334. _itemWidgetType1.Clear();
  335. _gongFaUpgradeInfoWidgets.Clear();
  336. isUpStar = false;
  337. isUpGrad = false;
  338. _skillInfo = null;
  339. base.Close();
  340. }
  341. }
  342. }