public void Init(Hashtable changeStateData)
    {
        _gameMode = GameMode.COMBAT;

        _playerCombatSystem = _diContainer.Resolve<PlayerCombatSystem>();
        _buildSystem = _diContainer.Resolve<BuildingSystem>();
        _inventorySystem = _diContainer.Resolve<InventorySystem>();
        _enemySystem = _diContainer.Resolve<EnemySystem>();
        _lootSystem = _diContainer.Resolve<LootSystem>();
        _particleGod = _diContainer.Resolve<ParticleGOD>();
        _monsterGenerator = _diContainer.Resolve<MonsterGenerator>();
        
        Singleton.instance.audioSystem.GenerateAudioLookupForLevel();
        _particleGod.InitParticlePool();

        //HUD
        _hudController = new HUDController(_gameConfig.playerConfig,_gameConfig.hudConfig);
        _hudController.Start(() =>
        {
            _monsterGenerator.Init(_hudController, _playerCombatSystem);
        });

        _playerCombatSystem.Init(_hudController);
        _buildSystem.Init();
        _enemySystem.Init();
        _lootSystem.Init();
        _inventorySystem.Init();

        // Get CombatPlayerView
        //_playerCombatSystem.isEnabled = true;
        _dispatcher.AddListener(GameplayEventType.DAMAGE_TAKEN, onDamageTaken);
        _dispatcher.AddListener(GameplayEventType.GAME_COMPLETE, onGameComplete);
        _dispatcher.AddListener(GameplayEventType.GAME_RETRY, onGameRetry);
    }
Exemple #2
0
        private void LoadMonsters(GameState state)
        {
            var temp      = new List <Monster>();
            var generator = new MonsterGenerator();

            foreach (var dto in state.monsters)
            {
                var owner = LoadedPlayers.Find(x => x.Name == dto.Owner);
                if (dto.Name == "Wizard")
                {
                    dto.Name = "Wizard" + owner.Name.Substring(owner.Name.Length - 1);
                }

                var monsterFromDTO = generator.GetMonsterByName(dto.Name, owner);
                monsterFromDTO.Moves           = dto.Moves;
                monsterFromDTO.MagicResistance = dto.MagicResistance;
                monsterFromDTO.MovesRemaining  = dto.MovesRemaining;
                monsterFromDTO.Attack          = dto.Attack;
                monsterFromDTO.Health          = dto.Health;
                monsterFromDTO.MaxHealth       = dto.MaxHealth;
                monsterFromDTO.coordinates     = dto.Coordinates;

                LoadedMonsters.Add(monsterFromDTO);
            }
        }
 public static void AddMonsterMgr(MonsterGenerator mgm)
 {
     if (!allMonsters.Contains(mgm))
     {
         allMonsters.Add(mgm);
     }
 }
    /// <summary>
    /// Make a chance to place 1 to 4 monsters in every room except the starting room with the player.
    /// </summary>
    private void PlaceMonsters()
    {
        if (GameData.Data.CurrentLevel == GameData.Data.Levels - 1)
        {
            GenerateBeholder();
        }

        foreach (var segment in map.segments)
        {
            if (segment.x == playerXsegment && segment.y == playerYsegment)
            {
                continue;
            }

            if (Dice.Roll("1D10") <= 8)                                                                            // Each seggment has a 70% chance of having monsters
            {
                var numberOfMonsters = Dice.Roll("1D4");                                                           // Generate between 1 and 4 monsters

                for (int i = 1; i < numberOfMonsters; i++)                                                         // Not starting at zero. Player is in room zero.
                {
                    Point randomRoomLocation = map.GetRandomWalkableLocationInRoom(segment.BBox);                  // Find a random walkable location in the room to place the monster

                    if (randomRoomLocation != Point.Zero)                                                          // It's possible that the room doesn't have space to place a monster
                    {                                                                                              // In that case skip creating the monster
                        var monster = MonsterGenerator.GetDepthAppropriateMonster(game, GameData.Data.Difficulty); // Temporarily hard code this monster to be created at level 1
                        monster.X = randomRoomLocation.X;
                        monster.Y = randomRoomLocation.Y;
                        map.AddMonster(monster);
                    }
                }
            }
        }
    }
