using System.Collections.Generic; namespace XWorld.Framework { public interface IRoomCtx { IRandom Random { get; } // 权威随机 ITimer Timer { get; } ILogger Logger { get; } IStorage Storage { get; } void Broadcast(NetMessage message); void SendTo(int playerId, NetMessage message); void EndRoom(); // 由小游戏逻辑请求结束本房间(无结算结果) void EndRoom(RoomEndResult result); // 带结算结果结束;result 可为 null,等价无参 } public interface IGameServerRoom { void OnRoomStart(IReadOnlyList players, IRoomCtx ctx); void OnMessage(int playerId, NetMessage message); void OnTick(float deltaTime); // 10-20Hz,内部调用 Core.Step + 广播快照 void OnRoomEnd(); } }