Ejemplo n.º 1
0
        private IActor CreateMonster(MonsterPerson person, IMapNode startNode, IBotPlayer botPlayer)
        {
            var actor = new Actor(person, botPlayer, startNode);

            _actorManager.Add(actor);
            return(actor);
        }
Ejemplo n.º 2
0
        public void CreateMonsters(ISector sector, IBotPlayer monsterPlayer, IEnumerable <MapRegion> monsterRegions, IEnumerable <MonsterPerson> monsterPersons)
        {
            if (sector == null)
            {
                throw new ArgumentNullException(nameof(sector));
            }

            if (monsterPlayer == null)
            {
                throw new ArgumentNullException(nameof(monsterPlayer));
            }

            if (monsterRegions == null)
            {
                throw new ArgumentNullException(nameof(monsterRegions));
            }

            if (monsterPersons == null)
            {
                throw new ArgumentNullException(nameof(monsterPersons));
            }

            var freeNodes = new List <IMapNode>(monsterRegions.SelectMany(x => x.Nodes));

            foreach (var monsterPerson in monsterPersons)
            {
                var rollIndex = _generatorRandomSource.RollNodeIndex(freeNodes.Count);

                var monsterNode = freeNodes[rollIndex];
                var monster     = CreateMonster(monsterPerson, monsterNode, monsterPlayer);

                freeNodes.Remove(monster.Node);
            }
        }
Ejemplo n.º 3
0
        private static SectorGenerator CreateGenerator(ISchemeService schemeService,
                                                       IBotPlayer botPlayer,
                                                       IMapFactory mapFactory)
        {
            var dropResolverMock = new Mock <IDropResolver>();
            var dropResolver     = dropResolverMock.Object;

            var actorManagerMock = new Mock <IActorManager>();
            var actorManager     = actorManagerMock.Object;

            var propContainerManagerMock = new Mock <IPropContainerManager>();
            var propContainerManager     = propContainerManagerMock.Object;

            var tradeManagerMock = new Mock <ITraderManager>();
            var tradeManager     = tradeManagerMock.Object;

            var chestGeneratorMock = new Mock <IChestGenerator>();
            var chestGenerator     = chestGeneratorMock.Object;

            var monsterGeneratorMock = new Mock <IMonsterGenerator>();
            var monsterGenerator     = monsterGeneratorMock.Object;

            var sectorFactoryMock = new Mock <ISectorFactory>();
            var sectorFactory     = sectorFactoryMock.Object;

            return(new SectorGenerator(mapFactory,
                                       sectorFactory,
                                       monsterGenerator,
                                       chestGenerator,
                                       botPlayer,
                                       schemeService,
                                       tradeManager,
                                       dropResolver));
        }
Ejemplo n.º 4
0
 public MonsterActorTaskSource(IBotPlayer player,
                               IDecisionSource decisionSource,
                               ITacticalActUsageService actService,
                               ISectorManager sectorManager,
                               IActorManager actorManager) : this((IPlayer)player, decisionSource, actService, sectorManager, actorManager)
 {
 }
Ejemplo n.º 5
0
        private void CreateMonstersForRegion(ISector sector, IBotPlayer monsterPlayer, ISectorSubScheme sectorScheme, List <IActor> resultMonsterActors, MapRegion region, int[] rarityCounter)
        {
            var regionNodes           = region.Nodes.OfType <HexNode>();
            var staticObjectsNodes    = sector.StaticObjectManager.Items.Select(x => x.Node);
            var availableMonsterNodes = regionNodes.Except(staticObjectsNodes);

            var freeNodes = new List <IGraphNode>(availableMonsterNodes);

            var monsterCount = _generatorRandomSource.RollRegionCount(
                sectorScheme.MinRegionMonsterCount,
                sectorScheme.RegionMonsterCount);

            for (var i = 0; i < monsterCount; i++)
            {
                // если в комнате все места заняты
                if (!freeNodes.Any())
                {
                    break;
                }

                var rollIndex   = _generatorRandomSource.RollNodeIndex(freeNodes.Count);
                var monsterNode = freeNodes[rollIndex];

                var monster = RollRarityAndCreateMonster(sector, monsterPlayer, sectorScheme, monsterNode, rarityCounter);

                freeNodes.Remove(monster.Node);
                resultMonsterActors.Add(monster);
            }
        }