Exemple #5
0
    public Dungeon
    (
        Logger logger,
        ItemController itemController,
        LadderGenerator ladderGenerator,
        MonsterController monsterController,
        ItemGenerator itemGenerator,
        MonsterGenerator monsterGenerator,
        GameObject tile,
        int dungeonX,
        int dungeonY,
        int maxRoomSize,
        int minRoomSize,
        int maxRooms,
        int dungeonLevel
    )
    {
        this.Logger            = logger;
        this.ItemController    = itemController;
        this.LadderGenerator   = ladderGenerator;
        this.MonsterController = monsterController;
        this.ItemGenerator     = itemGenerator;
        this.MonsterGenerator  = monsterGenerator;

        this.Tile = tile;

        this.DungeonX     = dungeonX;
        this.DungeonY     = dungeonY;
        this.MaxRoomSize  = maxRoomSize;
        this.MinRoomSize  = minRoomSize;
        this.MaxRooms     = maxRooms;
        this.DungeonLevel = dungeonLevel;
    }
Exemple #6
0
        public void GenerateNewMonster()
        {
            Position monsterPosition = SelectRandomWalkableTile(false);


            var newMonster = MonsterGenerator.GenerateMonster(0, monsterPosition);

            _monsters.Add(newMonster);
        }
        public PrefabGeneratorWindow()
        {
            mMonsterGenerator = new MonsterGenerator();
            mMonsterGenerator.Init(ANIMATION_PATH, ANIMATOR_CONTROLLER_PATH, PREFAB_PATH);

            mPlayerGenerator = new PlayerGenerator();
            mPlayerGenerator.Init(ANIMATION_PATH, ANIMATOR_CONTROLLER_PATH, PREFAB_PATH);

            mTerrainGenerator = new TerrainGenerator();
            mTerrainGenerator.Init(ANIMATION_PATH, ANIMATOR_CONTROLLER_PATH, PREFAB_PATH);
        }
Exemple #8
0
 private void Start()
 {
     LoadGameData();
     Game.IsTransitioning = false;
     Game.GameManager     = this;
     InitializeTrack();
     InitializePlayer();
     InitializeIntroduction();
     _coinGenerator    = gameObject.AddComponent <CoinGenerator>();
     _bulletGenerator  = gameObject.AddComponent <BulletGenerator>();
     _monsterGenerator = gameObject.AddComponent <MonsterGenerator>();
 }
    private void GenerateMonsters()
    {
        int enemies = dungeonConstants.NumberOfMonsters;

        MonsterGenerator monsterGenerator = new MonsterGenerator(dungeonConstants);

        for (int i = 0; i < enemies; i++)
        {
            MonsterHolder monsterHolder = monsterGenerator.CreateMonsters();
            monsterHolder.Deactivate();

            dungeon.AddMonster(monsterHolder);
        }
    }
Exemple #10
0
    public MonsterState(MonsterGenerator generator, LevelConfig.LevelDef levelDef, HUDController hudController) : base(generator, levelDef)
    {
        _currentWaveIndex = 0;
        _hudController    = hudController;

        _waveQueue = new Queue <LevelConfig.WaveDef>();
        _maxWaves  = levelDef.waves.Length;
        for (int i = 0; i < _maxWaves; i++)
        {
            LevelConfig.WaveDef def = levelDef.waves[i];
            def.waveIndex = i;
            _waveQueue.Enqueue(def);
        }
    }
Exemple #11
0
    public async UniTask BegineAsync(int currentStage)
    {
        //モンスターの生成
        var monsters = MonsterGenerator.GenerateTwoMonster(currentStage + 1);

        //モンスターと戦った時のシミュレーション
        var rightSim = BattleSystem.Simulate(playerStatus, monsters.right);
        var leftSim  = BattleSystem.Simulate(playerStatus, monsters.left);

        userInterface.UpdatePlayerStatus(playerStatus);
        userInterface.UpdateTwoMonsters(rightSim, leftSim);



        BattleSystem.OutBattle outBattle = new BattleSystem.OutBattle();
        while (true)
        {
            var input = await userInterface.WaitInputAsync();

            if (input.category == 0)//モンスターとのバトル
            {
                if (input.pickedThing == 0)
                {
                    outBattle = BattleSystem.Battle(rightSim, itemManager, playerStatus);
                }
                else if (input.pickedThing == 1)
                {
                    outBattle = BattleSystem.Battle(leftSim, itemManager, playerStatus);
                }
                else
                {
                    Debug.LogError("誤った選択肢が選ばれています");
                }
                userInterface.UpdatePlayerStatus(playerStatus);
                break;
            }
            else if (input.category == 1)//アイテム使用
            {
                itemManager.UseItem((ItemType)input.pickedThing);
                rightSim = BattleSystem.Simulate(playerStatus, monsters.right);
                leftSim  = BattleSystem.Simulate(playerStatus, monsters.left);

                userInterface.UpdatePlayerStatus(playerStatus);
                userInterface.UpdateTwoMonsters(rightSim, leftSim);//いらなくなるかも

                continue;
            }
        }
        await userInterface.BattleExplainAsync(outBattle);
    }
