From a247c56a0c15ca9d730e2c5c376b63fa461f62ce Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期一, 29 九月 2025 16:26:19 +0800
Subject: [PATCH] 0312 自动战斗倍率,修复规则界面滑动问题

---
 Main/System/Battle/BattleField/BattleField.cs |    2 +-
 Main/System/Main/AutoFightModel.cs            |   13 ++++++++-----
 Main/System/Battle/BattleManager.cs           |   21 +++++++++++++++++++++
 Main/System/Battle/FullScreenBattleWin.cs     |   10 ++++------
 Main/System/Setting/QuickSetting.cs           |    3 +++
 Main/System/Tip/FuncRuleWin.cs                |    2 ++
 6 files changed, 39 insertions(+), 12 deletions(-)

diff --git a/Main/System/Battle/BattleField/BattleField.cs b/Main/System/Battle/BattleField/BattleField.cs
index 76f228b..5a2ae2d 100644
--- a/Main/System/Battle/BattleField/BattleField.cs
+++ b/Main/System/Battle/BattleField/BattleField.cs
@@ -121,7 +121,7 @@
         battleRootNode.SetBackground(ResManager.Instance.LoadAsset<Texture>("Texture/FullScreenBg", "mainui_img_277"));
 
         SetBattleStartState();
-        SetSpeedRatio(speedRatio);
+        SetSpeedRatio(BattleManager.Instance.speedGear[BattleManager.Instance.speedIndex]);
         SetRootNodePosition();
     }
 
diff --git a/Main/System/Battle/BattleManager.cs b/Main/System/Battle/BattleManager.cs
index 966d0e7..9e688d8 100644
--- a/Main/System/Battle/BattleManager.cs
+++ b/Main/System/Battle/BattleManager.cs
@@ -10,6 +10,19 @@
     //  鍚屾椂鍙兘鏈変竴鍦烘垬鏂楀湪杩涜 guid, battlefield
     protected Dictionary<string, BattleField> battleFields = new Dictionary<string, BattleField>();
 
+    public float[] speedGear; //鎴樻枟鍊嶆暟瀵瑰簲鐨勫疄闄呴�熺巼
+    public int speedIndex
+    {
+        get
+        {
+            return QuickSetting.Instance.GetQuickSettingValue<int>(QuickSettingType.BattleSpeed, 0);
+        }
+        set
+        {
+            QuickSetting.Instance.SetQuickSetting(QuickSettingType.BattleSpeed, value);
+            QuickSetting.Instance.SendPackage();
+        }
+    }
 
     public Action<string, BattleField> onBattleFieldCreate;
 
@@ -24,9 +37,17 @@
         LogicEngine.Instance.OnUpdate += Run;
         DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent += OnPlayerLoginOk;
         DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += BeforePlayerInit;
+        ParseConfig();
         
     }
 
+    void ParseConfig()
+    {
+        var config = FuncConfigConfig.Get("AutoGuaji");
+        speedGear = JsonMapper.ToObject<float[]>(config.Numerical4);
+    }
+
+
     public override void Release()
     {
         base.Release();
diff --git a/Main/System/Battle/FullScreenBattleWin.cs b/Main/System/Battle/FullScreenBattleWin.cs
index 854af97..93c722b 100644
--- a/Main/System/Battle/FullScreenBattleWin.cs
+++ b/Main/System/Battle/FullScreenBattleWin.cs
@@ -4,7 +4,6 @@
 
 public class FullScreenBattleWin : UIBase
 {
-    float[] speedGear = { 1.1f, 1.3f, 1.5f };
 
     // 缁勪欢寮曠敤
     public Transform mountPoint;
@@ -63,10 +62,9 @@
         if (null == battleField)
             return;
 
-        int index = Array.IndexOf(speedGear, battleField.speedRatio);
-        index = (index + 1) % speedGear.Length;
-        battleField.SetSpeedRatio(speedGear[index]);
-        textSpeed.text = (index + 1).ToString();
+        BattleManager.Instance.speedIndex = (BattleManager.Instance.speedIndex + 1) % BattleManager.Instance.speedGear.Length;
+        battleField.SetSpeedRatio(BattleManager.Instance.speedGear[BattleManager.Instance.speedIndex]);
+        textSpeed.text = (BattleManager.Instance.speedIndex + 1).ToString();
     }
 
     private void PauseGame()
@@ -164,6 +162,6 @@
         ui.SetBattleField(battleField);
         battleField.UpdateCanvas(canvas);
 
-        textSpeed.text = (Array.IndexOf(speedGear, battleField.speedRatio) + 1).ToString();
+        textSpeed.text = (BattleManager.Instance.speedIndex + 1).ToString();
     }
 }
