public Room(IShamanLogger logger, ITaskSchedulerFactory taskSchedulerFactory, IRoomManager roomManager, IRoomPropertiesContainer roomPropertiesContainer, IRoomControllerFactory roomControllerFactory, IPacketSender packetSender, Guid roomId, IRoomStateUpdater roomStateUpdater) { _logger = logger; _roomId = roomId; _roomStateUpdater = roomStateUpdater; _createdOn = DateTime.UtcNow; _taskScheduler = taskSchedulerFactory.GetTaskScheduler(); _roomPropertiesContainer = roomPropertiesContainer; _packetSender = packetSender; _roomStats = new RoomStats(GetRoomId(), roomPropertiesContainer.GetPlayersCount()); _roomController = roomControllerFactory.GetGameModeController( new RoomContext(this), _taskScheduler, roomPropertiesContainer); _ = _taskScheduler.ScheduleOnInterval(() => { var maxQueueSIze = _packetSender.GetMaxQueueSIze(); _roomStats.AddMaxQueueSize(maxQueueSIze); _roomStats.AddAvgQueueSize(_packetSender.GetAverageQueueSize()); }, 0, 1000, true); _ = _taskScheduler.ScheduleOnInterval(async() => await SendRoomStateUpdate(), 0, 2000, true); }
public StandaloneModeRoomControllerFactory(IShamanComponents shamanComponents) { _bundle = StandaloneServerLauncher.StandaloneBundle; _bundle.OnInitialize(shamanComponents); _roomControllerFactory = _bundle.GetRoomControllerFactory(); if (_roomControllerFactory == null) { throw new NullReferenceException("Game bundle returned null factory"); } }
public void Configure(IApplicationBuilder app, IHostingEnvironment env, IApplication server, IServerActualizer serverActualizer, IShamanLogger logger, IBundleLoader bundleLoader, IShamanComponents shamanComponents, IRoomControllerFactory roomControllerFactory) { //todo extract in one place serverActualizer.Start(Convert.ToInt32(Configuration["ServerSettings:ActualizationIntervalMs"])); bundleLoader.LoadBundle(); var gameBundle = bundleLoader.LoadTypeFromBundle <IGameBundle>(); gameBundle.OnInitialize(shamanComponents); var bundledRoomControllerFactory = gameBundle.GetRoomControllerFactory(); if (bundledRoomControllerFactory == null) { throw new NullReferenceException("Game bundle returned null factory"); } ((IBundleRoomControllerRegistry)roomControllerFactory).RegisterBundleRoomController(bundledRoomControllerFactory); base.ConfigureGame(app, env, server, logger); }
public RoomManager( IShamanLogger logger, ISerializer serializer, IApplicationConfig config, ITaskSchedulerFactory taskSchedulerFactory, IRoomControllerFactory roomControllerFactory, IPacketSender packetSender, IShamanMessageSenderFactory messageSenderFactory, IGameMetrics gameMetrics, IRoomStateUpdater roomStateUpdater) { _logger = logger; _serializer = serializer; _taskSchedulerFactory = taskSchedulerFactory; _roomControllerFactory = roomControllerFactory; _taskScheduler = _taskSchedulerFactory.GetTaskScheduler(); _taskScheduler.ScheduleOnInterval(CheckRoomsState, 0, 60000); _config = config; _taskSchedulerFactory = taskSchedulerFactory; _messageSender = messageSenderFactory.Create(packetSender); _gameMetrics = gameMetrics; _roomStateUpdater = roomStateUpdater; }
public void Configure(IApplicationBuilder app, IHostingEnvironment env, IApplication server, IShamanLogger logger, IBundleLoader bundleLoader, IShamanComponents shamanComponents, IRoomControllerFactory roomControllerFactory) { bundleLoader.LoadBundle(); var gameBundle = bundleLoader.LoadTypeFromBundle <IGameBundle>(); gameBundle.OnInitialize(shamanComponents); var bundledRoomControllerFactory = gameBundle.GetRoomControllerFactory(); if (bundledRoomControllerFactory == null) { throw new NullReferenceException("Game bundle returned null factory"); } ((IBundleRoomControllerRegistry)roomControllerFactory).RegisterBundleRoomController(bundledRoomControllerFactory); base.ConfigureGame(app, env, server, logger); }
public void RegisterBundleRoomController(IRoomControllerFactory roomControllerFactory) { _bundledRoomControllerFactory = roomControllerFactory; }