Ejemplo n.º 6
0
        private static ISectorGenerator CreateGenerator(IBotPlayer botPlayer,
                                                        IMapFactory mapFactory)
        {
            var chestGeneratorMock = new Mock <IChestGenerator>();
            var chestGenerator     = chestGeneratorMock.Object;

            var monsterGeneratorMock = new Mock <IMonsterGenerator>();
            var monsterGenerator     = monsterGeneratorMock.Object;

            var sectorFactoryMock = new Mock <ISectorFactory>();
            var sectorFactory     = sectorFactoryMock.Object;

            var citizenGeneratorMock = new Mock <ICitizenGenerator>();
            var citizenGenerator     = citizenGeneratorMock.Object;

            var mapFactorySelectorMock = new Mock <IMapFactorySelector>();

            mapFactorySelectorMock.Setup(x => x.GetMapFactory(It.IsAny <ISectorSubScheme>()))
            .Returns(mapFactory);
            var mapFactorySelector = mapFactorySelectorMock.Object;

            return(new SectorGenerator(mapFactorySelector,
                                       sectorFactory,
                                       monsterGenerator,
                                       chestGenerator,
                                       citizenGenerator,
                                       botPlayer));
        }
Ejemplo n.º 7
0
        private IActor CreateCitizen(Dialog dialog, IMapNode startNode, IBotPlayer botPlayer)
        {
            var person = new CitizenPerson(dialog);
            var actor  = new Actor(person, botPlayer, startNode);

            _actorManager.Add(actor);
            return(actor);
        }
Ejemplo n.º 8
0
        public void CreateCitizens(ISector sector, IBotPlayer botPlayer, IEnumerable <MapRegion> citizenRegions)
        {
            var map = sector.Map;

            foreach (var region in citizenRegions)
            {
                // 1 к 9, потому что это наиболее удобное соотношение
                // для размещения неподвижных блокирующих объектов
                // без преграждения выходов.
                var citizenCount = region.Nodes.Count() / 9f;

                var availableNodes = from node in region.Nodes
                                     where !map.Transitions.Keys.Contains(node)
                                     select node;

                var openNodes = new List <IMapNode>(availableNodes);
                for (var i = 0; i < citizenCount; i++)
                {
                    //TODO Объединить этот блок с генератором сундуков, как дубликат
                    // Выбрать из коллекции доступных узлов
                    var rollIndex  = _citizenGeneratorRandomSource.RollNodeIndex(openNodes.Count);
                    var objectNode = MapRegionHelper.FindNonBlockedNode(openNodes[rollIndex], map, openNodes);
                    if (objectNode == null)
                    {
                        // В этом случае будет сгенерировано на одного жителя меньше.
                        // Узел, с которого не удаётся найти подходящий узел, удаляем,
                        // Чтобы больше его не анализировать, т.к. всё равно будет такой же неудачный исход.
                        openNodes.Remove(openNodes[rollIndex]);
                        continue;
                    }

                    openNodes.Remove(objectNode);
                    var traderDropTable = _schemeService.GetScheme <IDropTableScheme>("trader");

                    var rollCitizenType = _citizenGeneratorRandomSource.RollCitizenType();

                    switch (rollCitizenType)
                    {
                    case CitizenType.Unintresting:
                        CreateCitizen(objectNode, botPlayer);
                        break;

                    case CitizenType.Trader:
                        CreateCitizen(traderDropTable, objectNode, botPlayer);
                        break;

                    case CitizenType.QuestGiver:
                        CreateCitizen(DialogFactory.Create(), objectNode, botPlayer);
                        break;

                    default:
                        //TODO Завести тип исключения на генерацию персонажей мирных жителей.
                        throw new System.Exception();
                    }
                }
            }
        }
Ejemplo n.º 9
0
        private IActor CreateMonsterActor([NotNull] IBotPlayer player,
                                          [NotNull] IMonsterScheme monsterScheme,
                                          [NotNull] IMapNode startNode)
        {
            var monsterPerson = new MonsterPerson(monsterScheme);

            var actor = new Actor(monsterPerson, player, startNode);

            return(actor);
        }
