hch
2026-01-23 83028c0e997093cdde38e064d3f289191baa04ab
Merge branch 'master' of http://mobile.secondworld.net.cn:10010/r/Project_SG_scripts
5个文件已修改
189 ■■■■ 已修改文件
Main/System/Equip/EquipExchangeCell.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Equip/EquipExchangeWin.cs 86 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Main/AutoFightModel.cs 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Main/AutoFightWin.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Setting/QuickSetting.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Equip/EquipExchangeCell.cs
@@ -39,12 +39,12 @@
    [SerializeField] RectTransform bgRect;
    int cmpResult = 0;  // 装备对比结果 0相同 1更强 2更弱
    bool isToggle = true;
    void Start()
    {
        putonButton.AddListener(() =>
        {
            AutoFightModel.Instance.hasAutoExchanged = true;
            EquipModel.Instance.SendEquipOP(new ushort[] { (ushort)EquipModel.Instance.selectFloorEquip.gridIndex }, 2);
        });
@@ -54,7 +54,7 @@
        decomposeCheck.onValueChanged.RemoveAllListeners();
        decomposeCheck.onValueChanged.AddListener((bool isOn) =>
        {
            isToggle = !isToggle;
            AutoFightModel.Instance.isAutoExchangeDecomposeOld = !AutoFightModel.Instance.isAutoExchangeDecomposeOld;
        });
    }
@@ -90,7 +90,7 @@
            equipedText.SetActive(false);
            fightPowerGO.SetActive(true);
            btnsGO.SetActive(true);
            decomposeCheck.isOn = isToggle;
            decomposeCheck.isOn = AutoFightModel.Instance.isAutoExchangeDecomposeOld;
            if (oldEquip == null)
            {
@@ -172,7 +172,7 @@
    //延迟处理特效大小
    async UniTask RefreshEffect(ItemModel equip)
    {
    {
        await UniTask.DelayFrame(1);
        int effectID = EquipModel.Instance.equipUIEffects[Math.Min(equip.config.ItemColor, EquipModel.Instance.equipUIEffects.Length) - 1];
        if (effectID == 0)
@@ -216,13 +216,15 @@
                {
                    if (ok)
                    {
                        AutoFightModel.Instance.hasAutoExchanged = true;
                        EquipModel.Instance.SendEquipOP(new ushort[] { (ushort)EquipModel.Instance.selectFloorEquip.gridIndex }, 2, decomposeCheck.isOn);
                    }
                });
        }
        else
        {
            AutoFightModel.Instance.hasAutoExchanged = true;
            EquipModel.Instance.SendEquipOP(new ushort[] { (ushort)EquipModel.Instance.selectFloorEquip.gridIndex }, 2, decomposeCheck.isOn);
        }
@@ -239,13 +241,15 @@
            {
                if (ok)
                {
                    AutoFightModel.Instance.hasAutoExchanged = true;
                    EquipModel.Instance.SendEquipOP(new ushort[] { (ushort)EquipModel.Instance.selectFloorEquip.gridIndex }, 1);
                }
            });
        }
        else
        {
            AutoFightModel.Instance.hasAutoExchanged = true;
            EquipModel.Instance.SendEquipOP(new ushort[] { (ushort)EquipModel.Instance.selectFloorEquip.gridIndex }, 1);
        }
    }
@@ -255,7 +259,7 @@
        ItemModel oldEquip = null;
        if (isNewEquip)
        {
        {
            //找对比装备
            oldEquip = PackManager.Instance.GetItemByIndex(PackType.Equip, EquipModel.Instance.selectFloorEquip.config.EquipPlace - 1);
        }
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);
            }
        }
    }
}
Main/System/Main/AutoFightModel.cs
@@ -80,6 +80,57 @@
        }
    }
    public bool isAutoChangeBetterEquip
    {
        get
        {
            return QuickSetting.Instance.GetQuickSettingBool(QuickSettingType.AutoFight_AutoChangeBetterEquip, 0);
        }
        set
        {
            QuickSetting.Instance.SetQuickSetting(QuickSettingType.AutoFight_AutoChangeBetterEquip, value);
        }
    }
    public int startServerTime;  // 开始时的服务器时间戳
    bool m_HasAutoExchanged = false;
    public bool hasAutoExchanged    // 是否已自动交换过
    {
        get
        {
            return m_HasAutoExchanged;
        }
        set
        {
            if (m_HasAutoExchanged == value)
                return;
            m_HasAutoExchanged = value;
            if (!value)
            {
                startServerTime = TimeUtility.AllSeconds;
            }
        }
    }
    bool m_IsAutoExchangeDecomposeOld = false;
    public bool isAutoExchangeDecomposeOld    //是否替换后自动分解原装备
    {
        get
        {
            return m_IsAutoExchangeDecomposeOld;
        }
        set
        {
            if (m_IsAutoExchangeDecomposeOld == value)
                return;
            m_IsAutoExchangeDecomposeOld = value;
            if (value)
            {
                hasAutoExchanged = false;
            }
        }
    }
    public event Action<bool> OnAutoChallengeBossEvent;
    //自动挑战首领
    public bool isAutoChallengeBoss
