From 5a4e34c8a85737c0fa5b5775122da31155cbaef3 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期一, 09 二月 2026 14:46:01 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.1.20:10010/r/Project_SG_scripts

---
 Main/System/Main/AutoFightModel.cs |  233 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 226 insertions(+), 7 deletions(-)

diff --git a/Main/System/Main/AutoFightModel.cs b/Main/System/Main/AutoFightModel.cs
index 7a721d1..77415f9 100644
--- a/Main/System/Main/AutoFightModel.cs
+++ b/Main/System/Main/AutoFightModel.cs
@@ -1,7 +1,5 @@
 锘縰sing System;
-using System.Collections;
 using System.Collections.Generic;
-using System.Text;
 using LitJson;
 
 using UnityEngine;
@@ -39,8 +37,7 @@
 
     //鑷姩妯″紡, 鐪熸鐐瑰嚮鎴橀敜娑堣�楀紑鍚紝鍜屼紤鎭紙鎴栨棤鏉愭枡锛夊仠姝�
     public bool isPause = false;    //濡傛墦BOSS鐨勬儏鍐碉紝鏆傚仠鑷姩鎴樻枟 鍚庣画鍙互琛ュ厖姣廥绉掓娴嬩笅鏄惁鏈夊紓甯�
-
-    public bool restartMainStoryBattle = false;
+    public event Action AutoAttackEvent;
     bool m_IsAutoAttack = false;
     public bool isAutoAttack
     {
@@ -54,6 +51,7 @@
                 return;
             m_IsAutoAttack = value;
             Debug.Log("isAutoAttack:" + m_IsAutoAttack);
+            AutoAttackEvent?.Invoke();
         }
     }
 
@@ -83,23 +81,144 @@
         }
     }
 
+    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    //鏄惁鏇挎崲鍚庤嚜鍔ㄥ垎瑙e師瑁呭
+    {
+        get
+        {
+            return m_IsAutoExchangeDecomposeOld;
+        }
+        set
+        {
+            if (m_IsAutoExchangeDecomposeOld == value)
+                return;
+            m_IsAutoExchangeDecomposeOld = value;
+            if (value)
+            {
+                hasAutoExchanged = false;
+            }
+        }
+    }
+
+
+    //鑷姩鎸戞垬棣栭
+    public bool isAutoChallengeBoss
+    {
+        get
+        {
+            return QuickSetting.Instance.GetQuickSettingBool(QuickSettingType.AutoFight_ChallengeBoss, 0);
+        }
+        set
+        {
+            QuickSetting.Instance.SetQuickSetting(QuickSettingType.AutoFight_ChallengeBoss, value);
+        }
+    }
+
+    //褰撳墠鎴樿触浜唜娆★紱-1浠h〃鍋滄缁х画鎸戞垬
+    private int m_NowChallengeCount = 0;
+    public float lastChallengeTime = 0;
+    public int nowChallengeCount
+    {
+        get { return m_NowChallengeCount; }
+        set
+        {
+            m_NowChallengeCount = value;
+            lastChallengeTime = Time.time;
+            // Debug.Log($"褰撳墠鍦ㄤ富绾緽oss鎴樿触浜唟m_NowChallengeCount}娆�,涓婃鎴樿触鏃堕棿鏄瘂lastChallengeTime}");
+            if (m_NowChallengeCount >= tryChallengeCount)
+            {
+                m_NowChallengeCount = -1;   //浠h〃鍋滄缁х画鎸戞垬BOSS, 浣嗕笉鏄仠姝㈡垬鏂�
+                isAutoChallengeBoss = false; //鍙栨秷鍕鹃�夎嚜鍔ㄦ寫鎴榖oss
+            }
+        }
+    }
+
+
+    //鑷姩鎸戞垬棣栭锛屾垬璐娆″仠姝�
+    public int tryChallengeCount
+    {
+        get
+        {
+            int value = QuickSetting.Instance.GetQuickSettingValue<int>(QuickSettingType.AutoFight_TryChallengeCount, 0);
+            return Math.Min(Math.Max(value, 1), maxTryChallengeCount);
+        }
+        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; //鏈�楂橀�熷害 绱㈠紩
     public int maxCost; //鏈�楂樻秷鑰�
     public int[] autoCostWithBlessLV; //鑷姩鎴樻枟娑堣�楀�嶆暟鍏宠仈绁濈绛夌骇
     public int speed2UnlockMissionID;
 
+    public int openAutoChallengeBossCond;//鏁板��1锛氳嚜鍔ㄦ寫鎴橀棰嗚В閿佺殑鍏冲崱锛堥渶杩囧叧锛�
+    public int maxTryChallengeCount;//鏈�澶ф垬璐ユ鏁帮紙涓嬫媺鍒楄〃鐨勬渶澶у�硷級瑙i攣鏈堝崱鏈夋晥
+    public int maxTryChallengeCD;   //鎵撲富绾縝oss鎴樿触鍚庯紝闂撮殧x绉掑悗閲嶈瘯
+    public int openAutoFinishCond;//鑷姩瀹屾垚浠诲姟闇�绁濈鏍慩绾�
+    public int autoCloseWinCD;
+    public int autoChangeBetterEquipWaitTimeS;//瑁呭瀵规瘮鐣岄潰鎵撳紑x绉掑悗锛屼负鐜╁鏇挎崲楂樻垬鍔涜澶�
+
     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;
         TaskManager.Instance.OnTaskUpdate += OnTaskUpdate;
         InvestModel.Instance.onInvestUpdate += OnInvestUpdate;
+        GlobalTimeEvent.Instance.secondEvent += OnSecondEvent;
 
     }
 