Ejemplo n.º 10
0
        /// <summary>Создаёт монстров в секторе по указанной схеме.</summary>
        /// <param name="sector">Целевой сектор.</param>
        /// <param name="monsterPlayer">Бот, управляющий монстрами. По сути, команда монстров.</param>
        /// <param name="monsterRegions">Регионы сектора, где могут быть монстры.</param>
        /// <param name="sectorScheme">Схема сектора. Отсюда берутся параметры генерации монстров.</param>
        public void CreateMonsters(ISector sector,
                                   IBotPlayer monsterPlayer,
                                   IEnumerable <MapRegion> monsterRegions,
                                   ISectorSubScheme sectorScheme)
        {
            var rarityCounter    = new int[3];
            var rarityMaxCounter = new[] { -1, 10, 1 };

            foreach (var region in monsterRegions)
            {
                var freeNodes = new List <IMapNode>(region.Nodes);

                var monsterCount = _generatorRandomSource.RollRegionCount(sectorScheme.RegionMonsterCount);

                for (int i = 0; i < monsterCount; i++)
                {
                    // если в комнате все места заняты
                    if (!freeNodes.Any())
                    {
                        break;
                    }

                    var currentRarity       = GetMonsterRarity(rarityCounter, rarityMaxCounter);
                    var availableSchemeSids = GetAvailableSchemeSids(sectorScheme, currentRarity);

                    var availableMonsterSchemes = availableSchemeSids.Select(x => _schemeService.GetScheme <IMonsterScheme>(x));

                    var monsterScheme = _generatorRandomSource.RollMonsterScheme(availableMonsterSchemes);

                    // первый монстр ходит по маршруту
                    // остальные бродят произвольно
                    if (i == 0)
                    {
                        // генерируем маршрут обхода
                        var startPatrolNode = region.Nodes.First();
                        var endPatrolNode   = region.Nodes.Last();

                        // генерируем моснтра
                        var patrolRoute = new PatrolRoute(startPatrolNode, endPatrolNode);
                        var monster     = CreateMonster(monsterScheme, startPatrolNode, monsterPlayer);
                        sector.PatrolRoutes[monster] = patrolRoute;

                        freeNodes.Remove(monster.Node);
                    }
                    else
                    {
                        var rollIndex   = _generatorRandomSource.RollNodeIndex(freeNodes.Count);
                        var monsterNode = freeNodes[rollIndex];
                        var monster     = CreateMonster(monsterScheme, monsterNode, monsterPlayer);

                        freeNodes.Remove(monster.Node);
                    }
                }
            }
        }
Ejemplo n.º 11
0
        private IActor CreateMonsterActor([NotNull] IBotPlayer player,
                                          [NotNull] MonsterScheme monsterScheme,
                                          [NotNull] IMapNode startNode)
        {
            var schemeService = Container.GetInstance <ISchemeService>();

            var monsterPerson = new MonsterPerson(monsterScheme);

            var actor = new Actor(monsterPerson, player, startNode);

            return(actor);
        }
Ejemplo n.º 12
0
 public MonsterActorTaskSource(IBotPlayer player,
                               IDecisionSource decisionSource,
                               ITacticalActUsageService actService,
                               ISector sector,
                               IActorManager actorManager)
 {
     _logicDict      = new Dictionary <IActor, IBotLogic>();
     _player         = player;
     _decisionSource = decisionSource;
     _actService     = actService;
     _sector         = sector;
     _actorManager   = actorManager;
 }
Ejemplo n.º 13
0
        private IActor RollRarityAndCreateMonster(ISector sector, IBotPlayer monsterPlayer, ISectorSubScheme sectorScheme, IGraphNode monsterNode, int[] rarityCounter)
        {
            var rarityMaxCounter = new[] { -1, 10, 1 };

            var currentRarity       = GetMonsterRarity(rarityCounter, rarityMaxCounter);
            var availableSchemeSids = GetAvailableSchemeSids(sectorScheme, currentRarity);

            var availableMonsterSchemes = availableSchemeSids.Select(x => _schemeService.GetScheme <IMonsterScheme>(x));

            var monsterScheme = _generatorRandomSource.RollMonsterScheme(availableMonsterSchemes);

            var monster = CreateMonster(sector.ActorManager, monsterScheme, monsterNode, monsterPlayer);

            return(monster);
        }
Ejemplo n.º 14
0
 /// <summary>
 /// Создаёт экземпляр <see cref="SectorGenerator"/>.
 /// </summary>
 /// <param name="mapFactorySelector"> Сервис для выбора фабрики для создания карты. </param>
 /// <param name="sectorFactory"> Фабрика сектора. </param>
 /// <param name="monsterGenerator"> Генератор монстров для подземелий. </param>
 /// <param name="chestGenerator"> Генератор сундуков для подземеоий </param>
 /// <param name="citizenGenerator"> Генератор жителей в городском квартале. </param>
 /// <param name="botPlayer"> Игрок, управляющий монстрами, мирными жителями. </param>
 public SectorGenerator(
     IMapFactorySelector mapFactorySelector,
     ISectorFactory sectorFactory,
     IMonsterGenerator monsterGenerator,
     IChestGenerator chestGenerator,
     ICitizenGenerator citizenGenerator
     ,
     IBotPlayer botPlayer)
 {
     _mapFactorySelector = mapFactorySelector;
     _sectorFactory      = sectorFactory;
     _monsterGenerator   = monsterGenerator;
     _chestGenerator     = chestGenerator;
     _botPlayer          = botPlayer;
     _citizenGenerator   = citizenGenerator;
 }
