GongFaUpgradePanel.cs 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471
  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 =
  75. ConfigComponent.Instance.Get<HeroPowerUpConfig>(_skillInfo.SkillPowerupConfig.PlayerLevelLimit);
  76. TipMessagePanel.OpenTipMessagePanel(
  77. $"需境界达到{LanguageManager.Instance.Text(heroPowerUpConfig.jingjieLanIDs[0]) + LanguageManager.Instance.Text(heroPowerUpConfig.jingjieLanIDs[1]) + LanguageManager.Instance.Text(heroPowerUpConfig.jingjieLanIDs[2])}");
  78. return;
  79. }
  80. for (var i = 0; i < _skillInfo.SkillPowerupConfig.LevelupItem.Length; i++)
  81. {
  82. if (!PlayerManager.Instance.BagController.IsEnough(_skillInfo.SkillPowerupConfig.LevelupItem[i],
  83. _skillInfo.SkillPowerupConfig.LevelupItemNum[i]))
  84. {
  85. ItemSourcePanel.OpenPanel(_skillInfo.SkillPowerupConfig.LevelupItem[i]);
  86. TipMessagePanel.OpenTipMessagePanel("道具不足!");
  87. return;
  88. }
  89. }
  90. // for (var i = 0; i < _skillInfo.SkillPowerupConfig.LevelupItem.Length; i++)
  91. // {
  92. // if (!PlayerManager.Instance.BagController.DeductItem(_skillInfo.SkillPowerupConfig.LevelupItem[i],
  93. // _skillInfo.SkillPowerupConfig.LevelupItemNum[i]))
  94. // {
  95. // ItemSourcePanel.OpenPanel(_skillInfo.SkillPowerupConfig.LevelupItem[i]);
  96. // TipMessagePanel.OpenTipMessagePanel("道具不足!");
  97. // return;
  98. // }
  99. // }
  100. _skillInfo.SkillData.level++;
  101. _skillInfo.CustomInt(_skillInfo.SkillData);
  102. CustomInit(_skillInfo);
  103. AccountFileInfo.Instance.SavePlayerData();
  104. });
  105. Btn_UpStar.onClick.AddListener(() =>
  106. {
  107. if (!isUpStar)
  108. {
  109. isUpStar = true;
  110. UpdateStarBtn();
  111. return;
  112. }
  113. if (_skillInfo.SkillData == null)
  114. {
  115. return;
  116. }
  117. if (_skillInfo.SkillData.star > _gongFaUpgradeInfoWidgets.Count)
  118. {
  119. TipMessagePanel.OpenTipMessagePanel("已经满星!");
  120. return;
  121. }
  122. int count = skillConstant.SkillPromoteNeedPieceNum[_skillInfo.skillConfig.level];
  123. if (!PlayerManager.Instance.BagController.DeductItem(_skillInfo.skillConfig.PieceID, count))
  124. {
  125. ItemSourcePanel.OpenPanel(_skillInfo.skillConfig.PieceID);
  126. TipMessagePanel.OpenTipMessagePanel("道具不足!");
  127. return;
  128. }
  129. _skillInfo.SkillData.star++;
  130. _skillInfo.CustomInt(_skillInfo.SkillData);
  131. CustomInit(_skillInfo);
  132. AccountFileInfo.Instance.SavePlayerData();
  133. });
  134. }
  135. public async void CustomInit(SkillInfo skillInfo)
  136. {
  137. foreach (var gongFaUpgradeInfoWidget in _gongFaUpgradeInfoWidgets)
  138. {
  139. UIManager.Instance.DormancyGComponent(gongFaUpgradeInfoWidget);
  140. }
  141. _gongFaUpgradeInfoWidgets.Clear();
  142. _skillInfo = skillInfo;
  143. _skillPowerupConfigs = ConfigComponent.Instance.GetAll<SkillPowerupConfig>().ToList();
  144. SkillConfig skillConfig = _skillInfo.skillConfig;
  145. Icon_GongFaIcon.icon_name = skillConfig.icon;
  146. Text_Level1.text = "Lv." + _skillInfo.SkillPowerupConfig.ID.ToString();
  147. Text_Level.text = "Lv." + _skillInfo.SkillPowerupConfig.ID.ToString();
  148. Text_SkillCd.text = $"加功法盘速度:{skillConfig.addcd}秒";
  149. skillConstant = ConfigComponent.Instance.Get<SkillConstant>(1);
  150. UpdateStarBtn();
  151. Text_GongFaDesc.text =
  152. UtilTools.GetString(LanguageManager.Instance.Text(skillConfig.dec), _skillInfo.effectValue);
  153. Text_GongFaName.text = LanguageManager.Instance.Text(skillConfig.name) + " ";
  154. LayoutRebuilder.ForceRebuildLayoutImmediate(Text_GongFaName.GetComponent<RectTransform>());
  155. LayoutRebuilder.ForceRebuildLayoutImmediate(Text_Level.GetComponent<RectTransform>());
  156. LayoutRebuilder.ForceRebuildLayoutImmediate(Text_GongFaName.transform.parent.GetComponent<RectTransform>());
  157. switch (skillConfig.attribute)
  158. {
  159. case 1:
  160. Icon_Attribute.icon_name = "dec_jin2";
  161. break;
  162. case 2:
  163. Icon_Attribute.icon_name = "dec_mu2";
  164. break;
  165. case 4:
  166. Icon_Attribute.icon_name = "dec_shui2";
  167. break;
  168. case 8:
  169. Icon_Attribute.icon_name = "dec_huo2";
  170. break;
  171. case 16:
  172. Icon_Attribute.icon_name = "dec_tu2";
  173. break;
  174. }
  175. for (var i = 0; i < StarRoot.Count; i++)
  176. {
  177. MyImage icon = StarRoot[i] as MyImage;
  178. if (i < skillInfo.skillConfig.level - 1)
  179. {
  180. icon.gameObject.SetActive(true);
  181. }
  182. else
  183. {
  184. icon.gameObject.SetActive(false);
  185. }
  186. }
  187. // for (var i = 0; i < StarRoot.Count; i++)
  188. // {
  189. // MyImage myImage = StarRoot[i] as MyImage;
  190. // myImage.gameObject.SetActive(false);
  191. // }
  192. //
  193. // int yinstar = skillInfo.skillConfig.level - 5;
  194. // for (var i = 0; i < StarRoot.Count; i++)
  195. // {
  196. // MyImage icon = StarRoot[i] as MyImage;
  197. // if (skillInfo.skillConfig.level > 5)
  198. // {
  199. // if (i < yinstar)
  200. // {
  201. // icon.icon_name = "dec_star_2";
  202. // icon.gameObject.SetActive(true);
  203. // }
  204. // else
  205. // {
  206. // icon.icon_name = "dec_gfxingji";
  207. // icon.gameObject.SetActive(true);
  208. // }
  209. // }
  210. // else
  211. // {
  212. // if (i < skillInfo.skillConfig.level)
  213. // {
  214. // icon.icon_name = "dec_gfxingji";
  215. // icon.gameObject.SetActive(true);
  216. // }
  217. // }
  218. // }
  219. List<SkillConfig> allSkillConfigs = ConfigComponent.Instance.GetAll<SkillConfig>().ToList();
  220. configs = allSkillConfigs.Where(s => s.IDGroup == skillConfig.IDGroup).ToList();
  221. for (var i = 0; i < configs.Count; i++)
  222. {
  223. if (configs[i].level == 1)
  224. continue;
  225. SkillInfo skillInfo1 =
  226. new SkillInfo(configs[i].IDGroup, _skillInfo.SkillPowerupConfig.ID, configs[i].level);
  227. GongFaUpgradeInfoWidget gongFaUpgradeInfoWidget =
  228. await UIManager.Instance.CreateGComponent<GongFaUpgradeInfoWidget>(null, Content);
  229. gongFaUpgradeInfoWidget.CustomInit(_skillInfo, skillInfo1, false);
  230. _gongFaUpgradeInfoWidgets.Add(gongFaUpgradeInfoWidget);
  231. }
  232. }
  233. private async CTask UpdateStarBtn()
  234. {
  235. foreach (var itemWidgetType1 in _itemWidgetType1)
  236. {
  237. UIManager.Instance.DormancyGComponent(itemWidgetType1);
  238. }
  239. _itemWidgetType1.Clear();
  240. // foreach (var energyWidget in _energyWidgets)
  241. // {
  242. // UIManager.Instance.DormancyGComponent(energyWidget);
  243. // }
  244. //
  245. // _energyWidgets.Clear();
  246. if (isUpGrad)
  247. {
  248. if (_skillInfo.SkillData.level < _skillPowerupConfigs.Count)
  249. {
  250. AccountFileInfo.SkillData skillData = new AccountFileInfo.SkillData();
  251. skillData.id = _skillInfo.SkillData.id;
  252. skillData.level = _skillInfo.SkillData.level + 1;
  253. skillData.star = _skillInfo.SkillData.star;
  254. SkillInfo nextSkillInfo = new SkillInfo(skillData);
  255. string[] effs = new string[_skillInfo.effectValue.Length];
  256. for (var i = 0; i < _skillInfo.effectValue.Length; i++)
  257. {
  258. if (_skillInfo.effectValue[i] == nextSkillInfo.effectValue[i])
  259. {
  260. effs[i] = _skillInfo.effectValue[i].ToString();
  261. }
  262. else
  263. {
  264. effs[i] =
  265. $"{_skillInfo.effectValue[i].ToString()}<color=green>→({nextSkillInfo.effectValue[i]})</color>";
  266. }
  267. }
  268. Text_NextLevel.gameObject.SetActive(true);
  269. Text_NextLevel.text =
  270. $"{_skillInfo.SkillPowerupConfig.ID}级 → {nextSkillInfo.SkillPowerupConfig.ID}级";
  271. Text_GongFaDesc.text =
  272. UtilTools.GetString(LanguageManager.Instance.Text(_skillInfo.skillConfig.dec), effs);
  273. Btn_UpStar.gameObject.SetActive(false);
  274. Btn_UpGrade.GetComponent<RectTransform>().sizeDelta = new Vector2(481, 80);
  275. if (PlayerManager.Instance.myHero.level.Value < _skillInfo.SkillPowerupConfig.PlayerLevelLimit)
  276. {
  277. HeroPowerUpConfig heroPowerUpConfig =
  278. ConfigComponent.Instance.Get<HeroPowerUpConfig>(_skillInfo.SkillPowerupConfig
  279. .PlayerLevelLimit);
  280. Text_UpGrade.text =
  281. $"需境界达到{LanguageManager.Instance.Text(heroPowerUpConfig.jingjieLanIDs[0]) + LanguageManager.Instance.Text(heroPowerUpConfig.jingjieLanIDs[1]) + LanguageManager.Instance.Text(heroPowerUpConfig.jingjieLanIDs[2])}";
  282. Btn_UpGrade.gameObject.transform.Gray(true);
  283. UpGradeItemRoot.SetActive(false);
  284. }
  285. else
  286. {
  287. Btn_UpGrade.gameObject.transform.RecoverColor();
  288. Text_UpGrade.text = "升级";
  289. UpGradeItemRoot.SetActive(true);
  290. for (var i = 0; i < _skillInfo.SkillPowerupConfig.LevelupItem.Length; i++)
  291. {
  292. ItemWidgetType1 itemWidgetType1 =
  293. await UIManager.Instance.CreateGComponentForObject<ItemWidgetType1>(ItemWidgetType1Gam,
  294. null, UpGradeItemRoot.GetComponent<RectTransform>(), isInstance: true);
  295. itemWidgetType1.CustomInit(_skillInfo.SkillPowerupConfig.LevelupItem[i],
  296. _skillInfo.SkillPowerupConfig.LevelupItemNum[i]);
  297. _itemWidgetType1.Add(itemWidgetType1);
  298. // EnergyWidget energyWidget =
  299. // await UIManager.Instance.CreateGComponent<EnergyWidget>(null, EnergyRoot);
  300. // energyWidget.CustomInit(_skillInfo.SkillPowerupConfig.LevelupItem[i]);
  301. // _energyWidgets.Add(energyWidget);
  302. }
  303. // Text_GongFaDesc.text = UtilTools.GetString(LanguageManager.Instance.Text(_skillInfo.skillConfig.dec), _skillInfo.effectValue);
  304. }
  305. }
  306. else
  307. {
  308. Text_NextLevel.gameObject.SetActive(true);
  309. Text_NextLevel.text = $"{_skillInfo.skillConfig.level}级 → Max级";
  310. Text_UpGrade.text = "已满级";
  311. Btn_UpStar.gameObject.SetActive(false);
  312. UpGradeItemRoot.SetActive(false);
  313. }
  314. }
  315. if (isUpStar)
  316. {
  317. Btn_UpStar.GetComponent<RectTransform>().sizeDelta = new Vector2(481, 80);
  318. foreach (var gongFaUpgradeInfoWidget in _gongFaUpgradeInfoWidgets)
  319. {
  320. gongFaUpgradeInfoWidget.SelectWidget(true);
  321. }
  322. if (_skillInfo.skillConfig.level < 6)
  323. {
  324. Btn_UpStar.gameObject.transform.RecoverColor();
  325. Text_UpStar.text = "领悟";
  326. Btn_UpGrade.gameObject.SetActive(false);
  327. UpStarItemRoot.SetActive(true);
  328. int count = skillConstant.SkillPromoteNeedPieceNum[_skillInfo.skillConfig.level];
  329. ItemWidgetType1 itemWidgetType1 =
  330. await UIManager.Instance.CreateGComponentForObject<ItemWidgetType1>(ItemWidgetType1Gam, null,
  331. UpStarItemRoot.GetComponent<RectTransform>(), isInstance: true);
  332. itemWidgetType1.CustomInit(_skillInfo.skillConfig.PieceID, count);
  333. _itemWidgetType1.Add(itemWidgetType1);
  334. // EnergyWidget energyWidget =
  335. // await UIManager.Instance.CreateGComponent<EnergyWidget>(null, EnergyRoot);
  336. // energyWidget.CustomInit(_skillInfo.skillConfig.PieceID);
  337. // _energyWidgets.Add(energyWidget);
  338. }
  339. else
  340. {
  341. Text_UpStar.text = "已满星";
  342. Btn_UpGrade.gameObject.SetActive(false);
  343. UpStarItemRoot.SetActive(false);
  344. }
  345. }
  346. if (!isUpGrad && !isUpStar)
  347. {
  348. Btn_UpGrade.GetComponent<RectTransform>().sizeDelta = new Vector2(253, 80);
  349. Btn_UpStar.GetComponent<RectTransform>().sizeDelta = new Vector2(253, 80);
  350. Btn_UpGrade.gameObject.SetActive(true);
  351. Btn_UpStar.gameObject.SetActive(true);
  352. UpStarItemRoot.SetActive(false);
  353. UpGradeItemRoot.SetActive(false);
  354. Text_UpStar.text = "领悟";
  355. Text_UpGrade.text = "升级";
  356. Btn_UpGrade.gameObject.transform.RecoverColor();
  357. foreach (var gongFaUpgradeInfoWidget in _gongFaUpgradeInfoWidgets)
  358. {
  359. gongFaUpgradeInfoWidget.SelectWidget(false);
  360. }
  361. Text_NextLevel.gameObject.SetActive(false);
  362. Text_GongFaDesc.text = UtilTools.GetString(LanguageManager.Instance.Text(_skillInfo.skillConfig.dec),
  363. _skillInfo.effectValue);
  364. }
  365. LayoutRebuilder.ForceRebuildLayoutImmediate(UpStarItemRoot.GetComponent<RectTransform>());
  366. LayoutRebuilder.ForceRebuildLayoutImmediate(UpGradeItemRoot.GetComponent<RectTransform>());
  367. LayoutRebuilder.ForceRebuildLayoutImmediate(Text_UpStar.GetComponent<RectTransform>());
  368. LayoutRebuilder.ForceRebuildLayoutImmediate(Text_UpGrade.GetComponent<RectTransform>());
  369. LayoutRebuilder.ForceRebuildLayoutImmediate(UpGradeItemRoot.transform.parent.GetComponent<RectTransform>());
  370. LayoutRebuilder.ForceRebuildLayoutImmediate(UpStarItemRoot.transform.parent.GetComponent<RectTransform>());
  371. LayoutRebuilder.ForceRebuildLayoutImmediate(Btn_UpGrade.GetComponent<RectTransform>());
  372. }
  373. public async static CTask<GongFaUpgradePanel> Open(SkillInfo skillInfo)
  374. {
  375. GongFaUpgradePanel gongFaUpgradePanel = await UIManager.Instance.LoadAndOpenPanel<GongFaUpgradePanel>(null);
  376. gongFaUpgradePanel.CustomInit(skillInfo);
  377. return gongFaUpgradePanel;
  378. }
  379. public override void Close()
  380. {
  381. foreach (var gongFaUpgradeInfoWidget in _gongFaUpgradeInfoWidgets)
  382. {
  383. UIManager.Instance.DormancyGComponent(gongFaUpgradeInfoWidget);
  384. }
  385. foreach (var itemWidgetType1 in _itemWidgetType1)
  386. {
  387. UIManager.Instance.DormancyGComponent(itemWidgetType1);
  388. }
  389. //
  390. // foreach (var energyWidget in _energyWidgets)
  391. // {
  392. // UIManager.Instance.DormancyGComponent(energyWidget);
  393. // }
  394. //
  395. // _energyWidgets.Clear();
  396. _itemWidgetType1.Clear();
  397. _gongFaUpgradeInfoWidgets.Clear();
  398. isUpStar = false;
  399. isUpGrad = false;
  400. _skillInfo = null;
  401. base.Close();
  402. }
  403. }
  404. }