コード例 #1
0
ファイル: Dungeon.cs プロジェクト: WorldOfMogwais/WoMNetCore
        /// <summary>
        /// Position monster and give them a unique dice.
        /// </summary>
        /// <param name="shift"></param>
        private void DeployMonsters(Shift shift)
        {
            Rectangle bossRoom = Map.Locations[0];

            // deploy bosses
            // TODO make multiple boss deployments available
            Monster boss = MonstersList.First(p => BossKeys.Contains(p.AdventureEntityId));

            Coord coord = bossRoom.RandomPosition(DungeonRandom);

            while (Map.EntityMap[coord] != null)
            {
                coord = bossRoom.RandomPosition(DungeonRandom);
            }

            boss.Adventure = this;
            Map.AddEntity(boss, coord.X, coord.Y);

            // deploy mobs
            foreach (var monster in MonstersList.Where(p => p != boss))
            {
                coord = Coord.NONE;
                while (coord == Coord.NONE || Map.EntityMap[coord] != null)
                {
                    Rectangle location = Map.Locations[DungeonRandom.Next(Map.Locations.Count)];
                    coord = location.RandomPosition(DungeonRandom);
                }

                monster.Adventure = this;
                Map.AddEntity(monster, coord.X, coord.Y);
            }
        }
コード例 #2
0
        public MonstersList getAllMonsters()
        {
            MonstersList model = new MonstersList();

            using (var db = new ContingencyEntities())
            {
                var query        = db.Monsters.Select(x => x);
                var monstersList = query.ToList();
                monstersList.ForEach(monster =>
                                     model.Monsters.Add(
                                         new ContingencyDal.Monster()
                {
                    Abilities   = monster.Abilities,
                    AC          = monster.AC,
                    Actions     = monster.Actions,
                    CR          = monster.CR,
                    Description = monster.Description,
                    HP          = monster.HP,
                    Name        = monster.Name,
                    Stats       = monster.Stats
                }
                                         ));
            }
            return(model);
        }
コード例 #3
0
ファイル: Dungeon.cs プロジェクト: mogwaicoin/WoMNetCore
        /// <summary>
        /// Position monster and give them a unique dice.
        /// </summary>
        /// <param name="shift"></param>
        private void DeployMonsters(Shift shift)
        {
            var bossRoom = Map.Locations[0];

            // deploy bosses
            var boss = MonstersList.OrderByDescending(p => p.ChallengeRating).First();

            var coord = bossRoom.RandomPosition(DungeonRandom);

            while (Map.EntityMap[coord] != null)
            {
                coord = bossRoom.RandomPosition(DungeonRandom);
            }
            boss.Adventure = this;
            Map.AddEntity(boss, coord.X, coord.Y);

            // deploy mobs
            foreach (var monster in MonstersList.Where(p => p != boss))
            {
                coord = null;
                while (coord == null || Map.EntityMap[coord] != null)
                {
                    var location = Map.Locations[DungeonRandom.Next(Map.Locations.Count)];
                    coord = location.RandomPosition(DungeonRandom);
                }
                monster.Adventure = this;
                Map.AddEntity(monster, coord.X, coord.Y);
            }
        }
コード例 #4
0
 public void CleanMonsterList(List <MonsterData> list)
 {
     mainWindow.Dispatcher.Invoke(() =>
     {
         var exclude = MonstersList.Except(list);
         foreach (var monster in exclude.Reverse())
         {
             MonstersList.Remove(monster);
         }
     });
 }
コード例 #5
0
ファイル: Dungeon.cs プロジェクト: mogwaicoin/WoMNetCore
        private void UpdateAdventureStats()
        {
            if (MonstersList.Any())
            {
                AdventureStats[Generator.AdventureStats.Monster] = (double)MonstersList.Count(p => p.IsDead) / MonstersList.Count;
            }
            else
            {
                AdventureStats[Generator.AdventureStats.Monster] = 1;
            }

            AdventureStats[Generator.AdventureStats.Explore] = Map.GetExplorationState();
        }
コード例 #6
0
 public void AddOrUpdateMonster(MonsterData monster)
 {
     mainWindow.Dispatcher.Invoke(() =>
     {
         var existingMonster = MonstersList.FirstOrDefault(existing => existing.Address == monster.Address);
         if (existingMonster != null)
         {
             existingMonster.Name  = monster.Name;
             existingMonster.HP    = monster.HP;
             existingMonster.MaxHP = monster.MaxHP;
         }
         else
         {
             MonstersList.Add(monster);
         }
     });
 }
コード例 #7
0
        async Task ExecuteLoadListsCommand()
        {
            try
            {
                MonstersList = await App.Database.GetMonsters();

                MonstersList = MonstersList.OrderBy(mob => mob.Name).ToList();

                PlayersList = await App.Database.GetHeroes();

                PlayersList = PlayersList.OrderBy(hero => hero.Name).ToList();
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex);
            }
        }
コード例 #8
0
 private A_Monster addMonster(MonstersList monster, MonstersData mData) => mFactories[monster].createMonster(mData);
コード例 #9
0
 public DungeonCreator()
 {
     service  = new ContingencyService();
     Monsters = service.getAllMonsters();
 }