yyl
2026-01-15 bface07b5ea879e40f5be8d082bfa77fb873b0bd
Main/System/Main/AutoFightModel.cs
@@ -1,7 +1,4 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using LitJson;
using UnityEngine;
@@ -82,7 +79,65 @@
        }
    }
    //自动挑战首领
    public bool isAutoChallengeBoss
    {
        get
        {
            return QuickSetting.Instance.GetQuickSettingBool(QuickSettingType.AutoFight_ChallengeBoss, 0);
        }
        set
        {
            QuickSetting.Instance.SetQuickSetting(QuickSettingType.AutoFight_ChallengeBoss, value);
        }
    }
    //当前战败了x次
    private int m_NowChallengeCount = 0;
    public float lastChallengeTime = 0;
    public int nowChallengeCount
    {
        get { return m_NowChallengeCount; }
        set
        {
            m_NowChallengeCount = value;
            lastChallengeTime = value == 0 ? 0 : Time.time;
            Debug.Log($"当前在主线Boss战败了{m_NowChallengeCount}次,上次战败时间是{lastChallengeTime}");
            if (m_NowChallengeCount >= tryChallengeCount)
            {
                isAutoAttackSet = false;
                isAutoAttack = false;
                SaveAutoFightSetting();
            }
        }
    }
    //自动挑战首领,战败x次停止
    public int tryChallengeCount
    {
        get
        {
            int value = QuickSetting.Instance.GetQuickSettingValue<int>(QuickSettingType.AutoFight_TryChallengeCount, 0);
            return Math.Min(Math.Max(value, 1), maxCost);
        }
        set
        {
            QuickSetting.Instance.SetQuickSetting(QuickSettingType.AutoFight_TryChallengeCount, value);
        }
    }
    //自动完成任务
    public bool isAutoFinishTask
    {
        get
        {
            return QuickSetting.Instance.GetQuickSettingBool(QuickSettingType.AutoFight_AutoFinishTask, 0);
        }
        set
        {
            QuickSetting.Instance.SetQuickSetting(QuickSettingType.AutoFight_AutoFinishTask, value);
        }
    }
    public event Action ChangeAutoEvent;
    public int maxSpeed = 3; //最高速度 索引
@@ -90,10 +145,16 @@
    public int[] autoCostWithBlessLV; //自动战斗消耗倍数关联祝福等级
    public int speed2UnlockMissionID;
    public int openAutoChallengeBossMissionID;//自动挑战首领解锁的任务ID(需完成)
    public int maxTryChallengeCount;//自动挑战首领最大战败次数(下拉列表的最大值)
    public int maxTryChallengeCD;
    public int openAutoFinishMissionID;//自动完成任务解锁的任务ID(需完成)
    public override void Init()
    {
        ParseConfig();
        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += BeforePlayerInit;
        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEventOnRelogin += OnBeforePlayerDataInitializeEventOnRelogin;
        BattleManager.Instance.onBattleFieldCreate += OnCreateBattleField;
        EventBroadcast.Instance.AddListener<string, SkillConfig, TeamHero>(EventName.BATTLE_CAST_SKILL, OnSkillCast);
        BlessLVManager.Instance.OnBlessLVUpdateEvent += UpdateRedpint;
@@ -106,6 +167,7 @@
    {
        BattleManager.Instance.onBattleFieldCreate -= OnCreateBattleField;
        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent -= BeforePlayerInit;
        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEventOnRelogin += OnBeforePlayerDataInitializeEventOnRelogin;
        EventBroadcast.Instance.RemoveListener<string, SkillConfig, TeamHero>(EventName.BATTLE_CAST_SKILL, OnSkillCast);
        BlessLVManager.Instance.OnBlessLVUpdateEvent -= UpdateRedpint;
        TaskManager.Instance.OnTaskUpdate -= OnTaskUpdate;
@@ -119,6 +181,11 @@
        autoCostWithBlessLV = JsonMapper.ToObject<int[]>(config.Numerical1);
        speed2UnlockMissionID = int.Parse(config.Numerical2);
        maxCost = autoCostWithBlessLV.Length;
        config = FuncConfigConfig.Get("AutoGuaji1");
        openAutoChallengeBossMissionID = int.Parse(config.Numerical1);
        maxTryChallengeCount = int.Parse(config.Numerical2);
        maxTryChallengeCD = int.Parse(config.Numerical3);
        openAutoFinishMissionID = int.Parse(config.Numerical4);
    }
@@ -126,6 +193,11 @@
    {
        fightingHeroSkinID = 0;
        heroGuid = "";
    }
    private void OnBeforePlayerDataInitializeEventOnRelogin()
    {
        nowChallengeCount = 0;
    }
    public void SaveAutoFightSetting()
@@ -160,7 +232,7 @@
            return true;
        long showFightPower = FightPowerManager.Instance.GetFightPowerChange(item);
        if (showFightPower < 0)
        {
            EquipModel.Instance.SendEquipOP(new ushort[] { (ushort)item.gridIndex }, 1);
@@ -178,6 +250,7 @@
    }
    #region 主线战斗(自动和手动)
    public void StartFight()