full implementation!
bug: level generation will generate nullptrs
This commit is contained in:
36
src/level.cc
36
src/level.cc
@ -114,31 +114,31 @@ void level::gen_potions(RNG *rng, std::vector<position_list> &tiles) {
|
||||
void level::print(display *out) const {
|
||||
map.print(out);
|
||||
|
||||
for (auto ch : elist)
|
||||
ch->print(out);
|
||||
for (size_t i = 0; i < plist.size(); ++i)
|
||||
plist[i]->print(out);
|
||||
|
||||
for (auto p : plist)
|
||||
p->print(out);
|
||||
for (size_t i = 0; i < glist.size(); ++i)
|
||||
out->print_char(glist[i].pos, 'G', COLOR_PAIR(COLOR_YELLOW));
|
||||
|
||||
for (auto gold : glist)
|
||||
out->print_char(gold.pos, 'G', COLOR_PAIR(COLOR_YELLOW));
|
||||
for (size_t i = 0; i < elist.size(); ++i)
|
||||
elist[i]->print(out);
|
||||
}
|
||||
|
||||
bool level::is_available(const position &pos, bool is_player) const {
|
||||
if (!map.is_available(pos))
|
||||
return false;
|
||||
|
||||
for (auto ch : elist)
|
||||
if (pos == ch->get_pos())
|
||||
for (size_t i = 0; i < elist.size(); ++i)
|
||||
if (pos == elist[i]->get_pos())
|
||||
return false;
|
||||
|
||||
if (!(enabled_features & FEATURE_WALK_OVER) && !is_player) {
|
||||
for (auto p : plist)
|
||||
if (pos == p->get_pos())
|
||||
for (size_t i = 0; i < plist.size(); ++i)
|
||||
if (pos == plist[i]->get_pos())
|
||||
return false;
|
||||
|
||||
for (auto g : glist)
|
||||
if (pos == g.pos)
|
||||
for (size_t i = 0; i < glist.size(); ++i)
|
||||
if (pos == glist[i].pos)
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -149,16 +149,16 @@ bool level::is_available_all(const position &pos) const {
|
||||
if (!map.is_available(pos))
|
||||
return false;
|
||||
|
||||
for (auto ch : elist)
|
||||
if (pos == ch->get_pos())
|
||||
for (size_t i = 0; i < elist.size(); ++i)
|
||||
if (pos == elist[i]->get_pos())
|
||||
return false;
|
||||
|
||||
for (auto p : plist)
|
||||
if (pos == p->get_pos())
|
||||
for (size_t i = 0; i < plist.size(); ++i)
|
||||
if (pos == plist[i]->get_pos())
|
||||
return false;
|
||||
|
||||
for (auto g : glist)
|
||||
if (pos == g.pos)
|
||||
for (size_t i = 0; i < glist.size(); ++i)
|
||||
if (pos == glist[i].pos)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
|
Reference in New Issue
Block a user