feat: 重构游戏房间架构
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package com.webgame.webgamebackend.service.engine;
|
||||
|
||||
import com.webgame.webgamebackend.ws.dto.WsMessage;
|
||||
import lombok.Getter;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.function.Consumer;
|
||||
@@ -11,6 +12,7 @@ import java.util.function.Consumer;
|
||||
* 游戏引擎初始化时由 RoomManager 传入,包含引擎所需的房间信息和回调接口。
|
||||
* 引擎不应持有对 RoomManager 的直接引用,所有与房间层的交互通过此上下文完成。
|
||||
*/
|
||||
@Getter
|
||||
public class RoomContext {
|
||||
|
||||
/** 房间 ID */
|
||||
@@ -19,7 +21,7 @@ public class RoomContext {
|
||||
/** 游戏 ID */
|
||||
private final String gameId;
|
||||
|
||||
/** 参与对局的玩家列表(按座位号排序) */
|
||||
/** 参与对局的玩家列表(按座位号排序,不可变) */
|
||||
private final List<PlayerInfo> players;
|
||||
|
||||
/** 玩法模式 */
|
||||
@@ -28,13 +30,13 @@ public class RoomContext {
|
||||
/** 底注金额 */
|
||||
private final int stakes;
|
||||
|
||||
/** 广播消息到房间内所有 WebSocket 会话 */
|
||||
/** 广播消息到房间内所有 WebSocket 会话(不暴露到 getter) */
|
||||
private final Consumer<WsMessage> broadcaster;
|
||||
|
||||
/** 私有消息:向指定用户发送消息 */
|
||||
/** 私有消息发送器(不暴露到 getter) */
|
||||
private final PrivateMessageSender privateSender;
|
||||
|
||||
/** 游戏结束回调 */
|
||||
/** 游戏结束回调(不暴露到 getter) */
|
||||
private final GameOverCallback onGameOver;
|
||||
|
||||
public RoomContext(String roomId, String gameId, List<PlayerInfo> players,
|
||||
@@ -52,12 +54,6 @@ public class RoomContext {
|
||||
this.onGameOver = onGameOver;
|
||||
}
|
||||
|
||||
public String getRoomId() { return roomId; }
|
||||
public String getGameId() { return gameId; }
|
||||
public List<PlayerInfo> getPlayers() { return players; }
|
||||
public String getMode() { return mode; }
|
||||
public int getStakes() { return stakes; }
|
||||
|
||||
/**
|
||||
* 广播消息到房间内所有人
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user