@@ -107,10 +226,12 @@
     {
         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;
         InvestModel.Instance.onInvestUpdate -= OnInvestUpdate;
+        GlobalTimeEvent.Instance.secondEvent -= OnSecondEvent;
 
     }
 
@@ -120,6 +241,13 @@
         autoCostWithBlessLV = JsonMapper.ToObject<int[]>(config.Numerical1);
         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);
+        maxTryChallengeCD = int.Parse(config.Numerical3);
+        openAutoFinishCond = int.Parse(config.Numerical4);
     }
 
 
@@ -127,7 +255,97 @@
     {
         fightingHeroSkinID = 0;
         heroGuid = "";
+        startServerTime = 0;
+        hasAutoExchanged = false;
     }
+
+    private void OnBeforePlayerDataInitializeEventOnRelogin()
+    {
+        nowChallengeCount = 0;
+        isAutoExchangeDecomposeOld = true;
+    }
+
+    Dictionary<string, int> winWaitCloseDict = new Dictionary<string, int>();
+    void OnSecondEvent()
+    {
+        ProccessCloseWin();
+    }
+    void ProccessCloseWin()
+    {
+        if (!isAutoAttack)
+            return;
+        if (isAutoChallengeBoss)
+        {
+            if (UIManager.Instance.IsOpened<BattleVictoryWin>())
+            {
+                if (!winWaitCloseDict.ContainsKey("BattleVictoryWin"))
+                {
+                    winWaitCloseDict["BattleVictoryWin"] = 0;
+                }
+
+                if (winWaitCloseDict["BattleVictoryWin"] == 0)
+                {
+                    winWaitCloseDict["BattleVictoryWin"] = (int)Time.time;
+                }
+                else if (Time.time - winWaitCloseDict["BattleVictoryWin"] > AutoFightModel.Instance.autoCloseWinCD)
+                {
+                    UIManager.Instance.CloseWindow<BattleVictoryWin>();
+                    winWaitCloseDict["BattleVictoryWin"] = 0;
+                }
+            }
+
+            if (UIManager.Instance.IsOpened<BattleFailWin>())
+            {
+                if (!winWaitCloseDict.ContainsKey("BattleFailWin"))
+                {
+                    winWaitCloseDict["BattleFailWin"] = 0;
+                }
+
+                if (winWaitCloseDict["BattleFailWin"] == 0)
+                {
+                    winWaitCloseDict["BattleFailWin"] = (int)Time.time;
+                }
+                else if (Time.time - winWaitCloseDict["BattleFailWin"] > autoCloseWinCD)
+                {
+                    UIManager.Instance.CloseWindow<BattleFailWin>();
+                    winWaitCloseDict["BattleFailWin"] = 0;
+                }
+            }
+        }
+
+        if (isAutoFinishTask)
+        {
+            if (TaskManager.Instance.GetMainTaskState() == 2 && UIManager.Instance.IsOpened<HomeWin>()
+            && !UIManager.Instance.ExistAnyFullScreenOrMaskWin("") && !NewBieCenter.Instance.inGuiding)
+            {
+                //棰嗗彇浠诲姟濂栧姳
+                CA504_tagCMPlayerGetReward getReward = new CA504_tagCMPlayerGetReward();
+                getReward.RewardType = 66;
+                getReward.DataEx = (uint)TaskManager.Instance.mainTask.TaskID;
+                GameNetSystem.Instance.SendInfo(getReward);
+                return;
+            }
+
+            if (UIManager.Instance.IsOpened<CommonGetItemWin>() && ItemLogicUtility.Instance.getItemEventName == "Task")
+            {
+                if (!winWaitCloseDict.ContainsKey("CommonGetItemWin"))
+                {
+                    winWaitCloseDict["CommonGetItemWin"] = 0;
+                }
+
+                if (winWaitCloseDict["CommonGetItemWin"] == 0)
+                {
+                    winWaitCloseDict["CommonGetItemWin"] = (int)Time.time;
+                }
+                else if (Time.time - winWaitCloseDict["CommonGetItemWin"] > autoCloseWinCD)
+                {
+                    UIManager.Instance.CloseWindow<CommonGetItemWin>();
+                    winWaitCloseDict["CommonGetItemWin"] = 0;
+                }
+            }
+        }
+    }
+
 
     public void SaveAutoFightSetting()
     {
@@ -161,8 +379,8 @@
             return true;
 
         long showFightPower = FightPowerManager.Instance.GetFightPowerChange(item);
-    
-        if (showFightPower < 0)
+
+        if (showFightPower <= 0)
         {
             EquipModel.Instance.SendEquipOP(new ushort[] { (ushort)item.gridIndex }, 1);
             return true;
@@ -178,6 +396,7 @@
         }
 
     }
+
 
     #region 涓荤嚎鎴樻枟锛堣嚜鍔ㄥ拰鎵嬪姩锛�
 
@@ -253,7 +472,7 @@
 
         fightingHeroSkinID = teamHero.SkinID;
         //鎴樻枟鏃舵病鏈塆UID 锛岄�氳繃heroid鏌ユ壘
-        var hero = TeamManager.Instance.GetTeam(TeamType.Story).GetHeroByHeroID(teamHero.heroId);
+        var hero = TeamManager.Instance.GetTeam(BattlePreSetType.Story).GetHeroByHeroID(teamHero.heroId);
         if (hero != null)
         {
             heroGuid = hero.guid;

--
Gitblit v1.8.0