diff options
author | Loek Le Blansch <loek@pipeframe.xyz> | 2025-01-08 15:24:09 +0100 |
---|---|---|
committer | Loek Le Blansch <loek@pipeframe.xyz> | 2025-01-08 15:24:21 +0100 |
commit | f22a282b7863d35928fa3290f964ce3be5c0dbc9 (patch) | |
tree | 09aa2d1d7b730154288b9496f141cf711cdfdecf /game/prefab/ZapperPoolScript.cpp | |
parent | 261a2cfd2bedafbc7fcf54e1b86adee206dea519 (diff) |
tweak zapper spawning logic
Diffstat (limited to 'game/prefab/ZapperPoolScript.cpp')
-rw-r--r-- | game/prefab/ZapperPoolScript.cpp | 23 |
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); |