UseExpElixirPanel.cs 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. using System.Collections.Generic;
  2. using System.Linq;
  3. using Excel2Json;
  4. using Fort23.Core;
  5. using Fort23.UTool;
  6. using GameLogic.Bag;
  7. namespace Fort23.Mono
  8. {
  9. [UIBinding(prefab = "UseExpElixirPanel")]
  10. public partial class UseExpElixirPanel : UIPanel
  11. {
  12. List<ExpElixirItemWidget> _expElixirItemWidgets = new List<ExpElixirItemWidget>();
  13. private void Init()
  14. {
  15. }
  16. protected override void AddEvent()
  17. {
  18. }
  19. protected override void DelEvent()
  20. {
  21. }
  22. public override void AddButtonEvent()
  23. {
  24. Btn_Close.onClick.AddListener(() => { UIManager.Instance.HideUIUIPanel(this); });
  25. }
  26. public async void CustomInit()
  27. {
  28. List<ItemConfig> itemConfigs = ConfigComponent.Instance.GetAll<ItemConfig>().ToList();
  29. List<ItemConfig> itemConfigs2 = itemConfigs.Where(i => i.itemTag == 5).ToList();
  30. foreach (var itemConfig in itemConfigs2)
  31. {
  32. ExpElixirItemWidget elixirItemWidget =
  33. await UIManager.Instance.CreateGComponent<ExpElixirItemWidget>(null, Content);
  34. elixirItemWidget.CustomInit(itemConfig.ID);
  35. elixirItemWidget.onClick = OnClick;
  36. _expElixirItemWidgets.Add(elixirItemWidget);
  37. }
  38. Text_UseCount.text = $"今日\n{AccountFileInfo.Instance.playerData.todayUseExpElixrPanelCount}/20";
  39. }
  40. private void OnClick(ItemWidgetBasic obj)
  41. {
  42. ExpElixirItemWidget elixirItemWidget = obj as ExpElixirItemWidget;
  43. if (AccountFileInfo.Instance.playerData.todayUseExpElixrPanelCount >= 20)
  44. {
  45. TipMessagePanel.OpenTipMessagePanel("今日使用经验已达上限!");
  46. return;
  47. }
  48. if (PlayerManager.Instance.BagController.DeductItem(elixirItemWidget.ItemConfig.ID, 1))
  49. {
  50. PlayerManager.Instance.myHero.heroData.exp += elixirItemWidget.ItemConfig.associateVlaue[0];
  51. AccountFileInfo.Instance.playerData.todayUseExpElixrPanelCount++;
  52. AccountFileInfo.Instance.SavePlayerData();
  53. }
  54. else
  55. {
  56. TipMessagePanel.OpenTipMessagePanel("道具不足!");
  57. return;
  58. }
  59. Text_UseCount.text = $"今日\n{AccountFileInfo.Instance.playerData.todayUseExpElixrPanelCount}/20";
  60. }
  61. public async static CTask<UseExpElixirPanel> OpenPanel()
  62. {
  63. UseExpElixirPanel useExpElixirPanel =
  64. await UIManager.Instance.LoadAndOpenPanel<UseExpElixirPanel>(null, UILayer.Top, isFocus: false);
  65. useExpElixirPanel.CustomInit();
  66. return useExpElixirPanel;
  67. }
  68. public override void Close()
  69. {
  70. foreach (var expElixirItemWidget in _expElixirItemWidgets)
  71. {
  72. UIManager.Instance.DormancyGComponent(expElixirItemWidget);
  73. }
  74. _expElixirItemWidgets.Clear();
  75. base.Close();
  76. }
  77. }
  78. }