Exemple #12
0
 // Start is called before the first frame update
 void Start()
 {
     sound             = gameObject.AddComponent <AudioSource>();
     effect            = gameObject.AddComponent <AudioSource>();
     sound.clip        = ThemeMusic;
     sound.volume      = 0.5f;
     sound.loop        = true;
     sound.playOnAwake = true;
     sound.Play();
     GameSessionTime         = GameSessionTime * 1.01f;
     monsterGenerator        = Monsters.GetComponent <MonsterGenerator>();
     startGeneratingMonsters = StartGeneratingMonsters();
     sessionTimer            = SessionTimer();
     StartGame();
 }
Exemple #13
0
    private void GenerateDungeonFeatures(int direction)
    {
        // Generate architecture for each tree quad recursively
        ArchitectureGenerator architecture = new ArchitectureGenerator();

        architecture.GenerateArchitecture(dungeonGenerator.quadTree);

        // Generate stairs
        StairGenerator stairs = new StairGenerator();

        stairs.Generate();

        // If we cannot solve the level, we need to generate a different one
        if (!LevelIsSolvable())
        {
            Debug.LogError("Dungeon level cannot be solved. Genrating again...");
            GenerateDungeon(direction);
            return;
        }

        // Generate player
        PlayerGenerator player = new PlayerGenerator();
        Stair           stair  = direction == -1 ? grid.stairDown : grid.stairUp;

        player.GenerateAtPos(stair.x, stair.y);

        // Generate furniture
        FurnitureGenerator furniture = new FurnitureGenerator();

        furniture.Generate();

        // Generate monsters
        MonsterGenerator monsters = new MonsterGenerator();

        monsters.Generate();
        //monsters.GenerateSingle();

        // Generate chests
        ChestGenerator chests = new ChestGenerator();

        chests.Generate();

        // Generate items
        ItemGenerator items = new ItemGenerator();

        items.Generate();
    }
    private void GenerateBeholder()
    {
        Monster[] beholder = MonsterGenerator.CreateBeholder(game, GameData.Data.Difficulty);
        Point     p        = map.GetBeholderLocationInMap();

        for (int y = p.Y, row = 0; y < p.Y + 3; y++, row++)
        {
            for (int x = p.X, col = 0; x < p.X + 3; x++, col++)
            {
                int index = col + (row * 3);
                beholder[index].X = x;
                beholder[index].Y = y;
                map.AddMonster(beholder[index]);
            }
        }

        game.beholder = beholder;
    }
        public void Update(float monsterhealth)
        {
            if (monsterhealth > 0)
            {
                LabelHealth.Content = monsterhealth;
                HealthBar.Value     = monsterhealth;
            }
            else
            {
                // _autoDamager.Wait();
                _timer.Stop();

                //Dodanie zarobionej kasy z przeciwnika
                var killedMonster = MonsterList.Single(x => x.Id == _currentMonsterId);
                var currentMoney  = int.Parse(_moneyLabel.Content.ToString());
                currentMoney       += killedMonster.Money;
                _moneyLabel.Content = currentMoney;

                //Remove monster from the list
                MonsterList.RemoveAt(0);
                MonsterGenerator.GenerateNewMonster();

                //Załaduj nowego przeciwnika.
                var monster = MonsterList.Single(x => x.Id == _currentMonsterId + 1);
                _currentMonsterId = monster.Id;

                LabelMonsterName.Content = monster.Name + " Lvl " + monster.Level;
                LabelHealth.Content      = monster.Health;
                HealthBar.Maximum        = monster.Health;
                HealthBar.Value          = monster.Health;

                //TODO: Napraw crasha, który powstaje kiedy monster nie ma imagepath.
                Uri         uri       = new Uri(monster.ImagePath, UriKind.Relative);
                ImageSource imgSource = new BitmapImage(uri);
                _monsterImage.Source = imgSource;

                //_autoDamager.Start(monster.Health);
                _timer.Start();
            }
        }
        protected virtual void RegisterMonsterGeneratorRandomSource(IServiceCollection serviceRegistry)
        {
            serviceRegistry.AddSingleton <IMonsterGenerator, MonsterGenerator>(serviceProvider =>
            {
                var schemeService   = serviceProvider.GetRequiredService <ISchemeService>();
                var monsterFactory  = serviceProvider.GetRequiredService <IMonsterPersonFactory>();
                var randomSource    = serviceProvider.GetRequiredService <IMonsterGeneratorRandomSource>();
                var actorTaskSource =
                    serviceProvider.GetRequiredService <MonsterBotActorTaskSource <ISectorTaskSourceContext> >();

                var generator = new MonsterGenerator(schemeService, monsterFactory, randomSource, actorTaskSource);
                return(generator);
            });
            serviceRegistry.AddSingleton <IMonsterPersonFactory, MonsterPersonFactory>(serviceProvider =>
            {
                var identifierGenerator = serviceProvider.GetService <IMonsterIdentifierGenerator>();
                return(new MonsterPersonFactory
                {
                    MonsterIdentifierGenerator = identifierGenerator
                });
            });
            serviceRegistry.AddSingleton <IMonsterGeneratorRandomSource, MonsterGeneratorRandomSource>();
        }
 public EndState(MonsterGenerator generator, LevelConfig.LevelDef levelDef) : base(generator, levelDef)
 {
 }
 //    Called by monster gen to record new kill
 public void addKill(MonsterGenerator.MonsterTypes type)
 {
     if(sectorChallenge == GameEngine.MonsterChallenges.KILL_TIME) {
         //	Add kill and start timer if needed
         GameModeData.KillTimeModeData killTimeData = (GameModeData.KillTimeModeData)gameData;
         killTimeData.addKill((int)type);
         if(!killTimeData.startTimer)
             killTimeData.startTimer = true;
     }
     else if(sectorChallenge == GameEngine.MonsterChallenges.KILL_NO_DAMAGE) {
         //	Just add kill
         GameModeData.KillNoDamageModeData noDamage = (GameModeData.KillNoDamageModeData)gameData;
         noDamage.addKill((int)type);
     }
 }
    void Start()
    {
        playercontroller = player.GetComponent<PlayerController> ();
        monsterGenerator = this.GetComponent<MonsterGenerator> ();
        monsterGenerator.setSpawnPoints (spawnPoints);
        monsterGenerator.parentSector = this;
        treasureFound = false;

        //	Construct and set goals
        switch (sectorChallenge) {
        case GameEngine.MonsterChallenges.KILL_TIME:
            gameData = new GameModeData.KillTimeModeData();

            /*******	SET THE GOALS HERE	*******/
            ((GameModeData.KillTimeModeData)gameData).setKills(new int[] { 5, 5, 0, 2, 0});
            ((GameModeData.KillTimeModeData)gameData).setTime(60f);

            break;

        case GameEngine.MonsterChallenges.KILL_NO_DAMAGE:
            gameData = new GameModeData.KillNoDamageModeData();

            /*******	SET THE GOALS HERE	*******/
            ((GameModeData.KillNoDamageModeData)gameData).setKills(new int[] {4, 3, 2, 0, 0});

            break;
        }

        //	Set texts to blank
        timerText.text = "";
        if (this.gameObject.name == "Sector1Engine") {
            puzzleText.text = "X";
            puzzle_count = 3;
        }
        else {
            puzzleText.text = "X";
            puzzle_count = 4;
        }

        for (int i = 0; i < enemyTexts.Length; ++i)
            enemyTexts [i].text = "X";

        gameData.parentEngine = this;
    }
 public FlowState(MonsterGenerator generator, LevelConfig.LevelDef levelDef)
 {
     _generator = generator;
     _levelDef  = levelDef;
 }
 private static void OnGameSceneActive()
 {
     if (CurrentSceneState == SceneState.Game)
     {
         return;
     }
     if (GameNoteControllerAwakePatch.colorSuckers == null)
     {
         GameNoteControllerAwakePatch.colorSuckers = new List <ColorSucker>();
     }
     else
     {
         GameNoteControllerAwakePatch.colorSuckers.Clear();
     }
     if (config.Value.Enabled && (FightSabersGameplaySetup.instance.ColorSuckerEnabled ||
                                  FightSabersGameplaySetup.instance.NoteShrinkerEnabled ||
                                  FightSabersGameplaySetup.instance.TimeWarperEnabled))
     {
         config.Value.Enabled = false;
         OverlayViewController.instance.fsDisableContainerState  = !config.Value.Enabled;
         OverlayViewController.instance.experienceContainerState = config.Value.Enabled;
         configProvider.Store(config.Value);
     }
     if (config.Value.Enabled)
     {
         ScoreSubmission.DisableSubmission("FightSabers");
         MonsterGenerator.Create();
         QuestManager.instance.LinkGameEventsForActivatedQuests();
     }
     else if (FightSabersGameplaySetup.instance.ColorSuckerEnabled || FightSabersGameplaySetup.instance.NoteShrinkerEnabled || FightSabersGameplaySetup.instance.TimeWarperEnabled)
     {
         ScoreSubmission.DisableSubmission("FightSabers");
         var go = new GameObject("[FS|ModifierManager]");
         var modifierManager = go.AddComponent <ModifierManager>();
         var modifiers       = new List <Type>();
         if (FightSabersGameplaySetup.instance.ColorSuckerEnabled)
         {
             modifiers.Add(typeof(ColorSucker));
         }
         if (FightSabersGameplaySetup.instance.NoteShrinkerEnabled)
         {
             modifiers.Add(typeof(NoteShrinker));
         }
         if (FightSabersGameplaySetup.instance.TimeWarperEnabled)
         {
             modifiers.Add(typeof(TimeWarper));
         }
         modifierManager.modifiers            = modifiers.ToArray();
         modifierManager.noteShrinkerStrength = FightSabersGameplaySetup.instance.NoteShrinkerStrength;
         modifierManager.colorSuckerStrength  = FightSabersGameplaySetup.instance.ColorSuckerStrength;
         modifierManager.timeWarperStrength   = FightSabersGameplaySetup.instance.TimeWarperStrength;
         new UnityTask(modifierManager.ConfigureModifiers(0.05f));
         var scoreControllerManager = go.AddComponent <ScoreControllerManager>();
         scoreControllerManager.BombCut += self => {
             modifierManager.ReduceColorSuckerColorness();
         };
         scoreControllerManager.NoteCut += self => {
             modifierManager.ImproveColorSuckerColorness();
         };
         scoreControllerManager.NoteMissed += self => {
             modifierManager.ReduceColorSuckerColorness();
         };
     }
     CurrentSceneState = SceneState.Game;
 }
 public BetweenWaveState(MonsterGenerator generator, LevelConfig.LevelDef levelDef) : base(generator, levelDef)
 {
 }
        public async System.Threading.Tasks.Task CreateMonsters_AlwaysMaxRarityRolls_MaxHighRarityMonstersAsync()
        {
            var schemeDict = new Dictionary <string, IMonsterScheme>
            {
                { "regular", CreateMonsterScheme("regular") },
                { "rare", CreateMonsterScheme("rare") },
                { "champion", CreateMonsterScheme("champion") }
            };

            var schemeServiceMock = new Mock <ISchemeService>();

            schemeServiceMock.Setup(x => x.GetScheme <IMonsterScheme>(It.IsAny <string>()))
            .Returns <string>(sid => schemeDict[sid]);
            var schemeService = schemeServiceMock.Object;

            var dice             = new Dice(3121);
            var randomSourceMock = new Mock <MonsterGeneratorRandomSource>(dice).As <IMonsterGeneratorRandomSource>();

            randomSourceMock.CallBase = true;
            randomSourceMock.Setup(x => x.RollRarity()).Returns(2);
            randomSourceMock.Setup(x => x.RollRegionCount(It.IsAny <int>())).Returns(20);
            var randomSource = randomSourceMock.Object;

            var actorList        = new List <IActor>();
            var actorManagerMock = new Mock <IActorManager>();

            actorManagerMock.Setup(x => x.Add(It.IsAny <IActor>())).Callback <IActor>(a => actorList.Add(a));
            actorManagerMock.SetupGet(x => x.Items).Returns(actorList);
            var actorManager = actorManagerMock.Object;

            var monsterGenerator = new MonsterGenerator(schemeService,
                                                        randomSource,
                                                        actorManager);


            var map = await SquareMapFactory.CreateAsync(20);

            var sectorMock   = new Mock <ISector>();
            var patrolRoutes = new Dictionary <IActor, IPatrolRoute>();

            sectorMock.SetupGet(x => x.PatrolRoutes).Returns(patrolRoutes);
            var sector = sectorMock.Object;

            var monsterRegions = new List <MapRegion> {
                new MapRegion(1, map.Nodes.ToArray())
            };

            var sectorScheme = new TestSectorSubScheme
            {
                RegularMonsterSids  = new[] { "regular" },
                RareMonsterSids     = new[] { "rare" },
                ChampionMonsterSids = new[] { "champion" }
            };

            // ACT
            monsterGenerator.CreateMonsters(sector,
                                            new Mock <IBotPlayer>().Object,
                                            monsterRegions,
                                            sectorScheme);



            // ASSERT
            var championCount = actorManager.Items.Count(x => ((MonsterPerson)x.Person).Scheme.Sid == "champion");

            championCount.Should().Be(1);

            var rareCount = actorManager.Items.Count(x => ((MonsterPerson)x.Person).Scheme.Sid == "rare");

            rareCount.Should().Be(10);
        }
 protected override void Awake()
 {
     base.Awake();
     _monsterGenerator = GameObject.Find("Generator").GetComponent <MonsterGenerator>();
 }
 protected override void Awake()
 {
     base.Awake();
     _monsterGenerator = GameObject.Find("Generator").GetComponent<MonsterGenerator>();
 }
