using UnityEngine; //获得装备界面 public class EquipExchangeWin : UIBase { [SerializeField] EquipExchangeCell oldEquipObj; [SerializeField] EquipExchangeCell newEquipObj; protected override void OnPreOpen() { // 通知主战场暂停 BattleManager.Instance.storyBattleField.IsPause = true; AutoFightModel.Instance.hasAutoExchanged = false; AutoFightModel.Instance.startServerTime = TimeUtility.AllSeconds; EquipModel.Instance.OnEquipOPResultAction += OnRefreshItem; Display(); // if (EquipModel.Instance.newEquipIDToGuideID.ContainsKey(EquipModel.Instance.selectFloorEquip.itemId)) // { // // if (!NewBieCenter.Instance.IsGuideCompleted(EquipModel.Instance.newEquipIDToGuideID[EquipModel.Instance.selectFloorEquip.itemId])) // // NewBieCenter.Instance.StartNewBieGuideEx(EquipModel.Instance.newEquipIDToGuideID[EquipModel.Instance.selectFloorEquip.itemId]); // } } protected override void OnClose() { EquipModel.Instance.OnEquipOPResultAction -= OnRefreshItem; // 通知主战场 BattleManager.Instance.storyBattleField.IsPause = false; } void Display() { EquipModel.Instance.lastShowEquipIndex = EquipModel.Instance.selectFloorEquip.config.EquipPlace - 1; var oldEquip = PackManager.Instance.GetItemByIndex(PackType.Equip, EquipModel.Instance.lastShowEquipIndex); if (oldEquip == null) { oldEquipObj.SetActive(false); newEquipObj.SetActive(true); newEquipObj.Display(EquipModel.Instance.selectFloorEquip, true); } else { if (oldEquip.guid == EquipModel.Instance.selectFloorEquip.guid) { Debug.LogError("Display: 新旧装备相同GUID 客户端主动删除背包物品索引=" + EquipModel.Instance.selectFloorEquip.gridIndex); // PackManager.Instance.GetSinglePack(PackType.DropItem).RemoveItem(EquipModel.Instance.selectFloorEquip.gridIndex); CloseWindow(); return; } oldEquipObj.SetActive(true); newEquipObj.SetActive(true); oldEquipObj.Display(oldEquip, false); newEquipObj.Display(EquipModel.Instance.selectFloorEquip, true); } } void OnRefreshItem(bool isDone, int index) { AutoFightModel.Instance.hasAutoExchanged = false; Display(); } private void LateUpdate() { TryAutoExchangeEquip(); } /// /// 尝试自动换装 /// private void TryAutoExchangeEquip() { // 已交换过,不再处理 if (AutoFightModel.Instance.hasAutoExchanged) return; if (!AutoFightModel.Instance.isAutoAttack) return; if (!AutoFightModel.Instance.isAutoChangeBetterEquip) return; int elapsedSeconds = TimeUtility.AllSeconds - AutoFightModel.Instance.startServerTime; if (elapsedSeconds < AutoFightModel.Instance.autoChangeBetterEquipWaitTimeS) return; // 检查是否有新装备 if (EquipModel.Instance.selectFloorEquip == null) return; AutoFightModel.Instance.hasAutoExchanged = true; AutoExchangeEquip(); } /// /// 自动交换装备 /// private void AutoExchangeEquip() { // 检查新装备战力是否更高 long fightPowerChange = FightPowerManager.Instance.GetFightPowerChange(EquipModel.Instance.selectFloorEquip); bool isFightPowerUp = fightPowerChange > 0; int equipPlace = EquipModel.Instance.selectFloorEquip.config.EquipPlace - 1; var oldEquip = PackManager.Instance.GetItemByIndex(PackType.Equip, equipPlace); //是否替换后自动分解原装备 if (isFightPowerUp) { if (oldEquip == null) { EquipModel.Instance.SendEquipOP(new ushort[] { (ushort)EquipModel.Instance.selectFloorEquip.gridIndex }, 2); } else { EquipModel.Instance.SendEquipOP(new ushort[] { (ushort)EquipModel.Instance.selectFloorEquip.gridIndex }, 2, AutoFightModel.Instance.isAutoExchangeDecomposeOld); } } else { //是否替换后自动分解原装备 if (AutoFightModel.Instance.isAutoExchangeDecomposeOld) { EquipModel.Instance.SendEquipOP(new ushort[] { (ushort)EquipModel.Instance.selectFloorEquip.gridIndex }, 1); } } } }