1
This commit is contained in:
@@ -130,6 +130,8 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
|
||||
[Tooltip("按 M 键生成的鱼编号(配置 fishNumber)")]
|
||||
public string debugSpawnFishNumber = "11043";
|
||||
public bool isleft = true;
|
||||
[Tooltip("按M键批量模式:激活=本地在所有普通鱼路线上各生成一条(不走服务端);不激活=走服务端出一条")]
|
||||
public bool debugSpawnAllLines = false;
|
||||
private Dictionary<string, CharacterStateType> frozenFishStates = new Dictionary<string, CharacterStateType>();
|
||||
private Dictionary<string, bool> frozenFishIsMoves = new Dictionary<string, bool>();
|
||||
|
||||
@@ -333,7 +335,23 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
|
||||
Debug.LogWarning("[CreateFishManager] 当前未在房间中(roomId 为空),无法出鱼");
|
||||
return;
|
||||
}
|
||||
APIManager.TempSpawnFish(roomId, debugSpawnFishNumber,1,30, isleft?1:2);
|
||||
// ⭐ debugSpawnAllLines 激活:本地在所有普通鱼路线("曲线"+id)上各生成一条(不走服务端);
|
||||
// 不激活:走服务端 AdminApi 出一条(现状)
|
||||
if (debugSpawnAllLines)
|
||||
{
|
||||
int spawned = 0;
|
||||
foreach (var key in MonsterMoveLine.dic_BezierCurveDatas.Keys)
|
||||
{
|
||||
if (key == null || !key.StartsWith("曲线")) continue;
|
||||
if (!int.TryParse(key.Substring(2), out int rid)) continue;
|
||||
if (ManualSpawn(debugSpawnFishNumber, rid, 30)) spawned++;
|
||||
}
|
||||
Debug.Log($"[CreateFishManager] 调试批量出鱼(所有路线): fishNumber={debugSpawnFishNumber}, 共生成{spawned}条");
|
||||
}
|
||||
else
|
||||
{
|
||||
APIManager.TempSpawnFish(roomId, debugSpawnFishNumber,1,30, isleft?1:2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2078,28 +2096,30 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
|
||||
}
|
||||
|
||||
// 特殊鱼:金币飞向炮台(池化,动画事件播完手动回池)
|
||||
// ⭐ Get 不设置位置:DieEffect_TSY(ZDX 炸弹蟹等)爆奖完全用预制体里配置好的位置(含 y 轴);
|
||||
// 只有 BJBase 金币特效按鱼死亡位置摆放(startPoint 依赖)
|
||||
var award = EffectPool.Instance.Get(
|
||||
monster.effect_DieAward != null ? monster.effect_DieAward : dieFXPrefabAward,
|
||||
monster.transform.position, Quaternion.identity, currGameType.subPanelParent.parent,
|
||||
currGameType.subPanelParent.parent,
|
||||
autoReturn: false);
|
||||
try
|
||||
{
|
||||
award.GetComponent<RectTransform>().anchoredPosition =
|
||||
CoordinateTransformation.WorldPos_ToCanvas(
|
||||
monster.transform.position,
|
||||
GetUiCanvas());
|
||||
}
|
||||
catch
|
||||
{
|
||||
award.transform.position = monster.transform.position;
|
||||
|
||||
}
|
||||
|
||||
|
||||
var coinScript = award.GetComponent<BJBase>();
|
||||
if (coinScript != null)
|
||||
{
|
||||
// 普通爆奖(BJBase 体系)
|
||||
// 普通爆奖(BJBase 体系):摆到鱼死亡位置(画布坐标),startPoint 依赖
|
||||
try
|
||||
{
|
||||
award.GetComponent<RectTransform>().anchoredPosition =
|
||||
CoordinateTransformation.WorldPos_ToCanvas(
|
||||
monster.transform.position,
|
||||
GetUiCanvas());
|
||||
}
|
||||
catch
|
||||
{
|
||||
award.transform.position = monster.transform.position;
|
||||
|
||||
}
|
||||
|
||||
coinScript.startPoint = award.transform.position;
|
||||
coinScript.Init(killFish.gold, sitData.transform.position, killFish.userId, sitData.posID, killFish.param);
|
||||
coinScript.isLocalCoin = sitData.user == GameManager.Instance.user.id;
|
||||
|
||||
@@ -90,9 +90,17 @@ namespace Assets.MyGame.Scripts.Net
|
||||
case "BeginGame":
|
||||
{
|
||||
var va = JsonConvert.DeserializeObject<WebSocketResponseBase<ChessGameRoom>>(msg.ToString()).arguments[0];
|
||||
roomMainPanel.subUIManager.CloseAll();
|
||||
roomMainPanel.StartGame(msg);
|
||||
roomMainPanel.UpdateUserData(va);
|
||||
if (roomMainPanel != null && roomMainPanel.IsChessGameActive && va.state == 2)
|
||||
{
|
||||
// 对局中收到 BeginGame = 断线重连/取消挂起的房间同步:只刷新玩家数据,不重置对局
|
||||
roomMainPanel.UpdateUserData(va);
|
||||
}
|
||||
else
|
||||
{
|
||||
roomMainPanel.subUIManager.CloseAll();
|
||||
roomMainPanel.StartGame(msg);
|
||||
roomMainPanel.UpdateUserData(va);
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
@@ -174,6 +182,12 @@ namespace Assets.MyGame.Scripts.Net
|
||||
{
|
||||
roomMainPanel.subUIManager.ShowAsync(UIPanel.ZGXQDefeated);
|
||||
}
|
||||
// 服务端已结算:本地对局同步置结束 + 停表(防后台方回前台后对局还在跑)
|
||||
if (roomMainPanel != null)
|
||||
{
|
||||
roomMainPanel.StopWaitCountdown();
|
||||
roomMainPanel.MarkChessGameOverByServer();
|
||||
}
|
||||
// 结算后按结果实时更新房间双方金币显示
|
||||
roomMainPanel.ApplySettlementGold(va);
|
||||
}
|
||||
@@ -222,7 +236,16 @@ namespace Assets.MyGame.Scripts.Net
|
||||
}
|
||||
break;
|
||||
case "Disconnect":
|
||||
roomMainPanel.subUIManager.ShowAsync(UIPanel.ZGXQWin);
|
||||
{
|
||||
// 对方断线 { userId, disconnectTime, timeoutSeconds }:只提示等待重连,
|
||||
// 服务端超时未重连会自动判负推 GameEnd(心跳里的 CheckTimeout 也会触发检查)
|
||||
var va = JsonConvert.DeserializeObject<WebSocketResponseBase<Dictionary<string, object>>>(msg).arguments[0];
|
||||
string disUserId = va["userId"]?.ToString();
|
||||
int disTimeout = 60;
|
||||
if (va.ContainsKey("timeoutSeconds") && va["timeoutSeconds"] != null)
|
||||
int.TryParse(va["timeoutSeconds"].ToString(), out disTimeout);
|
||||
if (roomMainPanel != null) roomMainPanel.OnOpponentDisconnected(disUserId, disTimeout);
|
||||
}
|
||||
break;
|
||||
case "GameError":
|
||||
{
|
||||
@@ -251,6 +274,7 @@ namespace Assets.MyGame.Scripts.Net
|
||||
{
|
||||
var va = JsonConvert.DeserializeObject<WebSocketResponseBase<Dictionary<string, object>>>(msg).arguments[0];
|
||||
Debug.Log($"[Chess] 重连: userId={va["userId"]}, userName={va["userName"]}");
|
||||
if (roomMainPanel != null) roomMainPanel.OnOpponentReconnected(va["userId"]?.ToString());
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -272,6 +296,8 @@ namespace Assets.MyGame.Scripts.Net
|
||||
roomMainPanel.subUIManager.ShowAsync(UIPanel.ZGXQWin);
|
||||
else
|
||||
roomMainPanel.subUIManager.ShowAsync(UIPanel.ZGXQDefeated);
|
||||
// 服务端已结算:本地对局同步置结束(防后台方回前台后对局还在跑)
|
||||
if (roomMainPanel != null) roomMainPanel.MarkChessGameOverByServer();
|
||||
// 结算后按结果实时更新房间双方金币显示
|
||||
roomMainPanel.ApplySettlementGold(winUserId);
|
||||
}
|
||||
@@ -316,9 +342,9 @@ namespace Assets.MyGame.Scripts.Net
|
||||
case "PlayerAfkNotice":
|
||||
{
|
||||
// 玩家挂起通知 { userId }(房间组推送;挂起仅表现提示,不影响服务端操作校验)
|
||||
// 表现层(座位挂起标记)由 UI 对话接入
|
||||
var va = JsonConvert.DeserializeObject<WebSocketResponseBase<PlayerAfkNoticeData>>(msg).arguments[0];
|
||||
Debug.Log($"[Chess] 玩家挂起: userId={va?.userId}");
|
||||
if (roomMainPanel != null) roomMainPanel.OnPlayerAfkNotice(va?.userId);
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -327,6 +353,7 @@ namespace Assets.MyGame.Scripts.Net
|
||||
// 玩家取消挂起通知 { userId }(房间组推送;发起者本人另收 BeginGame 恢复房间同步)
|
||||
var va = JsonConvert.DeserializeObject<WebSocketResponseBase<PlayerAfkNoticeData>>(msg).arguments[0];
|
||||
Debug.Log($"[Chess] 玩家取消挂起: userId={va?.userId}");
|
||||
if (roomMainPanel != null) roomMainPanel.OnPlayerCancelAfkNotice(va?.userId);
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user