This commit is contained in:
2026-08-03 17:00:34 +08:00
parent d730d5c050
commit 91c0a2d814
5 changed files with 47 additions and 42 deletions
@@ -1650,7 +1650,7 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
}
bossCtrl.v3 = sitData.transform.position;
bossCtrl.JiaFen = onScoreAdd; // 先设置 JiaFen,DieFish 的 lambda 才能捕获到
bossCtrl.JiaFen = WrapJiaFenWithBaoJiangEnd(onScoreAdd, killFish, sitData, isSelfKill_Boss);
bossCtrl.isLocalCoin = sitData.user == GameManager.Instance.user.id; // ⭐ 金/银区分
bossCtrl.killerSitPos = sitData.posID; // ⭐ 爆奖杀小鱼用击杀者座位(含人机)
monster.DieFish(killFish); // Boss 重写 action_effect_DieAward,捕获上面的 JiaFen
@@ -1671,14 +1671,6 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
}
bossCtrl.action_effect_DieAward?.Invoke(bossCtrl.currEffect_DieAward);
// ⭐ self 流程:设置 bjFishId,供 OnScoreEnd 发送 baoJiangEnd 帧同步给其他客户端
if (GameManager.Instance.useNotSelfBaoJiangMode
&& isSelfKill_Boss
&& bossCtrl.currEffect_DieAward != null)
{
var bjEvt = bossCtrl.currEffect_DieAward.GetComponent<BJEventBase>();
if (bjEvt != null) bjEvt.bjFishId = killFish.fishId;
}
}
break;
@@ -1852,7 +1844,7 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
}
bossCtrl.v3 = sitData.transform.position;
bossCtrl.JiaFen = onScoreAdd; // 先设置 JiaFen
bossCtrl.JiaFen = WrapJiaFenWithBaoJiangEnd(onScoreAdd, killFish, sitData, isSelfKill_TBoss);
bossCtrl.isLocalCoin = sitData.user == GameManager.Instance.user.id; // ⭐ 金/银区分
bossCtrl.killerSitPos = sitData.posID; // ⭐ 爆奖杀小鱼用击杀者座位(含人机)
monster.DieFish(killFish); // Boss 重写 action_effect_DieAward
@@ -1873,14 +1865,6 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
}
bossCtrl.action_effect_DieAward?.Invoke(bossCtrl.currEffect_DieAward);
// ⭐ self 流程:设置 bjFishId,供 OnScoreEnd 发送 baoJiangEnd 帧同步给其他客户端
if (GameManager.Instance.useNotSelfBaoJiangMode
&& isSelfKill_TBoss
&& bossCtrl.currEffect_DieAward != null)
{
var bjEvt = bossCtrl.currEffect_DieAward.GetComponent<BJEventBase>();
if (bjEvt != null) bjEvt.bjFishId = killFish.fishId;
}
}
break;
default:
@@ -1911,6 +1895,38 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
// ================================================================
// 工具:包装 JiaFen 回调,self 流程加分完成后发送 baoJiangEnd 帧同步
// ================================================================
/// <summary>
/// 包装 onScoreAdd:先执行原加分,再在 self+not-self 模式开启时发送 baoJiangEnd 帧同步。
/// 这样无论子类走 OnScoreEnd(雷龙)还是直接调 JiaFen(金龙),都能触发帧同步。
/// BJEventBase.Init 会把这个包装再包一层 `(p) => action?.Invoke(p)`,调用链不变。
/// </summary>
private System.Action<int> WrapJiaFenWithBaoJiangEnd(System.Action<int> onScoreAdd, RoomKillNotice killFish, SitPosData sitData, bool isSelfKill)
{
return (p) =>
{
// 1. 执行原加分逻辑
onScoreAdd?.Invoke(p);
// 2. self 流程:本地玩家击杀且开启 not-self 模式时,发送 baoJiangEnd 帧同步
// (机器人击杀由房主延迟代发,不在这里发)
if (isSelfKill
&& GameManager.Instance != null
&& GameManager.Instance.useNotSelfBaoJiangMode)
{
BaoJiangNotSelfHandler.SendBaoJiangEnd(
killFish.userId,
killFish.fishId,
killFish.beishu,
killFish.gold,
sitData.posID);
}
};
}
// ================================================================
// 工具:获取当前面板座位列表
// ================================================================
+4 -5
View File
@@ -19,14 +19,13 @@ namespace Assets.MyGame.Scripts.Net
#if ENABLE_LOG_FILE
public const string baseURL = "http://47.109.132.12";
#elif UNITY_EDITOR
//public const string baseURL = "http://8.137.163.153";
public const string baseURL = "http://47.109.132.12";
#elif NewIP
public const string baseURL = "http://47.109.34.50";
#else
//public const string baseURL = "http://47.109.132.12";
public const string baseURL = "http://47.109.132.12";
public const string baseURL = "http://47.109.34.50";
//public const string baseURL = "http://47.109.34.50";
#endif
@@ -38,14 +38,14 @@ namespace Assets.MyGame.Scripts.Net
private const string baseUrl = "ws://47.109.132.12";
//private const string baseUrl = "ws://game5241.wzaxr.top";
#elif UNITY_EDITOR
//private const string baseUrl = "ws://8.137.163.153";
private const string baseUrl = "ws://47.109.132.12";
#elif NewIP
private const string baseUrl = "ws://47.109.34.50";
//private const string baseUrl = "ws://47.109.132.12";
#else
//private const string baseUrl = "ws://47.109.132.12";
private const string baseUrl = "ws://47.109.132.12";
private const string baseUrl = "ws://47.109.34.50";
//private const string baseUrl = "ws://47.109.34.50";
#endif
public bool isGame = false;
@@ -36,8 +36,6 @@ public class BJEventBase : MonoBehaviour
public int paoBei; // 炮倍
public int fishScore; // 底分
public int bJbeishu;
/// <summary>爆奖关联的鱼ID(self 流程结束时用于发送 baoJiangEnd 帧同步,供其他客户端 Finalize)</summary>
public string bjFishId;
[Header("移动")]
public float showDelay = 3f; // 报完奖后停留时间(让玩家看清爆奖效果)
@@ -410,18 +408,6 @@ public class BJEventBase : MonoBehaviour
// 回加金币到玩家
JiaFen?.Invoke();
// ⭐ self 流程结束:本地玩家击杀且开启 not-self 模式时,
// 发送 baoJiangEnd 帧同步给服务端,其他客户端收到后 Finalize not-self BJEndUI。
// (机器人击杀时由房主延迟代发,不在这里发)
if (isSelf
&& GameManager.Instance != null
&& GameManager.Instance.useNotSelfBaoJiangMode
&& _targetSit != null
&& !string.IsNullOrEmpty(bjFishId))
{
BaoJiangNotSelfHandler.SendBaoJiangEnd(_targetSit.user, bjFishId, bJbeishu, maxScore, posID);
}
// BJEndUI:无论是否开启分数面板都显示
if (bjEndUI != null)
{
@@ -54,6 +54,10 @@ public class LeiLongEvent : BJEventBase
maxScore = goldCount;
this.posID = posID;
paoBei = paobei;
// ⭐ 补回遗漏的 fishScore/beishu 赋值,
// 否则 OnScoreEnd 发送 baoJiangEnd 帧同步时 bJbeishu=0 导致 not-self 倍数显示错误
this.fishScore = fishScore;
bJbeishu = beishu;
action1?.Invoke();
}