UseExpElixirPanel.cs 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. using System.Collections.Generic;
  2. using System.Linq;
  3. using Core.Audio;
  4. using Core.Language;
  5. using Core.UI.UTool;
  6. using Excel2Json;
  7. using Fort23.Core;
  8. using Fort23.UTool;
  9. using GameLogic.Bag;
  10. using UnityEngine;
  11. using Utility.CTween;
  12. namespace Fort23.Mono
  13. {
  14. [UIBinding(prefab = "UseExpElixirPanel")]
  15. public partial class UseExpElixirPanel : UIPanel
  16. {
  17. List<ExpElixirItemWidget> _expElixirItemWidgets = new List<ExpElixirItemWidget>();
  18. private void Init()
  19. {
  20. // IsShowAppBar = false;
  21. isAddStack = true;
  22. }
  23. public override CTask GetFocus()
  24. {
  25. AppBarPanel.OpenPanel(this);
  26. return base.GetFocus();
  27. }
  28. protected override void AddEvent()
  29. {
  30. }
  31. protected override void DelEvent()
  32. {
  33. }
  34. public override void AddButtonEvent()
  35. {
  36. Btn_Close.onClick.AddListener(() => { UIManager.Instance.HideUIUIPanel(this); });
  37. }
  38. public async void CustomInit()
  39. {
  40. List<ItemConfig> itemConfigs = ConfigComponent.Instance.GetAll<ItemConfig>().ToList();
  41. List<ItemConfig> itemConfigs2 = itemConfigs
  42. .Where(i => i.itemTag == 5 && PlayerManager.Instance.BagController.IsEnough(i.ID, 1)).ToList();
  43. foreach (var itemConfig in itemConfigs2)
  44. {
  45. ExpElixirItemWidget elixirItemWidget =
  46. await UIManager.Instance.CreateGComponent<ExpElixirItemWidget>(null, Content);
  47. elixirItemWidget.CustomInit(itemConfig.ID);
  48. elixirItemWidget.OnClick = OnClick;
  49. _expElixirItemWidgets.Add(elixirItemWidget);
  50. }
  51. Text_UseCount.text = LanguageManager.Instance.Text(10882, AccountFileInfo.Instance.playerData.todayUseExpElixrPanelCount, 20);
  52. }
  53. private async void OnClick(ItemWidgetBasic obj)
  54. {
  55. ExpElixirItemWidget elixirItemWidget = obj as ExpElixirItemWidget;
  56. if (AccountFileInfo.Instance.playerData.todayUseExpElixrPanelCount >= 20)
  57. {
  58. TipMessagePanel.OpenTipMessagePanel(10881);
  59. return;
  60. }
  61. //TODO 消耗:修为丹
  62. if (PlayerManager.Instance.BagController.DeductItem(elixirItemWidget.ItemConfig.ID, 1))
  63. {
  64. // PlayerManager.Instance.myHero.heroData.exp += elixirItemWidget.ItemConfig.associateVlaue[0];
  65. AccountFileInfo.Instance.playerData.todayUseExpElixrPanelCount++;
  66. AccountFileInfo.Instance.SavePlayerData();
  67. AudioManager.Instance.PlayAudio("ui_shiyonghuode");
  68. }
  69. else
  70. {
  71. TipMessagePanel.OpenTipMessagePanel(10324);
  72. return;
  73. }
  74. elixirItemWidget.fx_ui_danyao_qi.gameObject.SetActive(true);
  75. elixirItemWidget.fx_ui_danyao_qi.Play();
  76. HeroInformationPanel heroInformationPanel = UIManager.Instance.GetComponent<HeroInformationPanel>();
  77. // heroInformationPanel.UseExpElixir()
  78. GameObjectPool gameObjectPool = null;
  79. gameObjectPool = await GObjectPool.Instance.FetchAsync<GameObjectPool>("fx_ui_danyao_tw");
  80. gameObjectPool.own.transform.SetParent(this.transform);
  81. Vector2 pos = transform.worldToLocalMatrix * elixirItemWidget.fx_ui_danyao_qi.transform.position;
  82. Vector2 pos1 = transform.worldToLocalMatrix *
  83. heroInformationPanel.fxroot.GetComponent<RectTransform>().position;
  84. gameObjectPool.own.GetComponent<RectTransform>().anchoredPosition = pos;
  85. CustomTweenManager
  86. .To(() => pos, x => gameObjectPool.own.transform.GetComponent<RectTransform>().anchoredPosition = x,
  87. pos1, 0.5f, gameObjectPool.own)
  88. .SetEase(CustomTweenEX.CustomAnimationCurve.Line).SetLoop(false).OnCompleteAction = () =>
  89. {
  90. GObjectPool.Instance.Recycle(gameObjectPool);
  91. heroInformationPanel.fx_ui_danyao_shi.gameObject.SetActive(true);
  92. heroInformationPanel.fx_ui_danyao_shi.Play();
  93. };
  94. int exp = 0;
  95. AccumulatorUtility.StartAccumulation(
  96. elixirItemWidget.ItemConfig.associateVlaue[0], 0.2f, 20,
  97. current =>
  98. {
  99. PlayerManager.Instance.myHero.heroData.exp += current;
  100. AccountFileInfo.Instance.SavePlayerData();
  101. // LogTool.Error("z" + current);
  102. },
  103. () => Debug.Log("累加完成!")
  104. );
  105. Text_UseCount.text = LanguageManager.Instance.Text(10882, AccountFileInfo.Instance.playerData.todayUseExpElixrPanelCount, 20);
  106. }
  107. public async static CTask<UseExpElixirPanel> OpenPanel()
  108. {
  109. UseExpElixirPanel useExpElixirPanel =
  110. await UIManager.Instance.LoadAndOpenPanel<UseExpElixirPanel>(null, UILayer.Top, isFocus: false);
  111. useExpElixirPanel.CustomInit();
  112. return useExpElixirPanel;
  113. }
  114. public async override CTask Close()
  115. {
  116. foreach (var expElixirItemWidget in _expElixirItemWidgets)
  117. {
  118. UIManager.Instance.DormancyGComponent(expElixirItemWidget);
  119. }
  120. _expElixirItemWidgets.Clear();
  121. await base.Close();
  122. }
  123. }
  124. }