UseExpElixirPanel.cs 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  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 = await UIManager.Instance.CreateGComponent<ExpElixirItemWidget>(null, Content);
  33. elixirItemWidget.CustomInit(itemConfig.ID);
  34. elixirItemWidget.onClick = OnClick;
  35. _expElixirItemWidgets.Add(elixirItemWidget);
  36. }
  37. Text_UseCount.text = $"今日\n{AccountFileInfo.Instance.playerData.todayUseExpElixrPanelCount}/20";
  38. }
  39. private void OnClick(ItemWidgetBasic obj)
  40. {
  41. ExpElixirItemWidget elixirItemWidget = obj as ExpElixirItemWidget;
  42. if (AccountFileInfo.Instance.playerData.todayUseExpElixrPanelCount >= 20)
  43. {
  44. TipMessagePanel.OpenTipMessagePanel("今日使用经验已达上限!");
  45. return;
  46. }
  47. if (PlayerManager.Instance.BagController.DeductItem(elixirItemWidget.ItemConfig.ID, 1))
  48. {
  49. PlayerManager.Instance.myHero.heroData.exp += elixirItemWidget.ItemConfig.associateVlaue[0];
  50. AccountFileInfo.Instance.playerData.todayUseExpElixrPanelCount++;
  51. AccountFileInfo.Instance.SavePlayerData();
  52. }
  53. else
  54. {
  55. TipMessagePanel.OpenTipMessagePanel("道具不足!");
  56. return;
  57. }
  58. Text_UseCount.text = $"今日\n{AccountFileInfo.Instance.playerData.todayUseExpElixrPanelCount}/20";
  59. }
  60. public async static CTask<UseExpElixirPanel> OpenPanel()
  61. {
  62. UseExpElixirPanel useExpElixirPanel = await UIManager.Instance.LoadAndOpenPanel<UseExpElixirPanel>(null);
  63. useExpElixirPanel.CustomInit();
  64. return useExpElixirPanel;
  65. }
  66. public override void Close()
  67. {
  68. foreach (var expElixirItemWidget in _expElixirItemWidgets)
  69. {
  70. UIManager.Instance.DormancyGComponent(expElixirItemWidget);
  71. }
  72. _expElixirItemWidgets.Clear();
  73. base.Close();
  74. }
  75. }
  76. }