@@ -143,6 +194,9 @@
    }
    public event Action ChangeAutoEvent;
    public int maxSpeed = 3; //最高速度 索引
    public int maxCost; //最高消耗
    public int[] autoCostWithBlessLV; //自动战斗消耗倍数关联祝福等级
@@ -153,6 +207,7 @@
    public int maxTryChallengeCD;   //打主线boss战败后,间隔x秒后重试
    public int openAutoFinishCond;//自动完成任务需祝福树X级
    public int autoCloseWinCD;
    public int autoChangeBetterEquipWaitTimeS;//装备对比界面打开x秒后,为玩家替换高战力装备
    public override void Init()
    {
@@ -172,7 +227,7 @@
    {
        BattleManager.Instance.onBattleFieldCreate -= OnCreateBattleField;
        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent -= BeforePlayerInit;
        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEventOnRelogin += OnBeforePlayerDataInitializeEventOnRelogin;
        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEventOnRelogin -= OnBeforePlayerDataInitializeEventOnRelogin;
        EventBroadcast.Instance.RemoveListener<string, SkillConfig, TeamHero>(EventName.BATTLE_CAST_SKILL, OnSkillCast);
        BlessLVManager.Instance.OnBlessLVUpdateEvent -= UpdateRedpint;
        TaskManager.Instance.OnTaskUpdate -= OnTaskUpdate;
@@ -188,6 +243,7 @@
        speed2UnlockMissionID = int.Parse(config.Numerical2);
        maxCost = autoCostWithBlessLV.Length;
        autoCloseWinCD = int.Parse(config.Numerical3);
        autoChangeBetterEquipWaitTimeS = int.Parse(config.Numerical5);
        config = FuncConfigConfig.Get("AutoGuaji1");
        openAutoChallengeBossCond = int.Parse(config.Numerical1);
        maxTryChallengeCount = int.Parse(config.Numerical2);
@@ -200,11 +256,14 @@
    {
        fightingHeroSkinID = 0;
        heroGuid = "";
        startServerTime = 0;
        hasAutoExchanged = false;
    }
    private void OnBeforePlayerDataInitializeEventOnRelogin()
    {
        nowChallengeCount = 0;
        isAutoExchangeDecomposeOld = true;
    }
    Dictionary<string, int> winWaitCloseDict = new Dictionary<string, int>();
Main/System/Main/AutoFightWin.cs
@@ -22,6 +22,7 @@
    [SerializeField] ScrollerController speedScroll;
    [SerializeField] Toggle betterEquipToggle;
    [SerializeField] Toggle autoChangeBetterEquipToggle;    // 自动替换高战力装备
    [SerializeField] Toggle autoChallengeBossToggle;
    [SerializeField] Button tryChallengeBtn;
@@ -75,9 +76,25 @@
            tryChallengeArrow.transform.localRotation = Quaternion.Euler(0, 0, isOpenTryChallengeScroll ? 180 : 0);
            AutoFightModel.Instance.ClickSpeedRed();
        });
        betterEquipToggle.AddListener((bool value) =>
        {
            betterEquipToggle.isOn = value;
            //取消勾选时,取消自动替换高战力装备的选项
            if (!value)
            {
                autoChangeBetterEquipToggle.isOn = false;
            }
        });
        autoChangeBetterEquipToggle.AddListener((bool value) =>
        {
            autoChangeBetterEquipToggle.isOn = value;
            //勾选时,勾选装备战力提升时停止的选项
            if (value)
            {
                betterEquipToggle.isOn = true;
            }
        });
        autoChallengeBossToggle.AddListener((bool value) =>
@@ -164,6 +181,7 @@
        speedText.text = AutoFightModel.Instance.fightSpeed.ToString();
        tryChallengeText.text = AutoFightModel.Instance.tryChallengeCount.ToString();
        betterEquipToggle.isOn = AutoFightModel.Instance.isStopFightByBetterEquip;
        autoChangeBetterEquipToggle.isOn = AutoFightModel.Instance.isAutoChangeBetterEquip;
        autoChallengeBossToggle.isOn = AutoFightModel.Instance.isAutoChallengeBoss;
        autoFinishTaskToggle.isOn = AutoFightModel.Instance.isAutoFinishTask;
        costTip.text = Language.Get("AutoFight2", ItemConfig.Get(GeneralDefine.MoneyDisplayModel[41]).ItemName, AutoFightModel.Instance.fightCost);
@@ -341,10 +359,12 @@
        AutoFightModel.Instance.fightCost = int.Parse(costText.text);
        AutoFightModel.Instance.fightSpeed = int.Parse(speedText.text);
        AutoFightModel.Instance.isStopFightByBetterEquip = betterEquipToggle.isOn;
        AutoFightModel.Instance.isAutoChangeBetterEquip = autoChangeBetterEquipToggle.isOn;
        AutoFightModel.Instance.isAutoChallengeBoss = autoChallengeBossToggle.isOn;
        AutoFightModel.Instance.nowChallengeCount = 0;
        AutoFightModel.Instance.tryChallengeCount = int.Parse(tryChallengeText.text);
        AutoFightModel.Instance.isAutoFinishTask = autoFinishTaskToggle.isOn;
        AutoFightModel.Instance.hasAutoExchanged = false;
        AutoFightModel.Instance.SaveAutoFightSetting();
        CloseWindow();
        SysNotifyMgr.Instance.ShowTip("autofight1");
@@ -362,6 +382,7 @@
                    AutoFightModel.Instance.fightCost = int.Parse(costText.text);
                    AutoFightModel.Instance.fightSpeed = int.Parse(speedText.text);
                    AutoFightModel.Instance.isStopFightByBetterEquip = betterEquipToggle.isOn;
                    AutoFightModel.Instance.isAutoChangeBetterEquip = autoChangeBetterEquipToggle.isOn;
                    AutoFightModel.Instance.isAutoChallengeBoss = autoChallengeBossToggle.isOn;
                    AutoFightModel.Instance.tryChallengeCount = int.Parse(tryChallengeText.text);
                    AutoFightModel.Instance.isAutoFinishTask = autoFinishTaskToggle.isOn;
Main/System/Setting/QuickSetting.cs
@@ -24,6 +24,7 @@
        quickSettingDic.Add(QuickSettingType.AutoFight_ChallengeBoss, new QuickSettingRange(QuickSettingType.AutoFight_ChallengeBoss, 18, 1));
        quickSettingDic.Add(QuickSettingType.AutoFight_TryChallengeCount, new QuickSettingRange(QuickSettingType.AutoFight_TryChallengeCount, 19, 1));
        quickSettingDic.Add(QuickSettingType.AutoFight_AutoFinishTask, new QuickSettingRange(QuickSettingType.AutoFight_AutoFinishTask, 20, 1));
        quickSettingDic.Add(QuickSettingType.AutoFight_AutoChangeBetterEquip, new QuickSettingRange(QuickSettingType.AutoFight_AutoChangeBetterEquip, 21, 1));
        setting = new string(UCharacter, 100);
        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent -= BeforePlayerDataInitializeEvent;
@@ -156,6 +157,7 @@
        if (PlayerDatas.Instance.baseData.LV == 1 && !AutoFightModel.Instance.isStopFightByBetterEquip)
        {
            AutoFightModel.Instance.isStopFightByBetterEquip = true;
            AutoFightModel.Instance.isAutoChangeBetterEquip = false;
            AutoFightModel.Instance.SaveAutoFightSetting();
        }
    }
@@ -175,6 +177,7 @@
    AutoFight_ChallengeBoss,   //自动挑战首领
    AutoFight_TryChallengeCount,    //自动挑战首领,战败x次停止
    AutoFight_AutoFinishTask,   //自动完成任务
    AutoFight_AutoChangeBetterEquip,   //自动替换高战力装备
}
public class QuickSettingRange