From 89343a7a0909e5244a3b69c4db1294de4536243b Mon Sep 17 00:00:00 2001
From: lcy <1459594991@qq.com>
Date: 星期一, 15 十二月 2025 18:15:22 +0800
Subject: [PATCH] 262 幻境阁系统-客户端 新增仅适用武将解锁的头像和形象的红点移除规则

---
 Main/System/Main/AutoFightModel.cs |  163 ++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 126 insertions(+), 37 deletions(-)

diff --git a/Main/System/Main/AutoFightModel.cs b/Main/System/Main/AutoFightModel.cs
index 8e9a422..0cf11c9 100644
--- a/Main/System/Main/AutoFightModel.cs
+++ b/Main/System/Main/AutoFightModel.cs
@@ -7,7 +7,7 @@
 using UnityEngine;
 public class AutoFightModel : GameSystemManager<AutoFightModel>
 {
-    //鎴樻枟鍊嶆暟锛氬�艰秺澶ц秺蹇紝褰卞搷鎴樻枟琛ㄧ幇锛屾帀钀介�熷害绛�
+    //鎴樻枟鍊嶆暟锛氬�艰秺澶ц秺蹇紝褰卞搷鎴樻枟琛ㄧ幇锛屾帀钀介�熷害绛夛紝杩欓噷鐨勫�嶆暟鏄储寮曪紝瀵瑰簲閰嶇疆閲岀殑瀹為檯閫熺巼
     public int fightSpeed
     {
         get
@@ -17,7 +17,9 @@
         }
         set
         {
-            QuickSetting.Instance.SetQuickSetting(QuickSettingType.AutoFight_Speed, value);
+            var num = Math.Max(1, value);
+            BattleManager.Instance.storyBattleField.SetSpeedRatio(BattleManager.Instance.speedGear[num - 1]);
+            QuickSetting.Instance.SetQuickSetting(QuickSettingType.AutoFight_Speed, num);
         }
     }
 
@@ -36,7 +38,23 @@
     }
 
     //鑷姩妯″紡, 鐪熸鐐瑰嚮鎴橀敜娑堣�楀紑鍚紝鍜屼紤鎭紙鎴栨棤鏉愭枡锛夊仠姝�
-    public bool isAutoAttack = false;
+    public bool isPause = false;    //濡傛墦BOSS鐨勬儏鍐碉紝鏆傚仠鑷姩鎴樻枟 鍚庣画鍙互琛ュ厖姣廥绉掓娴嬩笅鏄惁鏈夊紓甯�
+
+    bool m_IsAutoAttack = false;
+    public bool isAutoAttack
+    {
+        get
+        {
+            return m_IsAutoAttack;
+        }
+        set
+        {
+            if (m_IsAutoAttack == value)
+                return;
+            m_IsAutoAttack = value;
+            Debug.Log("isAutoAttack:" + m_IsAutoAttack);
+        }
+    }
 
     //鏄惁寮�鍚嚜鍔ㄦ垬鏂楄缃�
     public bool isAutoAttackSet
@@ -67,26 +85,31 @@
 
     public event Action ChangeAutoEvent;
 
-    public int maxSpeed = 3; //鏈�楂橀�熷害
+    public int maxSpeed = 3; //鏈�楂橀�熷害 绱㈠紩
     public int maxCost; //鏈�楂樻秷鑰�
     public int[] autoCostWithBlessLV; //鑷姩鎴樻枟娑堣�楀�嶆暟鍏宠仈绁濈绛夌骇
     public int speed2UnlockMissionID;
-    public int speed3UnlockCTGID;
+
     public override void Init()
     {
         ParseConfig();
-        DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent += OnPlayerLoginOk;
         DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += BeforePlayerInit;
         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;
 
     }
 
     public override void Release()
     {
-        DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent -= OnPlayerLoginOk;
         BattleManager.Instance.onBattleFieldCreate -= OnCreateBattleField;
         DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent -= BeforePlayerInit;
+        EventBroadcast.Instance.RemoveListener<string, SkillConfig, TeamHero>(EventName.BATTLE_CAST_SKILL, OnSkillCast);
+        BlessLVManager.Instance.OnBlessLVUpdateEvent -= UpdateRedpint;
+        TaskManager.Instance.OnTaskUpdate -= OnTaskUpdate;
+        InvestModel.Instance.onInvestUpdate -= OnInvestUpdate;
 
     }
 
@@ -95,14 +118,9 @@
         var config = FuncConfigConfig.Get("AutoGuaji");
         autoCostWithBlessLV = JsonMapper.ToObject<int[]>(config.Numerical1);
         speed2UnlockMissionID = int.Parse(config.Numerical2);
-        speed3UnlockCTGID = int.Parse(config.Numerical3);
         maxCost = autoCostWithBlessLV.Length;
     }
 