diff --git a/Main/System/Main/AutoFightModel.cs b/Main/System/Main/AutoFightModel.cs
index d4387c2..752b95b 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);
         }
     }
 
@@ -82,17 +84,18 @@
 
     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();
         DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += BeforePlayerInit;
         BattleManager.Instance.onBattleFieldCreate += OnCreateBattleField;
-        
+
         EventBroadcast.Instance.AddListener<string, SkillConfig, TeamHero>(EventName.BATTLE_CAST_SKILL, OnSkillCast);
 
     }
@@ -191,7 +194,7 @@
             return;
         }
 
-
+        BattleManager.Instance.storyBattleField.SetSpeedRatio(BattleManager.Instance.speedGear[fightSpeed - 1]);
         isAutoAttack = isAutoAttackSet;
 
         //鎵嬪姩浼氫竴鐩磋繘鍏ヨ繖涓�昏緫, 鑷姩瑙﹀彂涓�娆�
diff --git a/Main/System/Setting/QuickSetting.cs b/Main/System/Setting/QuickSetting.cs
index 7fd38c4..c1199d5 100644
--- a/Main/System/Setting/QuickSetting.cs
+++ b/Main/System/Setting/QuickSetting.cs
@@ -18,6 +18,8 @@
         quickSettingDic.Add(QuickSettingType.AutoFight_FightPower, new QuickSettingRange(QuickSettingType.AutoFight_FightPower, 2, 1));
         quickSettingDic.Add(QuickSettingType.AutoFight_Open, new QuickSettingRange(QuickSettingType.AutoFight_Open, 3, 1));
         quickSettingDic.Add(QuickSettingType.AutoGoldRush, new QuickSettingRange(QuickSettingType.AutoGoldRush, 4, 10, 1));  //鑷姩娣橀噾锛�9涓墿鍝佸�硷紝1涓嚜鍔ㄥ埛鏂板紑鍏�
+        quickSettingDic.Add(QuickSettingType.BattleSpeed, new QuickSettingRange(QuickSettingType.BattleSpeed, 14, 1));
+
         setting = new string(UCharacter, 100);
         DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += BeforePlayerDataInitializeEvent;
         DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent += OnPlayerLoginOk;
@@ -160,6 +162,7 @@
     AutoFight_FightPower,   //鏄惁楂樻垬鍔涘仠姝�
     AutoFight_Open,    //鏄惁寮�鍚嚜鍔ㄦ垬鏂�
     AutoGoldRush,   //鑷姩娣橀噾
+    BattleSpeed,    //鎴樻枟閫熷害绱㈠紩  闈炰富绾块儴鍒�
 }
 
 public class QuickSettingRange
diff --git a/Main/System/Tip/FuncRuleWin.cs b/Main/System/Tip/FuncRuleWin.cs
index 6ae2541..3728fdb 100644
--- a/Main/System/Tip/FuncRuleWin.cs
+++ b/Main/System/Tip/FuncRuleWin.cs
@@ -7,6 +7,7 @@
 {
     [SerializeField] Text m_Title;
     [SerializeField] Text m_RuleTxt;
+    [SerializeField] ScrollRect m_ScrollRect;
     // [SerializeField] RectTransform scrollRect;
     // [SerializeField] float maxHeight = 800f; // 璁剧疆鏈�澶ч珮搴﹂檺鍒�
 
@@ -17,6 +18,7 @@
 
     protected override void OnPreOpen()
     {
+        m_ScrollRect.verticalNormalizedPosition = 1;
         var config = RuleConfig.Get(functionOrder);
 
         m_RuleTxt.text = Language.Get(config.Description);

--
Gitblit v1.8.0