using System.Collections.Generic; using System.Linq; using Core.Audio; using Excel2Json; using Fort23.Core; using Fort23.UTool; using GameLogic.Bag; using UnityEngine; using Utility.CTween; namespace Fort23.Mono { [UIBinding(prefab = "UseExpElixirPanel")] public partial class UseExpElixirPanel : UIPanel { List _expElixirItemWidgets = new List(); private void Init() { // isPopUi = true; isAddStack = true; } public override CTask GetFocus() { AppBarPanel.OpenPanel(this); return base.GetFocus(); } protected override void AddEvent() { } protected override void DelEvent() { } public override void AddButtonEvent() { Btn_Close.onClick.AddListener(() => { UIManager.Instance.HideUIUIPanel(this); }); } public async void CustomInit() { List itemConfigs = ConfigComponent.Instance.GetAll().ToList(); List itemConfigs2 = itemConfigs .Where(i => i.itemTag == 5 && PlayerManager.Instance.BagController.IsEnough(i.ID, 1)).ToList(); foreach (var itemConfig in itemConfigs2) { ExpElixirItemWidget elixirItemWidget = await UIManager.Instance.CreateGComponent(null, Content); elixirItemWidget.CustomInit(itemConfig.ID); elixirItemWidget.OnClick = OnClick; _expElixirItemWidgets.Add(elixirItemWidget); } Text_UseCount.text = $"今日\n{AccountFileInfo.Instance.playerData.todayUseExpElixrPanelCount}/20"; } private async void OnClick(ItemWidgetBasic obj) { ExpElixirItemWidget elixirItemWidget = obj as ExpElixirItemWidget; if (AccountFileInfo.Instance.playerData.todayUseExpElixrPanelCount >= 20) { TipMessagePanel.OpenTipMessagePanel("今日使用经验已达上限!"); return; } if (PlayerManager.Instance.BagController.DeductItem(elixirItemWidget.ItemConfig.ID, 1)) { PlayerManager.Instance.myHero.heroData.exp += elixirItemWidget.ItemConfig.associateVlaue[0]; AccountFileInfo.Instance.playerData.todayUseExpElixrPanelCount++; AccountFileInfo.Instance.SavePlayerData(); AudioManager.Instance.PlayAudio("ui_shiyonghuode"); } else { TipMessagePanel.OpenTipMessagePanel("道具不足!"); return; } elixirItemWidget.fx_ui_danyao_qi.gameObject.SetActive(true); elixirItemWidget.fx_ui_danyao_qi.Play(); // CustomTweenManager.To() HeroInformationPanel heroInformationPanel = UIManager.Instance.GetComponent(); // ImageMoveContainer imageMoveContainer = new ImageMoveContainer(); GameObjectPool gameObjectPool = null; gameObjectPool = await GObjectPool.Instance.FetchAsync("fx_ui_danyao_tw"); gameObjectPool.own.transform.SetParent(this.transform); // gameObjectPool.own.transform.GetComponent().anchoredPosition = transform.worldToLocalMatrix * // elixirItemWidget.fx_ui_danyao_qi.transform.position; Vector2 pos = transform.worldToLocalMatrix * elixirItemWidget.fx_ui_danyao_qi.transform.position; Vector2 pos1 = transform.worldToLocalMatrix * heroInformationPanel.fxroot.GetComponent().position; gameObjectPool.own.GetComponent().anchoredPosition = pos; // imageMoveContainer.AddACurve(pos, pos1, 0, 1.5f, gameObjectPool, (i) => // { // heroInformationPanel.fx_ui_danyao_shi.gameObject.SetActive(true); // heroInformationPanel.fx_ui_danyao_shi.Play(); // }); CustomTweenManager .To(() => pos, x => gameObjectPool.own.transform.GetComponent().anchoredPosition = x, pos1, 0.5f, gameObjectPool.own) .SetEase(CustomTweenEX.CustomAnimationCurve.Line).SetLoop(false).OnCompleteAction = () => { GObjectPool.Instance.Recycle(gameObjectPool); heroInformationPanel.fx_ui_danyao_shi.gameObject.SetActive(true); heroInformationPanel.fx_ui_danyao_shi.Play(); }; Text_UseCount.text = $"今日\n{AccountFileInfo.Instance.playerData.todayUseExpElixrPanelCount}/20"; } public async static CTask OpenPanel() { UseExpElixirPanel useExpElixirPanel = await UIManager.Instance.LoadAndOpenPanel(null, UILayer.Top, isFocus: false); useExpElixirPanel.CustomInit(); return useExpElixirPanel; } public async override CTask Close() { foreach (var expElixirItemWidget in _expElixirItemWidgets) { UIManager.Instance.DormancyGComponent(expElixirItemWidget); } _expElixirItemWidgets.Clear(); await base.Close(); } } }