/// <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); } }
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); }
/// <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); } }
public void CleanMonsterList(List <MonsterData> list) { mainWindow.Dispatcher.Invoke(() => { var exclude = MonstersList.Except(list); foreach (var monster in exclude.Reverse()) { MonstersList.Remove(monster); } }); }
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(); }
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); } }); }
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); } }
private A_Monster addMonster(MonstersList monster, MonstersData mData) => mFactories[monster].createMonster(mData);
public DungeonCreator() { service = new ContingencyService(); Monsters = service.getAllMonsters(); }