Exemple #26
0
        public async Task CreateMonsters_AlwaysMaxRarityRolls_MaxHighRarityMonstersAsync()
        {
            var schemeDict = new Dictionary <string, IMonsterScheme>
            {
                { "regular", CreateMonsterScheme("regular") },
                { "rare", CreateMonsterScheme("rare") },
                { "champion", CreateMonsterScheme("champion") }
            };

            var schemeServiceMock = new Mock <ISchemeService>();

            schemeServiceMock.Setup(x => x.GetScheme <IMonsterScheme>(It.IsAny <string>()))
            .Returns <string>(sid => schemeDict[sid]);
            var schemeService = schemeServiceMock.Object;

            var dice             = new LinearDice(3121);
            var randomSourceMock = new Mock <MonsterGeneratorRandomSource>(dice).As <IMonsterGeneratorRandomSource>();

            randomSourceMock.CallBase = true;
            randomSourceMock.Setup(x => x.RollRarity()).Returns(2);
            randomSourceMock.Setup(x => x.RollRegionCount(It.IsAny <int>(), It.IsAny <int>())).Returns(20);
            var randomSource = randomSourceMock.Object;

            var actorList        = new List <IActor>();
            var actorManagerMock = new Mock <IActorManager>();

            actorManagerMock.Setup(x => x.Add(It.IsAny <IActor>())).Callback <IActor>(a => actorList.Add(a));
            actorManagerMock.SetupGet(x => x.Items).Returns(actorList);
            var actorManager = actorManagerMock.Object;

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

            propContainerManagerMock.SetupGet(x => x.Items).Returns(Array.Empty <IStaticObject>());

            var taskSourceMock = new Mock <IActorTaskSource <ISectorTaskSourceContext> >();
            var taskSource     = taskSourceMock.Object;

            var monsterFactory = new MonsterPersonFactory();

            var monsterGenerator = new MonsterGenerator(schemeService,
                                                        monsterFactory,
                                                        randomSource,
                                                        taskSource);

            var map = await SquareMapFactory.CreateAsync(20).ConfigureAwait(false);

            var sectorMock = new Mock <ISector>();

            sectorMock.SetupGet(x => x.ActorManager).Returns(actorManager);
            sectorMock.SetupGet(x => x.StaticObjectManager).Returns(propContainerManager);
            sectorMock.SetupGet(x => x.Map).Returns(map);
            var sector = sectorMock.Object;

            var monsterRegions = new List <MapRegion>
            {
                new MapRegion(1, map.Nodes.ToArray())
            };

            var sectorScheme = new TestSectorSubScheme
            {
                RegularMonsterSids  = new[] { "regular" },
                RareMonsterSids     = new[] { "rare" },
                ChampionMonsterSids = new[] { "champion" }
            };

            // ACT
            monsterGenerator.CreateMonsters(sector,
                                            monsterRegions,
                                            sectorScheme);

            // ASSERT
            var championCount = actorManager.Items.Count(x => ((MonsterPerson)x.Person).Scheme.Sid == "champion");

            championCount.Should().Be(1);

            var rareCount = actorManager.Items.Count(x => ((MonsterPerson)x.Person).Scheme.Sid == "rare");

            rareCount.Should().Be(10);
        }
 private void initGenerators() {
     itemGenerator = new VhItemGenerator(new ItemFacade());
     monsterGenerator = new MonsterGenerator();
 }
Exemple #28
0
 public void SetGenerator(MonsterGenerator theGenerator)
 {
     generator = theGenerator;
 }