add cancel parameter for Spawner::for_each

This commit is contained in:
2025-12-04 10:30:05 -05:00
parent eec22cd791
commit 5abfedb205
2 changed files with 7 additions and 4 deletions

View File

@@ -164,10 +164,11 @@ void update_tears() {
}
}
enemy_spawner.for_each([&center, &active](auto &enemy) {
enemy_spawner.for_each([&center, &active](auto &enemy, auto& cancel) {
if (enemy.alive() && CheckCollisionCircles(center, player.tear_radius, enemy.center, enemy.radius)) {
active = false;
if (--enemy.hp == 0) score++;
cancel = true;
}
});
@@ -265,7 +266,7 @@ int main() {
}
}
enemy_spawner.for_each([now](Enemy &enemy) {
enemy_spawner.for_each([now](Enemy &enemy, auto& cancel) {
if (enemy.alive()) {
enemy.center = Vector2MoveTowards(enemy.center, player.center(), enemy.speed);
const Color enemy_color = enemy.hp == 1 ? PINK : enemy.hp == 2 ? ORANGE : RED;
@@ -285,7 +286,7 @@ int main() {
}
});
item_spawner.for_each([&item_pickup_text_buffer, now, &item_last_picked_up](Item &item) {
item_spawner.for_each([&item_pickup_text_buffer, now, &item_last_picked_up](Item &item, auto& cancel) {
if (!item.active) return;
DrawCircleV(item.center, item.radius, item.color());

View File

@@ -24,7 +24,9 @@ struct Spawner {
void for_each(F&& func) {
std::lock_guard lock{mutex};
for (auto& value : values) {
func(value);
bool cancel = false;
func(value, cancel);
if (cancel) break;;
}
}