Ejemplo n.º 15
0
        public SectorProceduralGenerator(IActorManager actorManager,
                                         IPropContainerManager propContainerManager,
                                         ISectorGeneratorRandomSource randomSource,
                                         IBotPlayer botPlayer,
                                         ISchemeService schemeService,
                                         IDropResolver dropResolver)
        {
            _actorManager         = actorManager;
            _propContainerManager = propContainerManager;
            _randomSource         = randomSource;
            _botPlayer            = botPlayer;
            _schemeService        = schemeService;
            _dropResolver         = dropResolver;

            Log = new StringBuilder();
        }
Ejemplo n.º 16
0
 /// <summary>
 /// Создаёт экземпляр <see cref="SectorGenerator"/>.
 /// </summary>
 /// <param name="mapFactorySelector"> Сервис для выбора фабрики для создания карты. </param>
 /// <param name="sectorFactory"> Фабрика сектора. </param>
 /// <param name="monsterGenerator"> Генератор монстров для подземелий. </param>
 /// <param name="chestGenerator"> Генератор сундуков для подземеоий </param>
 /// <param name="botPlayer"> Игрок, управляющий монстрами, мирными жителями. </param>
 public SectorGenerator(
     IMapFactorySelector mapFactorySelector,
     ISectorFactory sectorFactory,
     IMonsterGenerator monsterGenerator,
     IStaticObstaclesGenerator staticObstaclesGenerator,
     IDiseaseGenerator diseaseGenerator,
     IBotPlayer botPlayer,
     IResourceMaterializationMap resourceMaterializationMap)
 {
     _mapFactorySelector       = mapFactorySelector ?? throw new ArgumentNullException(nameof(mapFactorySelector));
     _sectorFactory            = sectorFactory ?? throw new ArgumentNullException(nameof(sectorFactory));
     _monsterGenerator         = monsterGenerator ?? throw new ArgumentNullException(nameof(monsterGenerator));
     _staticObstaclesGenerator = staticObstaclesGenerator ?? throw new ArgumentNullException(nameof(staticObstaclesGenerator));
     _diseaseGenerator         = diseaseGenerator ?? throw new ArgumentNullException(nameof(diseaseGenerator));
     _botPlayer = botPlayer ?? throw new ArgumentNullException(nameof(botPlayer));
     _resourceMaterializationMap = resourceMaterializationMap ?? throw new ArgumentNullException(nameof(resourceMaterializationMap));
 }
Ejemplo n.º 17
0
 /// <summary>
 /// Создаёт экземпляр <see cref="SectorGenerator"/>.
 /// </summary>
 /// <param name="mapFactory"> Фабрика карты. Сейчас используется <see cref="RoomStyle.RoomMapFactory"/>. </param>
 /// <param name="sectorFactory"> Фабрика сектора. </param>
 /// <param name="monsterGenerator"> Генератор монстров для подземелий. </param>
 /// <param name="chestGenerator"> Генератор сундуков для подземеоий </param>
 /// <param name="monsterPlayer"> Игрок, управляющий монстрами. </param>
 /// <param name="schemeService"> Сервис схем. </param>
 /// <param name="traderManager"> Менеджер торговцев. Нужен для сектора. </param>
 /// <param name="dropResolver"> Служба работы с таблицами дропа. Нужна для создания торговцев. </param>
 public SectorGenerator(
     IMapFactory mapFactory,
     ISectorFactory sectorFactory,
     IMonsterGenerator monsterGenerator,
     IChestGenerator chestGenerator,
     IBotPlayer monsterPlayer,
     ISchemeService schemeService,
     ITraderManager traderManager,//TODO Вынести в отдельный генератор
     IDropResolver dropResolver
     )
 {
     _mapFactory       = mapFactory;
     _sectorFactory    = sectorFactory;
     _monsterGenerator = monsterGenerator;
     _chestGenerator   = chestGenerator;
     _monsterPlayer    = monsterPlayer;
     _schemeService    = schemeService;
     _traderManager    = traderManager;
     _dropResolver     = dropResolver;
 }
        private static ISectorGenerator CreateGenerator(IBotPlayer botPlayer,
                                                        IMapFactory mapFactory)
        {
            var staticObstaclesGeneratorMock = new Mock <IStaticObstaclesGenerator>();
            var staticObstaclesGenerator     = staticObstaclesGeneratorMock.Object;

            var monsterGeneratorMock = new Mock <IMonsterGenerator>();
            var monsterGenerator     = monsterGeneratorMock.Object;

            var sectorFactoryMock = new Mock <ISectorFactory>();
            var sectorFactory     = sectorFactoryMock.Object;

            var mapFactorySelectorMock = new Mock <IMapFactorySelector>();

            mapFactorySelectorMock.Setup(x => x.GetMapFactory(It.IsAny <ISectorNode>()))
            .Returns(mapFactory);
            var mapFactorySelector = mapFactorySelectorMock.Object;

            var diseaseGeneratorMock = new Mock <IDiseaseGenerator>();
            var diseaseGenerator     = diseaseGeneratorMock.Object;

            var sectorMock = new Mock <ISector>();
            var sector     = sectorMock.Object;

            sectorFactoryMock.Setup(x => x.Create(It.IsAny <ISectorMap>(), It.IsAny <ILocationScheme>()))
            .Returns(sector);

            var resourceMaterializationMapMock = new Mock <IResourceMaterializationMap>();

            resourceMaterializationMapMock.Setup(x => x.GetDepositData(It.IsAny <ISectorNode>()))
            .Returns(new Mock <IResourceDepositData>().Object);
            var sectorMaterializationService = resourceMaterializationMapMock.Object;

            return(new SectorGenerator(mapFactorySelector,
                                       sectorFactory,
                                       monsterGenerator,
                                       staticObstaclesGenerator,
                                       diseaseGenerator,
                                       botPlayer,
                                       sectorMaterializationService));
        }
Ejemplo n.º 19
0
        private static SectorProceduralGenerator CreateGenerator(ISectorGeneratorRandomSource randomSource,
                                                                 ISchemeService schemeService,
                                                                 IBotPlayer botPlayer)
        {
            var dropResolverMock = new Mock <IDropResolver>();
            var dropResolver     = dropResolverMock.Object;

            var actorManagerMock = new Mock <IActorManager>();
            var actorManager     = actorManagerMock.Object;

            var propContainerManagerMock = new Mock <IPropContainerManager>();
            var propContainerManager     = propContainerManagerMock.Object;

            return(new SectorProceduralGenerator(
                       actorManager,
                       propContainerManager,
                       randomSource,
                       botPlayer,
                       schemeService,
                       dropResolver));
        }
Ejemplo n.º 20
0
        /// <summary>Создаёт монстров в секторе по указанной схеме.</summary>
        /// <param name="sector">Целевой сектор.</param>
        /// <param name="monsterPlayer">Бот, управляющий монстрами. По сути, команда монстров.</param>
        /// <param name="monsterRegions">Регионы сектора, где могут быть монстры.</param>
        /// <param name="sectorScheme">Схема сектора. Отсюда берутся параметры генерации монстров.</param>
        public void CreateMonsters(ISector sector,
                                   IBotPlayer monsterPlayer,
                                   IEnumerable <MapRegion> monsterRegions,
                                   ISectorSubScheme sectorScheme)
        {
            if (sector is null)
            {
                throw new ArgumentNullException(nameof(sector));
            }

            if (monsterPlayer is null)
            {
                throw new ArgumentNullException(nameof(monsterPlayer));
            }

            if (monsterRegions is null)
            {
                throw new ArgumentNullException(nameof(monsterRegions));
            }

            if (sectorScheme is null)
            {
                throw new ArgumentNullException(nameof(sectorScheme));
            }

            var resultMonsterActors = new List <IActor>();
            var rarityCounter       = new int[3];

            foreach (var region in monsterRegions)
            {
                CreateMonstersForRegion(sector, monsterPlayer, sectorScheme, resultMonsterActors, region, rarityCounter);
            }

            // Инфицируем монстров, если в секторе есть болезни.
            RollInfections(sector, resultMonsterActors);
        }
 public MonsterBotActorTaskSource(IBotPlayer player) : base(player)
 {
 }
Ejemplo n.º 22
0
        private IActor CreateCitizen(IDropTableScheme traderDropTable, IMapNode startNode, IBotPlayer botPlayer)
        {
            var person = new CitizenPerson(traderDropTable, _dropResolver);
            var actor  = new Actor(person, botPlayer, startNode);

            _actorManager.Add(actor);
            return(actor);
        }
Ejemplo n.º 23
0
        /// <summary>Создаёт монстров в секторе по указанной схеме.</summary>
        /// <param name="sector">Целевой сектор.</param>
        /// <param name="monsterPlayer">Бот, управляющий монстрами. По сути, команда монстров.</param>
        /// <param name="monsterRegions">Регионы сектора, где могут быть монстры.</param>
        /// <param name="sectorScheme">Схема сектора. Отсюда берутся параметры генерации монстров.</param>
        public void CreateMonsters(ISector sector,
                                   IBotPlayer monsterPlayer,
                                   IEnumerable <MapRegion> monsterRegions,
                                   ISectorSubScheme sectorScheme)
        {
            var rarityCounter    = new int[3];
            var rarityMaxCounter = new[] { -1, 10, 1 };

            foreach (var region in monsterRegions)
            {
                var regionNodes           = region.Nodes.OfType <HexNode>().Where(x => !x.IsObstacle);
                var containerNodes        = _propContainerManager.Items.Select(x => x.Node);
                var availableMonsterNodes = regionNodes.Except(containerNodes);

                var freeNodes = new List <IMapNode>(availableMonsterNodes);

                var monsterCount = _generatorRandomSource.RollRegionCount(
                    sectorScheme.MinRegionMonsterCount,
                    sectorScheme.RegionMonsterCount);

                for (int i = 0; i < monsterCount; i++)
                {
                    // если в комнате все места заняты
                    if (!freeNodes.Any())
                    {
                        break;
                    }

                    var currentRarity       = GetMonsterRarity(rarityCounter, rarityMaxCounter);
                    var availableSchemeSids = GetAvailableSchemeSids(sectorScheme, currentRarity);

                    var availableMonsterSchemes = availableSchemeSids.Select(x => _schemeService.GetScheme <IMonsterScheme>(x));

                    var monsterScheme = _generatorRandomSource.RollMonsterScheme(availableMonsterSchemes);

                    //TODO Восстановить патруллирование марштуров позже
                    // первый монстр ходит по маршруту
                    // остальные бродят произвольно
                    //if (i == 0)
                    //{
                    //    // генерируем маршрут обхода
                    //    var startPatrolNode = region.Nodes.First();
                    //    var endPatrolNode = region.Nodes.Last();

                    //    // генерируем моснтра
                    //    var patrolRoute = new PatrolRoute(startPatrolNode, endPatrolNode);
                    //    var monster = CreateMonster(monsterScheme, startPatrolNode, monsterPlayer);
                    //    sector.PatrolRoutes[monster] = patrolRoute;

                    //    freeNodes.Remove(monster.Node);
                    //}
                    //else
                    //{
                    var rollIndex   = _generatorRandomSource.RollNodeIndex(freeNodes.Count);
                    var monsterNode = freeNodes[rollIndex];
                    var monster     = CreateMonster(monsterScheme, monsterNode, monsterPlayer);

                    freeNodes.Remove(monster.Node);
                    //}
                }
            }
        }
Ejemplo n.º 24
0
        private IActor CreateMonster(IMonsterScheme monsterScheme, IMapNode startNode, IBotPlayer botPlayer)
        {
            var person = new MonsterPerson(monsterScheme);
            var actor  = new Actor(person, botPlayer, startNode);

            _actorManager.Add(actor);
            return(actor);
        }
Ejemplo n.º 25
0
        private static IActor CreateMonster(IActorManager actorManager, MonsterPerson person, IGraphNode startNode, IBotPlayer botPlayer)
        {
            var actor = new Actor(person, botPlayer, startNode);

            actorManager.Add(actor);
            return(actor);
        }
 public MonsterBotActorTaskSource(IBotPlayer player, LogicStateTreePatterns logicStateTreePatterns) : base(player)
 {
     _logicStateTreePatterns = logicStateTreePatterns;
 }
Ejemplo n.º 27
0
        private IActor CreateMonster(IActorManager actorManager, IMonsterScheme monsterScheme, IGraphNode startNode, IBotPlayer botPlayer)
        {
            var person = _monsterFactory.Create(monsterScheme);
            var actor  = new Actor(person, botPlayer, startNode);

            actorManager.Add(actor);
            return(actor);
        }