added item base class for gold and potions
This commit is contained in:
23
src/level.cc
23
src/level.cc
@ -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;
|
||||
|
Reference in New Issue
Block a user