using System; using System.Collections.Generic; using Cysharp.Threading.Tasks; using UnityEngine; using UnityEngine.UI; public class MinggeEquipWin : UIBase { [SerializeField] MinggeEquipChangeCell oldEquipCell; [SerializeField] MinggeEquipChangeCell newEquipCell; [SerializeField] ScrollRect scrollRect; [SerializeField] GroupButtonEx[] presetBtns; List presetNameTexts = new List(); int selectPresetID = 0; // int lastDropIndex = -1; protected override void InitComponent() { presetNameTexts.Clear(); for (int i = 0; i < presetBtns.Length; i++) { int index = i + 1; presetBtns[i].AddListener(() => { selectPresetID = index; Display(); }); presetNameTexts.Add(presetBtns[i].GetComponentInChildren()); } } protected override void OnPreOpen() { selectPresetID = MinggeManager.Instance.equipShowPresetID; // lastDropIndex = MinggeManager.Instance.selectFloorEquip.gridIndex; // PackManager.Instance.RefreshItemEvent += RefreshItemEvent; Display(); } protected override void OnPreClose() { // PackManager.Instance.RefreshItemEvent -= RefreshItemEvent; MinggeManager.Instance.equipShowPresetID = 0; MinggeManager.Instance.selectFloorEquip = null; if (!UIManager.Instance.IsOpened()) { //将提示的冒泡和红点取消 MinggeManager.Instance.isPauseAuto = false; } MinggeManager.Instance.redpointAuto.state = RedPointState.None; } // void RefreshItemEvent(PackType packType, int index, int itemID) // { // if (packType == PackType.Mingge) // { // MinggeManager.Instance.selectFloorEquip = PackManager.Instance.GetItemByIndex(PackType.MinggeDrop, lastDropIndex); // Display(); // } // } public void RefreshUI() { selectPresetID = MinggeManager.Instance.equipShowPresetID; Display(); } void Display() { var cnt = FuncPresetManager.Instance.GetUnlockCnt((int)FuncPresetType.Mingge); if (cnt == 1) { cnt = 0; } if (cnt > 0) { scrollRect.SetActive(true); for (int i = 0; i < presetBtns.Length; i++) { if (i < cnt) { presetBtns[i].SetActive(true); presetNameTexts[i].text = FuncPresetManager.Instance.GetFuncPreset((int)FuncPresetType.Mingge, i + 1).PresetName; } else { presetBtns[i].SetActive(false); } } presetBtns[selectPresetID - 1].SelectBtn(); //滚动到 selectPresetID 位置 scrollRect.horizontalNormalizedPosition = selectPresetID < 4 ? 0 : selectPresetID * 1f / cnt; } else { scrollRect.SetActive(false); } if (MinggeManager.Instance.selectFloorEquip == null || MinggeManager.Instance.selectFloorEquip.config == null) { DelayCloseWindow().Forget(); Debug.Log("掉落命格不存在"); return; } var packIndex = MinggeManager.Instance.GetPackIndex(selectPresetID, MinggeManager.Instance.selectFloorEquip.config.EquipPlace); var oldEquip = PackManager.Instance.GetItemByIndex(PackType.Mingge, packIndex); if (oldEquip == null) { oldEquipCell.SetActive(false); newEquipCell.SetActive(true); newEquipCell.Display(MinggeManager.Instance.selectFloorEquip, true, oldEquip, selectPresetID); } else { if (oldEquip.guid == MinggeManager.Instance.selectFloorEquip.guid) { Debug.LogError("Display: 新旧命格相同GUID 客户端主动删除背包物品索引=" + MinggeManager.Instance.selectFloorEquip.gridIndex); // PackManager.Instance.GetSinglePack(PackType.MinggeDrop).RemoveItem(MinggeManager.Instance.selectFloorEquip.gridIndex); CloseWindow(); return; } oldEquipCell.SetActive(true); newEquipCell.SetActive(true); oldEquipCell.Display(oldEquip, false, null, selectPresetID); newEquipCell.Display(MinggeManager.Instance.selectFloorEquip, true, oldEquip, selectPresetID); } } }