lcy
2026-01-23 ffd98ca236a8e6d8d8bd68c46ca56519e6f758ae
Main/System/Equip/EquipExchangeWin.cs
@@ -1,10 +1,4 @@
using Spine;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine;
//获得装备界面
public class EquipExchangeWin : UIBase
@@ -12,13 +6,13 @@
    [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();
@@ -29,17 +23,12 @@
        // }
    }
    protected override void OnClose()
    {
        EquipModel.Instance.OnEquipOPResultAction -= OnRefreshItem;
        // 通知主战场
        BattleManager.Instance.storyBattleField.IsPause = false;
    }
    void Display()
    {
@@ -69,14 +58,77 @@
    }
    void OnRefreshItem(bool isDone, int index)
    {
        AutoFightModel.Instance.hasAutoExchanged = false;
        Display();
    }
    private void LateUpdate()
    {
        TryAutoExchangeEquip();
    }
    /// <summary>
    /// 尝试自动换装
    /// </summary>
    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();
    }
    /// <summary>
    /// 自动交换装备
    /// </summary>
    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);
            }
        }
    }
}