fixed segmentation fault when sorting enemies
This commit is contained in:
19
src/game.cc
19
src/game.cc
@ -41,17 +41,26 @@ void game::new_level() {
|
||||
rng, enabled_features));
|
||||
}
|
||||
|
||||
#include <algorithm>
|
||||
bool compare_characters(const character *a, const character *b) {
|
||||
return a->get_pos() < b->get_pos();
|
||||
enemy_list game::sort_enemies(const enemy_list &elist) {
|
||||
enemy_list result;
|
||||
result.reserve(elist.size());
|
||||
|
||||
for (auto enemy : elist) {
|
||||
result.push_back(enemy);
|
||||
|
||||
for (int i = result.size() - 1; i > 0 &&
|
||||
enemy->get_pos() < result[i - 1]->get_pos(); --i)
|
||||
std::swap(result[i], result[i - 1]);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
character *game::move_enemies() {
|
||||
if (the_world)
|
||||
return nullptr;
|
||||
|
||||
auto enemies = levels[curr_level]->get_elist();
|
||||
std::sort(enemies.begin(), enemies.end(), ::compare_characters);
|
||||
auto enemies = sort_enemies(levels[curr_level]->get_elist());
|
||||
|
||||
for (auto ch : enemies) {
|
||||
bool hostile = ch->get_race() == rmerchant ?
|
||||
|
Reference in New Issue
Block a user