1
This commit is contained in:
@@ -233,9 +233,7 @@ namespace Assets.MyGame.Scripts.Net
|
||||
// 与 RoomFireNotice(FireCannonSendData) 分开处理,仅用于存储角度到 botLastAngle
|
||||
EventCenter.Instance.EventTrigger<SyncGameData>(ConstEventString.SyncGameData_BotFireAngle, syncGameData);
|
||||
break;
|
||||
case FrameDataType.createFish:
|
||||
EventCenter.Instance.EventTrigger<SyncGameData>(ConstEventString.SyncGameData_CreateFish, syncGameData);
|
||||
break;
|
||||
// createFish=3 已废弃:鱼创建改由服务端 OnFishSpawn 事件下发
|
||||
case FrameDataType.changeAutoTarget:
|
||||
EventCenter.Instance.EventTrigger<SyncGameData>(ConstEventString.SyncGameData_ChangeTargetMonster, syncGameData);
|
||||
break;
|
||||
@@ -258,15 +256,123 @@ namespace Assets.MyGame.Scripts.Net
|
||||
case FrameDataType.changeWing:
|
||||
EventCenter.Instance.EventTrigger<SyncGameData>(ConstEventString.SyncGameData_ChangeWing, syncGameData);
|
||||
break;
|
||||
case FrameDataType.requestSyncFish:
|
||||
EventCenter.Instance.EventTrigger<SyncGameData>(ConstEventString.SyncGameData_RequestSyncFish, syncGameData);
|
||||
break;
|
||||
// requestSyncFish=11 已废弃:鱼同步改由服务端 OnFishSpawn(type=sync) 下发
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
// ================================================================
|
||||
// 新协议事件分发 (OnFishSpawn / PlayerAfk / FishFrozen / KillNotice 等)
|
||||
// ================================================================
|
||||
|
||||
/// <summary>
|
||||
/// 服务端出鱼事件 OnFishSpawn 处理。
|
||||
/// 破坏性替代旧 createFish 帧同步:服务端统一出鱼,客户端只接收并生成。
|
||||
/// </summary>
|
||||
public static void OnFishSpawn(string msg)
|
||||
{
|
||||
var data = JsonConvert.DeserializeObject<WebSocketResponseBase<OnFishSpawnData>>(msg).arguments[0];
|
||||
if (data == null) return;
|
||||
EventCenter.Instance.EventTrigger<OnFishSpawnData>(ConstEventString.OnFishSpawn, data);
|
||||
}
|
||||
|
||||
/// <summary>鱼列表刷新</summary>
|
||||
public static void OnFishList(string msg)
|
||||
{
|
||||
var fishList = JsonConvert.DeserializeObject<WebSocketResponseBase<object[]>>(msg).arguments[0];
|
||||
EventCenter.Instance.EventTrigger<object[]>(ConstEventString.OnFishList, fishList);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 冰冻道具(40003)生效事件 FishFrozen。
|
||||
/// 鱼存活时间延长 15 秒,客户端写死 15s 倒计时。
|
||||
/// </summary>
|
||||
public static void FishFrozen(string msg)
|
||||
{
|
||||
EventCenter.Instance.EventTrigger(ConstEventString.FishFrozen);
|
||||
}
|
||||
|
||||
/// <summary>玩家挂机通知</summary>
|
||||
public static void PlayerAfkNotice(string msg)
|
||||
{
|
||||
var data = JsonConvert.DeserializeObject<WebSocketResponseBase<PlayerAfkNoticeData>>(msg).arguments[0];
|
||||
if (data == null) return;
|
||||
EventCenter.Instance.EventTrigger<PlayerAfkNoticeData>(ConstEventString.PlayerAfkNotice, data);
|
||||
}
|
||||
|
||||
/// <summary>玩家取消挂机通知</summary>
|
||||
public static void PlayerCancelAfkNotice(string msg)
|
||||
{
|
||||
var data = JsonConvert.DeserializeObject<WebSocketResponseBase<PlayerAfkNoticeData>>(msg).arguments[0];
|
||||
if (data == null) return;
|
||||
EventCenter.Instance.EventTrigger<PlayerAfkNoticeData>(ConstEventString.PlayerCancelAfkNotice, data);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 全局击杀公告 KillNotice。
|
||||
/// 真人击杀/机器人模拟,机器人模拟时额外带 fishName/multiplier/sceneName。
|
||||
/// </summary>
|
||||
public static void KillNotice(string msg)
|
||||
{
|
||||
var data = JsonConvert.DeserializeObject<WebSocketResponseBase<KillNoticeData>>(msg).arguments[0];
|
||||
if (data == null) return;
|
||||
EventCenter.Instance.EventTrigger<KillNoticeData>(ConstEventString.KillNotice, data);
|
||||
}
|
||||
|
||||
/// <summary>机器人退出房间通知</summary>
|
||||
public static void BotLeaveRoomNotice(string msg)
|
||||
{
|
||||
var data = JsonConvert.DeserializeObject<WebSocketResponseBase<BotLeaveRoomNoticeData>>(msg).arguments[0];
|
||||
if (data == null) return;
|
||||
WebSocketReponseList.BotLeaveRoom(data.userId);
|
||||
}
|
||||
|
||||
/// <summary>房主断线</summary>
|
||||
public static void HostDisconnectNotice(string msg)
|
||||
{
|
||||
EventCenter.Instance.EventTrigger(ConstEventString.HostDisconnect);
|
||||
WebSocketReponseList.HostDisconnect();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 座位变更 OnSeatChange。
|
||||
/// 数据: { type, userId, position, showWaiting? }
|
||||
/// </summary>
|
||||
public static void OnSeatChange(string msg)
|
||||
{
|
||||
var data = JsonConvert.DeserializeObject<WebSocketResponseBase<Dictionary<string, object>>>(msg).arguments[0];
|
||||
if (data == null) return;
|
||||
// JSON 字段可能是 long/double/string/bool 等任意类型,统一 ToString()+TryParse 容错
|
||||
int seatType = data.TryGetValue("type", out var t) && int.TryParse(t?.ToString(), out var st) ? st : 0;
|
||||
string userId = data.TryGetValue("userId", out var u) ? u?.ToString() : "";
|
||||
int position = data.TryGetValue("position", out var p) && int.TryParse(p?.ToString(), out var pos) ? pos : -1;
|
||||
bool showWaiting = data.TryGetValue("showWaiting", out var sw) && (sw is bool b ? b : (sw != null && bool.TryParse(sw.ToString(), out var bv) && bv));
|
||||
WebSocketReponseList.SeatChange(seatType, userId, position, showWaiting);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 房主控制权移交 ChangeControllerUser。
|
||||
/// 仅维护 SitPosData.roomOwnerSit,不再设置 fangzhu(鱼创建已由服务端统一出鱼)。
|
||||
/// </summary>
|
||||
public static void ChangeControllerUser(string msg)
|
||||
{
|
||||
var userId = JsonConvert.DeserializeObject<WebSocketResponseBase<string>>(msg).arguments[0];
|
||||
if (userId == GameManager.Instance.user.id)
|
||||
{
|
||||
// 本地玩家成为房主:同步本地房主引用
|
||||
if (SitPosData.localPlayerSit != null)
|
||||
SitPosData.roomOwnerSit = SitPosData.localPlayerSit;
|
||||
}
|
||||
else if (userId != null && userId.StartsWith("bot_"))
|
||||
{
|
||||
// 房主是人机:人机无法真正发包,由本地首个非人机玩家代行房主显示职责
|
||||
SitPosData.TransferRoomOwner();
|
||||
}
|
||||
// 其他真人玩家成为房主时无需本地操作(roomOwnerSit 由 TransferRoomOwner/ShowPlayer 维护)
|
||||
}
|
||||
public static void LeaveRoomResult(string msg)
|
||||
{
|
||||
//WebSocketManager.Instance.isGame = false;
|
||||
|
||||
Reference in New Issue
Block a user