1
This commit is contained in:
@@ -251,7 +251,7 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
|
||||
|
||||
foreach (var item in GameManager.Instance.gameData.currRoomData.players)
|
||||
{
|
||||
JoinGame(item.position, item.gold, item.diamond, item.cannonMultiple, 0, item.userId, item.cannonId, item.wingsId);
|
||||
JoinGame(item.position, item.gold, item.diamond, item.cannonMultiple, 0, item.userId, item.cannonId, item.wingsId, item.warGodId);
|
||||
// ⭐ 优先用后端 isBot 字段,兼容 userId.StartsWith("bot_")
|
||||
var sit = list_Sits.Find(s => s.posID == item.position);
|
||||
if (sit != null)
|
||||
@@ -311,7 +311,7 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
|
||||
// 新玩家资源加载完毕后会主动发 requestSyncFish,
|
||||
// 房主收到后才广播场上活鱼(避免新玩家还没加载完就收包丢失)
|
||||
}
|
||||
JoinGame(roomJoinNotice.position, roomJoinNotice.gold, roomJoinNotice.diamond, roomJoinNotice.cannonMultiple, 0, roomJoinNotice.userId, roomJoinNotice.cannonId, roomJoinNotice.wingsId);
|
||||
JoinGame(roomJoinNotice.position, roomJoinNotice.gold, roomJoinNotice.diamond, roomJoinNotice.cannonMultiple, 0, roomJoinNotice.userId, roomJoinNotice.cannonId, roomJoinNotice.wingsId, roomJoinNotice.warGodId);
|
||||
|
||||
}
|
||||
|
||||
@@ -457,6 +457,8 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
|
||||
EventCenter.Instance.AddEventListener<SyncGameData>(ConstEventString.SyncGameData_ChangeTurret, SyncGameData_ChangeTurret);
|
||||
EventCenter.Instance.AddEventListener<SyncGameData>(ConstEventString.SyncGameData_ChangeCannonMultiple, SyncGameData_ChangeCannonMultiple);
|
||||
EventCenter.Instance.AddEventListener<SyncGameData>(ConstEventString.SyncGameData_ChangeWing, SyncGameData_ChangeWing);
|
||||
// ⭐ 战神切换帧同步(changeZhanShen):其他玩家装备/卸下战神,对应座位加载/清除战神模型
|
||||
EventCenter.Instance.AddEventListener<SyncGameData>(ConstEventString.SyncGameData_ChangeZhanShen, SyncGameData_ChangeZhanShen);
|
||||
// SyncGameData_FreezeFish 已废弃:冰冻改由服务端 FishFrozen 事件统一触发
|
||||
EventCenter.Instance.AddEventListener(ConstEventString.FishFrozen, OnFishFrozen);
|
||||
EventCenter.Instance.AddEventListener<SyncGameData>(ConstEventString.SyncGameData_BotFireAngle, SyncGameData_BotFireAngle);
|
||||
@@ -539,6 +541,7 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
|
||||
EventCenter.Instance.RemoveEventListener<SyncGameData>(ConstEventString.SyncGameData_ChangeTurret, SyncGameData_ChangeTurret);
|
||||
EventCenter.Instance.RemoveEventListener<SyncGameData>(ConstEventString.SyncGameData_ChangeCannonMultiple, SyncGameData_ChangeCannonMultiple);
|
||||
EventCenter.Instance.RemoveEventListener<SyncGameData>(ConstEventString.SyncGameData_ChangeWing, SyncGameData_ChangeWing);
|
||||
EventCenter.Instance.RemoveEventListener<SyncGameData>(ConstEventString.SyncGameData_ChangeZhanShen, SyncGameData_ChangeZhanShen);
|
||||
// SyncGameData_FreezeFish 已废弃:冰冻改由服务端 FishFrozen 事件统一触发
|
||||
EventCenter.Instance.RemoveEventListener(ConstEventString.FishFrozen, OnFishFrozen);
|
||||
EventCenter.Instance.RemoveEventListener<SyncGameData>(ConstEventString.SyncGameData_BotFireAngle, SyncGameData_BotFireAngle);
|
||||
@@ -2263,14 +2266,21 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
|
||||
private BullitMove CreateBullet(SitPosData sit, Vector2 pos, float angle, bool isDouble, bool isLock, string id,
|
||||
MonsterContral lockTarget = null, Transform lockHitPos = null, long fireConsumeGold = 0)
|
||||
{
|
||||
// ⭐ 远程座位炮台未加载时补加载
|
||||
if (sit.currentTurret == null)
|
||||
{
|
||||
sit.LoadTurret(sit.currentTurretNumber);
|
||||
if (sit.currentTurret == null) return null;
|
||||
}
|
||||
// ⭐ 战神装备中:子弹用战神的子弹预制体,不用炮台的
|
||||
GameObject prefab = null;
|
||||
if (sit.currentZhanShenData != null)
|
||||
prefab = isDouble ? sit.currentZhanShenData.bulletPrefab_Two : sit.currentZhanShenData.bulletPrefab;
|
||||
|
||||
GameObject prefab = isDouble ? sit.currentTurret.bulletPrefab_Two : sit.currentTurret.bulletPrefab;
|
||||
// ⭐ 战神没配子弹/没装备战神 -> 回退炮台子弹(远程座位炮台未加载时补加载)
|
||||
if (prefab == null)
|
||||
{
|
||||
if (sit.currentTurret == null)
|
||||
{
|
||||
sit.LoadTurret(sit.currentTurretNumber);
|
||||
if (sit.currentTurret == null) return null;
|
||||
}
|
||||
prefab = isDouble ? sit.currentTurret.bulletPrefab_Two : sit.currentTurret.bulletPrefab;
|
||||
}
|
||||
|
||||
// ⭐ 每座位最多100发子弹(先校验,不扣钱)
|
||||
int activeBullets = 0;
|
||||
@@ -2435,6 +2445,20 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
|
||||
WebSocketSendList.SyncGameData(sgd);
|
||||
}
|
||||
|
||||
/// <summary>广播战神切换(changeZhanShen):其他客户端在对应座位加载/清除战神模型</summary>
|
||||
public void SyncChangeZhanShen(int zhanShenNumber)
|
||||
{
|
||||
SyncGameData sgd = new SyncGameData
|
||||
{
|
||||
sitPos = currSitData.posID,
|
||||
frameType = FrameDataType.changeZhanShen,
|
||||
time = BeijingTimeManager.Instance.CurrentTimestampMs,
|
||||
frameData = new FrameData_ChangeTurret { turretIndex = zhanShenNumber }
|
||||
};
|
||||
|
||||
WebSocketSendList.SyncGameData(sgd);
|
||||
}
|
||||
|
||||
private void SyncFreeze(bool isFreeze)
|
||||
{
|
||||
SyncGameData sgd = new SyncGameData
|
||||
@@ -2608,6 +2632,18 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
|
||||
list_Sits[sync.sitPos].LoadWing(data.turretIndex);
|
||||
}
|
||||
|
||||
public void SyncGameData_ChangeZhanShen(SyncGameData sync)
|
||||
{
|
||||
if (sync.sitPos == currSitData.posID) return;
|
||||
|
||||
var data = FrameDataParser.Parse<FrameData_ChangeTurret>(sync.frameData);
|
||||
// turretIndex<=0 = 卸下战神;>0 = 加载对应编号战神(内部会隐藏该座位的普通炮台)
|
||||
if (data.turretIndex > 0)
|
||||
list_Sits[sync.sitPos].LoadZhanShen(data.turretIndex);
|
||||
else
|
||||
list_Sits[sync.sitPos].ClearZhanShen();
|
||||
}
|
||||
|
||||
public void SyncGameData_ChangeCannonMultiple(SyncGameData sync)
|
||||
{
|
||||
if (sync.sitPos == currSitData.posID) return;
|
||||
@@ -2812,7 +2848,7 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
|
||||
|
||||
#region 玩家加入/退出(PlayerJoinModule)
|
||||
|
||||
public void JoinGame(int sitNum, long goldNum, long diamondNum, long consumeGold, int currentTurretIndex, string user = null, string cannonId = null, string wingId = null)
|
||||
public void JoinGame(int sitNum, long goldNum, long diamondNum, long consumeGold, int currentTurretIndex, string user = null, string cannonId = null, string wingId = null, string warGodId = null)
|
||||
{
|
||||
foreach (var sit in list_Sits)
|
||||
{
|
||||
@@ -2861,6 +2897,10 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
|
||||
|
||||
if (!string.IsNullOrEmpty(wingId) && int.TryParse(wingId, out int wingNum))
|
||||
sit.LoadWing(wingNum);
|
||||
|
||||
// 战神:有装备就加载(内部会隐藏该座位的普通炮台,炮台/战神二选一)
|
||||
if (!string.IsNullOrEmpty(warGodId) && int.TryParse(warGodId, out int zsNum) && zsNum > 0)
|
||||
sit.LoadZhanShen(zsNum);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user