This commit is contained in:
2026-07-19 14:27:00 +08:00
parent c82f884c54
commit c0ee537e96
10 changed files with 252 additions and 206 deletions
@@ -720,6 +720,9 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
private void HandleInput()
{
// ⭐ 退出倒计时期间屏蔽本地玩家手动输入(旋转/开火/锁定),其他玩家和机器人不受影响
if (_isLeavingCountdown) return;
CrossPlatformInput input = GetInput();
if (!input.isPressed && !input.wasPressedThisFrame && !input.wasReleasedThisFrame)
@@ -927,6 +930,8 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
private void HandleAutoRotate()
{
// ⭐ 退出倒计时期间屏蔽本地玩家自动旋转,其他玩家和机器人不受影响
if (_isLeavingCountdown) return;
// 锁定模式优先
@@ -1163,6 +1168,8 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
private void HandleAutoFire()
{
if (currSitData == null) return;
// ⭐ 退出倒计时期间屏蔽本地玩家自动开火,其他玩家和机器人不受影响
if (_isLeavingCountdown) return;
bool needAutoFire = toggle_SkillAuto.isOn || (toggle_Lock.isOn && currSitData.isLock && currSitData.lockFX.gameObject.activeSelf);
if (!needAutoFire)
@@ -1413,6 +1420,9 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
//}
private void HandleLock()
{
// ⭐ 退出倒计时期间屏蔽本地玩家手动锁定,其他玩家和机器人不受影响
if (_isLeavingCountdown) return;
CrossPlatformInput input = GetInput();
if (!toggle_Lock.isOn) return;
if (!input.wasPressedThisFrame && !input.wasReleasedThisFrame) return;
@@ -1530,6 +1540,9 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
private void HandleAutoLock()
{
// ⭐ 退出倒计时期间屏蔽本地玩家自动锁定,其他玩家和机器人不受影响
if (_isLeavingCountdown) return;
// 自动锁定必须满足:自动开火 + 锁定开关开启
if (!toggle_SkillAuto.isOn) return;
if (!toggle_Lock.isOn) return; // ✔ 自动锁定必须在锁定开关开启时才工作
@@ -1822,7 +1835,6 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
#region ⑦ 服务器广播处理(NetReceiveModule)
public void SyncGameData_Rotate(SyncGameData sync)
{
if (_isLeavingCountdown) return;
if (sync.sitPos == currSitData.posID) return;
var data = FrameDataParser.Parse<FrameData_Rotate>(sync.frameData);
@@ -1831,7 +1843,6 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
public void SyncGameData_FireBullit(FireCannonSendData sync)
{
if (_isLeavingCountdown) return;
// ⭐ 跳过本地玩家(本地玩家开火由 SyncFire → 服务器广播回来后创建子弹,
// 但如果服务器不回广播给开火者,本地玩家需要在 SyncFire 里直接 FireBullet)
@@ -1871,7 +1882,6 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
/// </summary>
public void SyncGameData_BotFireAngle(SyncGameData sync)
{
if (_isLeavingCountdown) return;
if (sync == null || sync.frameData == null) return;
if (sync.sitPos < 0 || sync.sitPos >= list_Sits.Count) return;
@@ -1887,7 +1897,6 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
public void SyncGameData_ChangeTargetMonster(SyncGameData sync)
{
if (_isLeavingCountdown) return;
if (sync.sitPos == currSitData.posID) return;
var data = FrameDataParser.Parse<FrameData_ChangeAutoTarget>(sync.frameData);
@@ -1910,7 +1919,6 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
public void SyncGameData_RendromDieFish(SyncGameData sync)
{
if (_isLeavingCountdown) return;
var data = JsonConvert.DeserializeObject<FrameData_RandomDieFish>(sync.frameData.ToString());
CreateFishManager.Instance.Id_DieListFish_FX(
@@ -1924,7 +1932,6 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
public void SyncGameData_TurretState(SyncGameData sync)
{
if (_isLeavingCountdown) return;
if (sync.sitPos == currSitData.posID) return;
var data = FrameDataParser.Parse<FrameData_TurretState>(sync.frameData);
@@ -1935,7 +1942,6 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
public void SyncGameData_ChangeTurret(SyncGameData sync)
{
if (_isLeavingCountdown) return;
if (sync.sitPos == currSitData.posID) return;
var data = FrameDataParser.Parse<FrameData_ChangeTurret>(sync.frameData);
@@ -1944,7 +1950,6 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
public void SyncGameData_ChangeWing(SyncGameData sync)
{
if (_isLeavingCountdown) return;
if (sync.sitPos == currSitData.posID) return;
var data = FrameDataParser.Parse<FrameData_ChangeTurret>(sync.frameData);
@@ -1953,7 +1958,6 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
public void SyncGameData_ChangeCannonMultiple(SyncGameData sync)
{
if (_isLeavingCountdown) return;
if (sync.sitPos == currSitData.posID) return;
var data = FrameDataParser.Parse<FrameData_ChangeCannonMultiple>(sync.frameData);
@@ -1977,7 +1981,6 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
public void SyncGameData_FreezeFish(SyncGameData sync)
{
if (_isLeavingCountdown) return;
if (sync.sitPos == currSitData.posID) return; // 自己发的不管
var data = FrameDataParser.Parse<FrameData_FreezeFish>(sync.frameData);