1
This commit is contained in:
@@ -286,12 +286,9 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
|
||||
targetSit.isBot = false;
|
||||
targetSit.ShowWaiting();
|
||||
}
|
||||
// ⭐ 房主:新真人玩家加入时,把当前场上所有活鱼广播一遍,
|
||||
// 让新玩家立即同步看到场上鱼状态(不用等房主下次出鱼)
|
||||
if (CreateFishManager.Instance != null && CreateFishManager.Instance.fangzhu)
|
||||
{
|
||||
CreateFishManager.Instance.BroadcastExistingFishes();
|
||||
}
|
||||
// ⭐ 新玩家同步走"主动请求"流程:
|
||||
// 新玩家资源加载完毕后会主动发 requestSyncFish,
|
||||
// 房主收到后才广播场上活鱼(避免新玩家还没加载完就收包丢失)
|
||||
}
|
||||
JoinGame(roomJoinNotice.position, roomJoinNotice.gold, roomJoinNotice.diamond, roomJoinNotice.cannonMultiple, 0, roomJoinNotice.userId, roomJoinNotice.cannonId, roomJoinNotice.wingsId);
|
||||
|
||||
@@ -550,19 +547,17 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
|
||||
}
|
||||
toggle_BaoZou.onValueChanged.AddListener(on =>
|
||||
{
|
||||
// UI 开关只是触发,但最终状态以 currGameType 为准
|
||||
CreateFishManager.Instance.currGameType.isFrenzy = on;
|
||||
SetFrenzy(on);
|
||||
if (on)
|
||||
if (!on) return;
|
||||
if (_localBaoZouCount <= 0)
|
||||
{
|
||||
currFrenzyTime = frenzyDuration;
|
||||
// ⭐ 激活时本地扣减一张(暂无扣减 API,仅 UI 显示)
|
||||
if (_localBaoZouCount > 0)
|
||||
{
|
||||
_localBaoZouCount--;
|
||||
UpdateSkillPropsUI();
|
||||
}
|
||||
toggle_BaoZou.SetIsOnWithoutNotify(false);
|
||||
return;
|
||||
}
|
||||
// 只发请求,效果等 UsePropNotice 回调触发
|
||||
WebSocketSendList.UseProp(
|
||||
GameManager.Instance.gameData.currRoomData.roomId,
|
||||
GameManager.Instance.user.BaseInfo.number,
|
||||
"40006", 0);
|
||||
});
|
||||
toggle_SkillAuto.onValueChanged.AddListener(on =>
|
||||
{
|
||||
@@ -574,38 +569,17 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
|
||||
}
|
||||
});
|
||||
toggle_BingFeng.onValueChanged.AddListener(on => {
|
||||
if (on)
|
||||
if (!on) return;
|
||||
if (_localBingFengCount <= 0)
|
||||
{
|
||||
// 开始冰冻
|
||||
currBingFengTime = bingFengDuration;
|
||||
// ⭐ 激活时本地扣减一张(暂无扣减 API,仅 UI 显示)
|
||||
if (_localBingFengCount > 0)
|
||||
{
|
||||
_localBingFengCount--;
|
||||
UpdateSkillPropsUI();
|
||||
}
|
||||
if (bingFengEffect != null)
|
||||
{
|
||||
if (_bingFengInstance == null)
|
||||
_bingFengInstance = Instantiate(bingFengEffect);
|
||||
_bingFengInstance.SetActive(true);
|
||||
}
|
||||
CreateFishManager.Instance.FreezeAllFish();
|
||||
PauseAllFishAnimations();
|
||||
SyncFreeze(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
// 手动关闭 → 解冻
|
||||
if (_bingFengInstance != null)
|
||||
_bingFengInstance.SetActive(false);
|
||||
if (CreateFishManager.Instance.isFrozen)
|
||||
{
|
||||
CreateFishManager.Instance.UnfreezeAllFish();
|
||||
ResumeAllFishAnimations();
|
||||
SyncFreeze(false);
|
||||
}
|
||||
toggle_BingFeng.SetIsOnWithoutNotify(false);
|
||||
return;
|
||||
}
|
||||
// 只发请求,效果等 UsePropNotice 回调触发
|
||||
WebSocketSendList.UseProp(
|
||||
GameManager.Instance.gameData.currRoomData.roomId,
|
||||
GameManager.Instance.user.BaseInfo.number,
|
||||
"40007", 0);
|
||||
});
|
||||
|
||||
|
||||
@@ -716,7 +690,23 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
|
||||
|
||||
// ⭐ 进度条加载完毕:房主创建一批初始鱼(进度 0.2~0.8),屏幕开局就有鱼
|
||||
// 只在房主端调用,通过 SyncGameData 广播给所有客户端
|
||||
CreateFishManager.Instance.CreateInitialFishes(Random.Range(10, 21));
|
||||
// 非房主(后加入的真人玩家):发"请求同步鱼"让房主广播场上活鱼
|
||||
// 这里只发请求,实际接收广播在 CreateFishManager.CreateFish(已做 guid 去重)
|
||||
if (CreateFishManager.Instance.fangzhu)
|
||||
{
|
||||
CreateFishManager.Instance.CreateInitialFishes(Random.Range(10, 21));
|
||||
}
|
||||
else
|
||||
{
|
||||
var req = new SyncGameData
|
||||
{
|
||||
sitPos = GameManager.Instance.gameData.roomJoinNotice.position,
|
||||
frameType = FrameDataType.requestSyncFish,
|
||||
time = BeijingTimeManager.Instance.CurrentTimestampMs,
|
||||
frameData = null
|
||||
};
|
||||
WebSocketSendList.SyncGameData(req);
|
||||
}
|
||||
|
||||
JinDuTiao.SetProgress(1);
|
||||
await Task.Delay(300);
|
||||
@@ -2034,6 +2024,39 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
|
||||
WebSocketSendList.SyncGameData(sgd);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// UsePropNotice 回调:服务器确认道具使用后,激活对应效果
|
||||
/// </summary>
|
||||
public void OnUsePropNotice(string userId, string propNumber)
|
||||
{
|
||||
switch (propNumber)
|
||||
{
|
||||
case "40006": // 暴走
|
||||
_localBaoZouCount--;
|
||||
UpdateSkillPropsUI();
|
||||
CreateFishManager.Instance.currGameType.isFrenzy = true;
|
||||
SetFrenzy(true);
|
||||
currFrenzyTime = frenzyDuration;
|
||||
toggle_BaoZou.SetIsOnWithoutNotify(true);
|
||||
break;
|
||||
|
||||
case "40007": // 冰封
|
||||
_localBingFengCount--;
|
||||
UpdateSkillPropsUI();
|
||||
currBingFengTime = bingFengDuration;
|
||||
toggle_BingFeng.SetIsOnWithoutNotify(true);
|
||||
if (bingFengEffect != null)
|
||||
{
|
||||
if (_bingFengInstance == null)
|
||||
_bingFengInstance = Instantiate(bingFengEffect);
|
||||
_bingFengInstance.SetActive(true);
|
||||
}
|
||||
CreateFishManager.Instance.FreezeAllFish();
|
||||
PauseAllFishAnimations();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public void SyncGameData_FreezeFish(SyncGameData sync)
|
||||
{
|
||||
if (sync.sitPos == currSitData.posID) return; // 自己发的不管
|
||||
|
||||
Reference in New Issue
Block a user