-    void OnPlayerLoginOk()
-    {
-        //鐧诲綍鏃舵湁瑁呭鐨勫鐞�
-    }
 
     void BeforePlayerInit()
     {
@@ -123,6 +141,7 @@
         if (storyBattleField != null && storyBattleField.GetBattleMode() != BattleMode.Stop)
         {
             //鎴樻枟涓敼鍙樻ā寮�
+            isAutoAttack = isAutoAttackSet;
             storyBattleField.AutoSetBattleMode();
         }
 
@@ -141,7 +160,7 @@
             return true;
 
         long showFightPower = FightPowerManager.Instance.GetFightPowerChange(item);
-
+    
         if (showFightPower < 0)
         {
             EquipModel.Instance.SendEquipOP(new ushort[] { (ushort)item.gridIndex }, 1);
@@ -172,17 +191,15 @@
             return;
         }
 
-        if (!ItemLogicUtility.CheckCurrencyCount(41, PlayerDatas.Instance.baseData.UseHarmerCount, 2))
+        if (!UIHelper.CheckMoneyCount(41, PlayerDatas.Instance.baseData.UseHarmerCount, 2))
         {
             if (storyBattleField.GetBattleMode() != BattleMode.Stop)
                 storyBattleField.HaveRest();
             return;
         }
 
-        if (isAutoAttackSet)
-        {
-            isAutoAttack = true;
-        }
+        BattleManager.Instance.storyBattleField.SetSpeedRatio(BattleManager.Instance.speedGear[fightSpeed - 1]);
+        isAutoAttack = isAutoAttackSet;
 
         //鎵嬪姩浼氫竴鐩磋繘鍏ヨ繖涓�昏緫, 鑷姩瑙﹀彂涓�娆�
         storyBattleField.AutoSetBattleMode();
@@ -225,6 +242,10 @@
         if (!string.IsNullOrEmpty(guid))
             return;
 
+        //闃茶寖鍥炴敹鎶ラ敊
+        if (teamHero == null)
+            return;
+
         //鍙�氱煡鐜╁姝﹀皢鐨勬垬鏂�
         if (teamHero.NPCID != 0)
             return;
@@ -243,28 +264,96 @@
         OnFightEvent?.Invoke(true);
     }
 
-    public bool CanChallengeBoss()
-    {
-        //鏈�鍚庝竴娉㈤�氳繃锛屼笖褰撳墠娉㈣繕鏄渶鍚庝竴娉紱鍊掗��鍙�掗��娉笉浼氬�掗��鍏冲崱
-        if (PlayerDatas.Instance.baseData.ExAttr2 != PlayerDatas.Instance.baseData.ExAttr1)
-        {
-            return false;
-        }
-        var value = PlayerDatas.Instance.baseData.ExAttr2;
-        var chapterID = value / 10000;
-        var levelNum = value % 10000 / 100;
-        var waveID = value % 100;
 
-        var config = MainLevelConfig.GetMainLevelConfig(chapterID, levelNum);
-        if (waveID < MainLevelConfig.GetwaveCount(config))
-        {
-            return false;
-        }
-
-        return true;
-    }
 
     #endregion
 
+    //鏂板娑堣�楀�嶆暟绾㈢偣
+    Redpoint redpoint1 = new Redpoint(MainRedDot.RedPoint_AutoBattleKey, MainRedDot.RedPoint_AutoBattleKey * 10 + 1);
+    //鏂板鎴樻枟鍊嶆暟绾㈢偣
+    Redpoint redpoint2 = new Redpoint(MainRedDot.RedPoint_AutoBattleKey, MainRedDot.RedPoint_AutoBattleKey * 10 + 2);
+    void UpdateRedpint()
+    {
+        //鎻愮ず绾㈢偣璁板綍鍒扮鍑犱釜绱㈠紩锛屾瘡娆¤В閿佹柊鐨勬秷鑰楃孩鐐归兘鎻愮ず
+        var costIndex = LocalSave.GetInt("redcost" + PlayerDatas.Instance.baseData.PlayerID);
+        if (costIndex + 1 < autoCostWithBlessLV.Length)
+        {
+            redpoint1.state = autoCostWithBlessLV[Math.Min(costIndex + 1, autoCostWithBlessLV.Length - 1)] <= BlessLVManager.Instance.m_TreeLV ?
+                                RedPointState.Simple : RedPointState.None;
+        }
+        else
+        {
+            redpoint1.state = RedPointState.None;
+        }
 
+        var speedIndex = LocalSave.GetInt("redspeed" + PlayerDatas.Instance.baseData.PlayerID);
+        redpoint2.state = RedPointState.None;
+        if (speedIndex == 0 && TaskManager.Instance.mainTask.TaskID > speed2UnlockMissionID &&
+            !InvestModel.Instance.IsActiveFightSpeed(3))
+        {
+            redpoint2.state = RedPointState.Simple;
+        }
+        else if (speedIndex < 2 && InvestModel.Instance.IsActiveFightSpeed(3))
+        {
+            redpoint2.state = RedPointState.Simple;
+        }
+    }
+
+    public void ClickCostRed()
+    {
+        int index = 0;
+        for (int i = 0; i < autoCostWithBlessLV.Length; i++)
+        {
+            if (autoCostWithBlessLV[i] <= BlessLVManager.Instance.m_TreeLV)
+            {
+                index = i;
+            }
+            else
+            {
+                break;
+            }
+        }
+        LocalSave.SetInt("redcost" + PlayerDatas.Instance.baseData.PlayerID, index);
+        UpdateRedpint();
+    }
+
+    public void ClickSpeedRed()
+    {
+        int index = 0;
+        if (!InvestModel.Instance.IsActiveFightSpeed(3))
+        {
+            if (TaskManager.Instance.mainTask.TaskID > speed2UnlockMissionID)
+            {
+                index = 1;
+            }
+        }
+        else
+        {
+            index = 2;
+        }
+        LocalSave.SetInt("redspeed" + PlayerDatas.Instance.baseData.PlayerID, index);
+        UpdateRedpint();
+
+    }
+
+    void OnTaskUpdate()
+    {
+        //浠诲姟鍒锋柊姣旇緝棰戠箒
+        if (TaskManager.Instance.mainTask.TaskID < speed2UnlockMissionID)
+        {
+            return;
+        }
+        if (LocalSave.GetInt("redspeed" + PlayerDatas.Instance.baseData.PlayerID) > 0)
+            return;
+        if (redpoint2.state == RedPointState.Simple)
+            return;
+        UpdateRedpint();
+    }
+
+    void OnInvestUpdate(int type)
+    {
+        if (type > 2)
+            return;
+        UpdateRedpint();
+    }
 }

--
Gitblit v1.8.0