This commit is contained in:
2026-07-30 22:09:55 +08:00
parent 9ad6650b77
commit fafc5c8bb7
32 changed files with 1269 additions and 171 deletions
@@ -460,6 +460,8 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
// SyncGameData_FreezeFish 已废弃:冰冻改由服务端 FishFrozen 事件统一触发
EventCenter.Instance.AddEventListener(ConstEventString.FishFrozen, OnFishFrozen);
EventCenter.Instance.AddEventListener<SyncGameData>(ConstEventString.SyncGameData_BotFireAngle, SyncGameData_BotFireAngle);
// ⭐ 爆奖结束帧同步(baoJiangEnd):其他玩家爆奖完成,显示最终 BJEndUI 并加分
EventCenter.Instance.AddEventListener<SyncGameData>(ConstEventString.BaoJiangEnd, OnBaoJiangEnd);
btn_TuJian.onClick.AddListener(() =>
{
subUIManager.ShowAsync(UIPanel.GameTuJian);
@@ -540,10 +542,13 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
// SyncGameData_FreezeFish 已废弃:冰冻改由服务端 FishFrozen 事件统一触发
EventCenter.Instance.RemoveEventListener(ConstEventString.FishFrozen, OnFishFrozen);
EventCenter.Instance.RemoveEventListener<SyncGameData>(ConstEventString.SyncGameData_BotFireAngle, SyncGameData_BotFireAngle);
EventCenter.Instance.RemoveEventListener<SyncGameData>(ConstEventString.BaoJiangEnd, OnBaoJiangEnd);
// ⭐ 离场清理:子弹池 + 特效池彻底清空,防止内存泄漏
BulletPool.Instance.ClearAll();
EffectPool.Instance.ClearAll();
// ⭐ 清理未完成的 not-self 爆奖 pending(避免悬空引用)
BaoJiangNotSelfHandler.ClearAll();
}
public virtual void Start()
@@ -2328,6 +2333,27 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
sit.tMP_TurretConsumeNum.text = data.cannonMultiple.ToString();
}
/// <summary>
/// 爆奖结束帧同步(baoJiangEnd):
/// 其他玩家爆奖流程完成,从 pending 取出对应 not-self 爆奖,
/// 显示最终 BJEndUI(开 tMP_beishu / 关 img_BaoJiangZhong)并加分。
/// 自己触发的爆奖不在这里处理(self 流程在 BJEventBase 内部已自行结束)。
/// </summary>
public void OnBaoJiangEnd(SyncGameData sync)
{
var data = FrameDataParser.Parse<FrameData_BaoJiangEnd>(sync.frameData);
if (data == null)
{
Debug.LogWarning("[GameMainPanel_FishBase] OnBaoJiangEnd: frameData 解析失败");
return;
}
// 自己触发的爆奖不在这里处理(self 流程已自行走完)
if (data.userId == GameManager.Instance.user.id) return;
BaoJiangNotSelfHandler.OnBaoJiangEnd(data.userId, data.fishId, data.beishu, data.score);
}
public void SyncCannonMultiple(int consumeGold)
{
if (currSitData == null) return;