yyl
2025-08-29 e10813023f08c85454f575d3d388dac78e0e8ac2
Main/System/Main/AutoFightModel.cs
@@ -76,11 +76,15 @@
    {
        ParseConfig();
        DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent += OnPlayerLoginOk;
        BattleManager.Instance.onBattleFieldCreate += OnCreateBattleField;
    }
    public override void Release()
    {
        DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent -= OnPlayerLoginOk;
        BattleManager.Instance.onBattleFieldCreate -= OnCreateBattleField;
    }
    void ParseConfig()
@@ -104,6 +108,15 @@
            PlayerDatas.Instance.baseData.UseHarmerCount = fightCost;
            BattleManager.Instance.MainFightRequest(1, (uint)fightCost);
        }
        StoryBattleField storyBattleField = BattleManager.Instance.storyBattleField;
        if (storyBattleField != null && storyBattleField.GetBattleMode() != BattleMode.Stop)
        {
            //战斗中改变模式
            storyBattleField.AutoSetBattleMode();
        }
        QuickSetting.Instance.SendPackage();
        ChangeAutoEvent?.Invoke();
    }
@@ -114,7 +127,7 @@
    {
        if (!isAutoAttack)
            return false;
        if (item == null)
            return true;
@@ -129,11 +142,63 @@
        {
            if (isStopFightByBetterEquip)
                return false;
            EquipModel.Instance.SendEquipOP(new ushort[] { (ushort)item.gridIndex }, 1);
            return true;
        }
    }
    #region 战斗
    public void StartFight()
    {
        if (isAutoAttack)
            return;
        StoryBattleField storyBattleField = BattleManager.Instance.storyBattleField;
        if (storyBattleField == null)
        {
            return;
        }
        if (UIHelper.GetMoneyCnt(41) < PlayerDatas.Instance.baseData.UseHarmerCount)
        {
            if (storyBattleField.GetBattleMode() != BattleMode.Stop)
                storyBattleField.HaveRest();
            return;
        }
        if (isAutoAttackSet)
        {
            isAutoAttack = true;
        }
        //手动会一直进入这个逻辑, 自动触发一次
        storyBattleField.AutoSetBattleMode();
        storyBattleField.operationAgent.DoNext();
    }
    void OnCreateBattleField(string guid, BattleField battleField)
    {
        if (string.IsNullOrEmpty(guid) && BattleManager.Instance.storyBattleField != null)
        {
            BattleManager.Instance.storyBattleField.ChangeBattleModeEvent -= ChangeBattleModeEvent;
            BattleManager.Instance.storyBattleField.ChangeBattleModeEvent += ChangeBattleModeEvent;
        }
    }
    void ChangeBattleModeEvent(BattleMode _battleMode)
    {
        if (_battleMode == BattleMode.Stop)
        {
            isAutoAttack = false;
        }
    }
    #endregion
}