added locking to dragon hoards
This commit is contained in:
35
src/level.cc
35
src/level.cc
@ -48,15 +48,6 @@ level::level(const level_data &lvl, character *player, RNG *rng,
|
||||
|
||||
void level::fill(const level_data &lvl, std::vector<position_list> &tiles,
|
||||
RNG *rng) {
|
||||
for (auto [type, pos] : lvl.enemies) {
|
||||
for (size_t i = 0; i < tiles.size(); ++i)
|
||||
remove_from_list(tiles[i], pos);
|
||||
|
||||
pelist.push_back(new_enemy(type, pos, enabled_features,
|
||||
map.which_room(pos), rng));
|
||||
elist.push_back(pelist[pelist.size() - 1].get());
|
||||
}
|
||||
|
||||
for (auto [type, pos] : lvl.potions) {
|
||||
for (size_t i = 0; i < tiles.size(); ++i)
|
||||
remove_from_list(tiles[i], pos);
|
||||
@ -71,6 +62,29 @@ void level::fill(const level_data &lvl, std::vector<position_list> &tiles,
|
||||
|
||||
glist.push_back(g);
|
||||
}
|
||||
|
||||
for (auto [type, pos] : lvl.enemies) {
|
||||
for (size_t i = 0; i < tiles.size(); ++i)
|
||||
remove_from_list(tiles[i], pos);
|
||||
|
||||
if (type != DRAGON)
|
||||
pelist.push_back(new_enemy(type, pos, enabled_features,
|
||||
map.which_room(pos), rng));
|
||||
else {
|
||||
gold guards{POS_NIL, 0};
|
||||
|
||||
for (size_t i = 0; i < glist.size(); ++i)
|
||||
if (glist[i].get_amount() == GOLD_DRAGON &&
|
||||
is_adjacent(glist[i].get_pos(), pos))
|
||||
guards = glist[i];
|
||||
|
||||
pelist.push_back(new_enemy(type, pos, enabled_features,
|
||||
map.which_room(pos), rng,
|
||||
guards.get_pos()));
|
||||
}
|
||||
|
||||
elist.push_back(pelist[pelist.size() - 1].get());
|
||||
}
|
||||
}
|
||||
|
||||
gold_list level::dragon_hoard(const level_data &lvl) {
|
||||
@ -116,7 +130,8 @@ void level::gen_enemies(const level_data &lvl, RNG *rng,
|
||||
dhoard[i].get_pos();
|
||||
pelist.push_back(new_dragon(rng, pos, dhoard[i].get_pos(),
|
||||
enabled_features,
|
||||
map.which_room(dhoard[i].get_pos())));
|
||||
map.which_room(dhoard[i].get_pos()),
|
||||
dhoard[i].get_pos()));
|
||||
int room = map.which_room(pos);
|
||||
remove_from_list(tiles[room], pos);
|
||||
|
||||
|
Reference in New Issue
Block a user