aboutsummaryrefslogtreecommitdiff
path: root/game/prefab/ZapperPoolScript.cpp
diff options
context:
space:
mode:
authorLoek Le Blansch <loek@pipeframe.xyz>2025-01-08 15:24:09 +0100
committerLoek Le Blansch <loek@pipeframe.xyz>2025-01-08 15:24:21 +0100
commitf22a282b7863d35928fa3290f964ce3be5c0dbc9 (patch)
tree09aa2d1d7b730154288b9496f141cf711cdfdecf /game/prefab/ZapperPoolScript.cpp
parent261a2cfd2bedafbc7fcf54e1b86adee206dea519 (diff)
tweak zapper spawning logic
Diffstat (limited to 'game/prefab/ZapperPoolScript.cpp')
-rw-r--r--game/prefab/ZapperPoolScript.cpp23
1 files changed, 10 insertions, 13 deletions
diff --git a/game/prefab/ZapperPoolScript.cpp b/game/prefab/ZapperPoolScript.cpp
index ac6ce96..168637c 100644
--- a/game/prefab/ZapperPoolScript.cpp
+++ b/game/prefab/ZapperPoolScript.cpp
@@ -30,33 +30,30 @@ void ZapperPoolScript::fixed_update(crepe::duration_t) {
if (zapper.transform.position.x < threshold)
zapper.set_active(false);
}
-
- if (i-- > 0) return;
- i = 200;
- queue_event<CreateZapperEvent>();
}
void ZapperPoolScript::spawn_random() {
OptionalRef<ZapperObject> zapper = this->get_next_zapper();
if (!zapper) return; // pool exhausted
- vec2 pos = {
- .x = camera_transform->position.x + camera_camera->viewport_size.x / 2 + OFFSCREEN_MARGIN,
- .y = Random::f(0.5, -0.5) * HALLWAY_HEIGHT,
- };
-
bool horizontal = Random::b();
+ vec2 pos;
float rotation, length;
+ pos.x = camera_transform->position.x + camera_camera->viewport_size.x / 2 + OFFSCREEN_MARGIN;
if (horizontal) {
rotation = 90;
length = Random::f(400, 200);
+ pos.y = Random::f(0.5, -0.5) * HALLWAY_HEIGHT;
+ // align zapper to right edge of camera
+ pos.x -= MAX_LENGTH - (length / 2);
} else {
rotation = 0;
- length = Random::f(200, 50);
- if (abs(pos.y) + length / 2 > HALLWAY_HEIGHT / 2) {
- // TODO: fix offset
- }
+ length = Random::f(200, 75);
+ // ensure zapper doesn't crash into ceiling or floor
+ pos.y = Random::f(0.5, -0.5) * (HALLWAY_HEIGHT - length);
+ // align zapper to right edge of camera
+ pos.x -= MAX_LENGTH;
}
zapper->place(pos, rotation, length);