added item base class for gold and potions

This commit is contained in:
2024-07-18 12:54:41 -04:00
parent 8704fdb7aa
commit dfea74ed42
9 changed files with 51 additions and 65 deletions

View File

@ -47,8 +47,9 @@ gold_list level::dragon_hoard() {
gold_list result;
for (auto g : glist)
if (g.amount == GOLD_DRAGON)
result.push_back({g.amount, g.pos});
if (g.get_amount() == GOLD_DRAGON)
result.push_back(g);
return result;
}
@ -65,17 +66,17 @@ void level::gen_enemies(RNG *rng, std::vector<position_list> &tiles) {
position_list spots;
for (int dir = 0; dir < DIRECTION_CNT; ++dir) {
position tmp = dhoard[i].pos + MOVE[dir];
position tmp = dhoard[i].get_pos() + MOVE[dir];
if (map.which_room(tmp) != -1)
spots.push_back(dhoard[i].pos + MOVE[dir]);
spots.push_back(dhoard[i].get_pos() + MOVE[dir]);
}
auto pos = spots.size() ? rng->get_rand_in_vector(spots) :
dhoard[i].pos;
pelist.push_back(new_dragon(rng, pos, dhoard[i].pos,
dhoard[i].get_pos();
pelist.push_back(new_dragon(rng, pos, dhoard[i].get_pos(),
enabled_features,
map.which_room(dhoard[i].pos)));
map.which_room(dhoard[i].get_pos())));
int room = map.which_room(pos);
remove_from_list(tiles[room], pos);
@ -116,7 +117,7 @@ void level::gen_gold(RNG *rng, std::vector<position_list> &tiles) {
glist.reserve(GOLD_CNT);
for (int i = 0; i < GOLD_CNT; ++i)
glist.push_back({rand_gold_pile(rng), get_rand_pos(rng, tiles)});
glist.push_back(gold{get_rand_pos(rng, tiles), rand_gold_pile(rng)});
}
void level::gen_potions(RNG *rng, std::vector<position_list> &tiles) {
@ -148,7 +149,7 @@ void level::print(output *out) const {
plist[i]->print(out);
for (size_t i = 0; i < glist.size(); ++i)
out->print_char(glist[i].pos, 'G', COLOR_PAIR(COLOR_YELLOW));
glist[i].print(out);
for (size_t i = 0; i < elist.size(); ++i)
elist[i]->print(out);
@ -172,7 +173,7 @@ bool level::is_available(const position &pos, bool is_player) const {
if (!(enabled_features & FEATURE_WALK_OVER) && !is_player)
for (size_t i = 0; i < glist.size(); ++i)
if (pos == glist[i].pos)
if (pos == glist[i].get_pos())
return false;
return true;
@ -198,7 +199,7 @@ bool level::is_available_all(const position &pos) const {
return false;
for (size_t i = 0; i < glist.size(); ++i)
if (pos == glist[i].pos)
if (pos == glist[i].get_pos())
return false;
return true;