using System; using XWorld.Framework; namespace XWorld.Server.Host { public sealed class RoomCtx : IRoomCtx { private readonly IRoomOutput _output; private readonly Action _endRoom; public IRandom Random { get; } public ITimer Timer { get; } public ILogger Logger { get; } public IStorage Storage { get; } public RoomCtx(IRandom random, ITimer timer, ILogger logger, IStorage storage, IRoomOutput output, Action endRoom) { Random = random; Timer = timer; Logger = logger; Storage = storage; _output = output; _endRoom = endRoom; } public void Broadcast(NetMessage message) => _output.Broadcast(message); public void SendTo(int playerId, NetMessage message) => _output.SendTo(playerId, message); public void EndRoom() => _endRoom(null); public void EndRoom(RoomEndResult result) => _endRoom(result); } }