From a8b4691d1ee8bcdf911352eddfb12f88fd4f9034 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=A3=AE2003?= <2384017988@qq.com>
Date: Tue, 21 Jul 2026 01:06:09 +0800
Subject: [PATCH] 1
---
.../aa/UI/Game/GameMainPanel_FishBase.cs | 20 ++++++++++++++++++-
1 file changed, 19 insertions(+), 1 deletion(-)
diff --git a/Assets/MyGame/aa/UI/Game/GameMainPanel_FishBase.cs b/Assets/MyGame/aa/UI/Game/GameMainPanel_FishBase.cs
index b4c87cfb1..d75fe742e 100644
--- a/Assets/MyGame/aa/UI/Game/GameMainPanel_FishBase.cs
+++ b/Assets/MyGame/aa/UI/Game/GameMainPanel_FishBase.cs
@@ -2425,7 +2425,12 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
return 1;
}
- /// 按档位索引设置炮台消耗(直接对齐 consumeGoldNum,避免触发音效/SyncCannonMultiple)
+ ///
+ /// 按档位索引设置 bot 炮台消耗。
+ /// 同时更新底层数据 consumeGoldNum、文本显示,并广播给其他客户端,
+ /// 保证所有客户端的 bot 炮倍一致(发射子弹扣金币、打中鱼计算奖励都用最新值)。
+ /// 不走 SyncCannonMultiple(那个用的是本地玩家 currSitData.posID,不能给 bot 用)。
+ ///
private void ApplyBotLevelIndex(SitPosData sit, int targetIndex)
{
int count = GetPaoBeiCount();
@@ -2434,6 +2439,19 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
sit.consumeGoldNum = paoBeiList[targetIndex];
if (sit.tMP_TurretConsumeNum != null)
sit.tMP_TurretConsumeNum.text = sit.consumeGoldNum.ToString();
+ // ⭐ 同步 indexConsume,保持档位索引与 consumeGoldNum 一致
+ sit.SyncIndexByConsume(sit.consumeGoldNum);
+
+ // ⭐ 广播 bot 炮倍变化给其他客户端(用 bot 自己的 sitPos),
+ // 接收端 SyncGameData_ChangeCannonMultiple 会根据 sitPos 更新对应座位
+ var sgd = new SyncGameData
+ {
+ sitPos = sit.posID,
+ frameType = FrameDataType.changeCannonMultiple,
+ time = BeijingTimeManager.Instance.CurrentTimestampMs,
+ frameData = new FrameData_ChangeCannonMultiple { cannonMultiple = (int)sit.consumeGoldNum }
+ };
+ WebSocketSendList.SyncGameData(sgd);
}
/// 退出条件检查:金币>设定 或 金币<设定