/// <summary> /// Initializes a new instance of the <see cref="ElevatedOperationContext"/> class. /// </summary> /// <param name="logger">A reference to the logger in use.</param> /// <param name="applicationContext">A reference to the application context.</param> /// <param name="mapDescriptor">A reference to the map descriptor in use.</param> /// <param name="map">A reference to the map.</param> /// <param name="creatureManager">A reference to the creature manager in use.</param> /// <param name="itemFactory">A reference to the item factory in use.</param> /// <param name="creatureFactory">A reference to the creature factory in use.</param> /// <param name="containerManager">A reference to the container manager in use.</param> /// <param name="gameOperationsApi">A reference to the game operations api.</param> /// <param name="combatOperationsApi">A reference to the combat operations api.</param> /// <param name="pathFinderAlgo">A reference to the path finding algorithm in use.</param> /// <param name="predefinedItemSet">A reference to the predefined item set declared.</param> /// <param name="scheduler">A reference to the scheduler instance.</param> public ElevatedOperationContext( ILogger logger, IApplicationContext applicationContext, IMapDescriptor mapDescriptor, IMap map, ICreatureManager creatureManager, IItemFactory itemFactory, ICreatureFactory creatureFactory, IContainerManager containerManager, IGameOperationsApi gameOperationsApi, ICombatOperationsApi combatOperationsApi, IPathFinder pathFinderAlgo, IPredefinedItemSet predefinedItemSet, IScheduler scheduler) : base( logger, mapDescriptor, map, creatureManager, itemFactory, creatureFactory, containerManager, gameOperationsApi, combatOperationsApi, pathFinderAlgo, predefinedItemSet, scheduler) { applicationContext.ThrowIfNull(nameof(applicationContext)); this.ApplicationContext = applicationContext; }
/// <summary> /// Initializes a new instance of the <see cref="Game"/> class. /// </summary> /// <param name="logger">A reference to the logger in use.</param> /// <param name="applicationContext">A reference to the application context.</param> /// <param name="mapDescriptor">A reference to the map descriptor in use.</param> /// <param name="map">A reference to the map.</param> /// <param name="creatureManager">A reference to the creature manager in use.</param> /// <param name="itemFactory">A reference to the item factory in use.</param> /// <param name="creatureFactory">A reference to the creature factory in use.</param> /// <param name="containerManager">A reference to the container manager in use.</param> /// <param name="pathFinderAlgo">A reference to the path finding algorithm in use.</param> /// <param name="predefinedItemSet">A reference to the predefined item set declared.</param> /// <param name="monsterSpawnsLoader">A reference to the monster spawns loader.</param> /// <param name="scheduler">A reference to the global scheduler instance.</param> public Game( ILogger logger, IApplicationContext applicationContext, IMapDescriptor mapDescriptor, IMap map, ICreatureManager creatureManager, IItemFactory itemFactory, ICreatureFactory creatureFactory, IContainerManager containerManager, IPathFinder pathFinderAlgo, IPredefinedItemSet predefinedItemSet, IMonsterSpawnLoader monsterSpawnsLoader, IScheduler scheduler) { logger.ThrowIfNull(nameof(logger)); applicationContext.ThrowIfNull(nameof(applicationContext)); mapDescriptor.ThrowIfNull(nameof(mapDescriptor)); map.ThrowIfNull(nameof(map)); creatureManager.ThrowIfNull(nameof(creatureManager)); itemFactory.ThrowIfNull(nameof(itemFactory)); creatureFactory.ThrowIfNull(nameof(creatureFactory)); containerManager.ThrowIfNull(nameof(containerManager)); pathFinderAlgo.ThrowIfNull(nameof(pathFinderAlgo)); predefinedItemSet.ThrowIfNull(nameof(predefinedItemSet)); monsterSpawnsLoader.ThrowIfNull(nameof(monsterSpawnsLoader)); scheduler.ThrowIfNull(nameof(scheduler)); this.logger = logger.ForContext <Game>(); this.applicationContext = applicationContext; this.mapDescriptor = mapDescriptor; this.map = map; this.creatureManager = creatureManager; this.itemFactory = itemFactory; this.creatureFactory = creatureFactory; this.containerManager = containerManager; this.pathFinder = pathFinderAlgo; this.predefinedItemSet = predefinedItemSet; this.scheduler = scheduler; // Initialize game vars. this.worldInfo = new WorldInformation() { Status = WorldState.Loading, LightColor = (byte)LightColors.White, LightLevel = (byte)LightLevels.World, }; // Load the spawns this.monsterSpawns = monsterSpawnsLoader.LoadSpawns(); // Hook some event handlers. this.scheduler.EventFired += this.ProcessFiredEvent; this.map.WindowLoaded += this.OnMapWindowLoaded; }
/// <summary> /// Initializes a new instance of the <see cref="OperationContext"/> class. /// </summary> /// <param name="logger">A reference to the logger in use.</param> /// <param name="mapDescriptor">A reference to the map descriptor in use.</param> /// <param name="map">A reference to the map in use.</param> /// <param name="creatureFinder">A reference to the creature finder in use.</param> /// <param name="itemFactory">A reference to the item factory in use.</param> /// <param name="creatureFactory">A reference to the creature factory in use.</param> /// <param name="containerManager">A reference to the container manager in use.</param> /// <param name="gameOperationsApi">A reference to the game operations api.</param> /// <param name="combatOperationsApi">A reference to the combat operations api.</param> /// <param name="pathFinderAlgo">A reference to the path finding algorithm in use.</param> /// <param name="predefinedItemSet">A reference to the predefined item set declared.</param> /// <param name="scheduler">A reference to the scheduler instance.</param> public OperationContext( ILogger logger, IMapDescriptor mapDescriptor, IMap map, ICreatureFinder creatureFinder, IItemFactory itemFactory, ICreatureFactory creatureFactory, IContainerManager containerManager, IGameOperationsApi gameOperationsApi, ICombatOperationsApi combatOperationsApi, IPathFinder pathFinderAlgo, IPredefinedItemSet predefinedItemSet, IScheduler scheduler) : base(logger, () => scheduler.CurrentTime) { mapDescriptor.ThrowIfNull(nameof(mapDescriptor)); map.ThrowIfNull(nameof(map)); creatureFinder.ThrowIfNull(nameof(creatureFinder)); itemFactory.ThrowIfNull(nameof(itemFactory)); creatureFactory.ThrowIfNull(nameof(creatureFactory)); containerManager.ThrowIfNull(nameof(containerManager)); gameOperationsApi.ThrowIfNull(nameof(gameOperationsApi)); combatOperationsApi.ThrowIfNull(nameof(combatOperationsApi)); pathFinderAlgo.ThrowIfNull(nameof(pathFinderAlgo)); predefinedItemSet.ThrowIfNull(nameof(predefinedItemSet)); scheduler.ThrowIfNull(nameof(scheduler)); this.MapDescriptor = mapDescriptor; this.Map = map; this.CreatureFinder = creatureFinder; this.ItemFactory = itemFactory; this.CreatureFactory = creatureFactory; this.ContainerManager = containerManager; this.GameApi = gameOperationsApi; this.CombatApi = combatOperationsApi; this.PathFinder = pathFinderAlgo; this.PredefinedItemSet = predefinedItemSet; this.Scheduler = scheduler; }