Commit 3a7cbd17 authored by Alexey Hohlov's avatar Alexey Hohlov
Browse files

А теперь честное удаление объектов из списка.

Так как в списке хранятся указатели, то сначала надо удалить сам объект,
а потом уже можно и из списка убирать.
parent 788bd5fe
......@@ -52,10 +52,18 @@ void CMap::step_objects()
for (i = 0; i < cells_x; i++) {
for (j = 0; j < cells_y; j++) {
cells[i][j].statics.remove_if( [](IObjectStatic* s) {
s->step();
return s->destroyed();
} );
cells[i][j].statics.erase(
std::remove_if(cells[i][j].statics.begin(), cells[i][j].statics.end(),
[](IObjectStatic* s) {
s->step();
if (s->destroyed()) {
delete s;
return true;
}
return false;
}
), cells[i][j].statics.end()
);
}
}
......@@ -87,7 +95,18 @@ void CMap::step_objects()
}
}
dynamics.remove_if( [](IObjectDynamic* b) { return b->destroyed(); } );
dynamics.erase(
std::remove_if(dynamics.begin(), dynamics.end(),
[](IObjectDynamic* b) {
b->step();
if (b->destroyed()) {
delete b;
return true;
}
return false;
}
), dynamics.end()
);
}
void CMap::loadmap(string name)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment