From f22a282b7863d35928fa3290f964ce3be5c0dbc9 Mon Sep 17 00:00:00 2001 From: Loek Le Blansch Date: Wed, 8 Jan 2025 15:24:09 +0100 Subject: tweak zapper spawning logic --- game/prefab/ZapperObject.cpp | 3 --- game/prefab/ZapperPoolScript.cpp | 23 ++++++++++------------- game/prefab/ZapperPoolScript.h | 3 ++- 3 files changed, 12 insertions(+), 17 deletions(-) diff --git a/game/prefab/ZapperObject.cpp b/game/prefab/ZapperObject.cpp index 0a290e0..6139d53 100644 --- a/game/prefab/ZapperObject.cpp +++ b/game/prefab/ZapperObject.cpp @@ -81,12 +81,9 @@ ZapperObject::ZapperObject(crepe::GameObject && base) })}, collider {add_component(vec2(0, 0))} { this->set_active(false); - Log::logf(Log::DEBUG, "Creating zapper"); } void ZapperObject::place(const crepe::vec2 & position, float rotation, float length) { - Log::logf(Log::DEBUG, "Placing zapper [position = {}, rotation = {}, length = {}]", position, rotation, length); - this->transform.position = position; this->transform.rotation = rotation; 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(); } void ZapperPoolScript::spawn_random() { OptionalRef 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); diff --git a/game/prefab/ZapperPoolScript.h b/game/prefab/ZapperPoolScript.h index 6aee8b2..dd60071 100644 --- a/game/prefab/ZapperPoolScript.h +++ b/game/prefab/ZapperPoolScript.h @@ -28,6 +28,7 @@ private: void spawn_random(); private: - static constexpr float OFFSCREEN_MARGIN = 40; + static constexpr float MAX_LENGTH = 400; + static constexpr float OFFSCREEN_MARGIN = 50 + MAX_LENGTH; }; -- cgit v1.2.3 From 12cf43dd062f41af226e0ac038b2f2838391015f Mon Sep 17 00:00:00 2001 From: Loek Le Blansch Date: Wed, 8 Jan 2025 15:24:38 +0100 Subject: `make format` --- game/Config.h | 3 +-- game/Random.cpp | 5 +---- game/Random.h | 1 - game/menus/mainmenu/ITransitionScript.cpp | 2 +- game/menus/shop/ShopMenuScene.cpp | 3 +-- game/prefab/ZapperObject.cpp | 1 - game/prefab/ZapperPoolScript.cpp | 12 ++++++------ game/prefab/ZapperPoolScript.h | 1 - game/prefab/ZapperPoolSubScene.cpp | 5 ++--- game/prefab/ZapperPoolSubScene.h | 4 ++-- src/crepe/api/Vector2.hpp | 4 ++-- 11 files changed, 16 insertions(+), 25 deletions(-) diff --git a/game/Config.h b/game/Config.h index 64f2828..580e9ec 100644 --- a/game/Config.h +++ b/game/Config.h @@ -58,5 +58,4 @@ static constexpr const char * PLAYER_NAME = "player"; static constexpr int PLAYER_SPEED = 7500; // In game units static constexpr int PLAYER_GRAVITY_SCALE = 60; // In game units -static constexpr const char* CAMERA_NAME = "camera"; - +static constexpr const char * CAMERA_NAME = "camera"; diff --git a/game/Random.cpp b/game/Random.cpp index 821ddc8..64cf1f3 100644 --- a/game/Random.cpp +++ b/game/Random.cpp @@ -26,7 +26,4 @@ unsigned Random::u(unsigned upper, unsigned lower) { return x + lower; } -bool Random::b() { - return rand() % 2; -} - +bool Random::b() { return rand() % 2; } diff --git a/game/Random.h b/game/Random.h index 4a1108a..94f98d2 100644 --- a/game/Random.h +++ b/game/Random.h @@ -8,4 +8,3 @@ public: static unsigned u(unsigned upper, unsigned lower = 0); static bool b(); }; - diff --git a/game/menus/mainmenu/ITransitionScript.cpp b/game/menus/mainmenu/ITransitionScript.cpp index 3e51a90..54b0875 100644 --- a/game/menus/mainmenu/ITransitionScript.cpp +++ b/game/menus/mainmenu/ITransitionScript.cpp @@ -1,8 +1,8 @@ #include "ITransitionScript.h" #include "MainMenuConfig.h" -#include "../MenusConfig.h" #include "../../Config.h" +#include "../MenusConfig.h" #include #include diff --git a/game/menus/shop/ShopMenuScene.cpp b/game/menus/shop/ShopMenuScene.cpp index f4d5e76..d4542ba 100644 --- a/game/menus/shop/ShopMenuScene.cpp +++ b/game/menus/shop/ShopMenuScene.cpp @@ -1,11 +1,10 @@ #include "ShopMenuScene.h" +#include "../../Config.h" #include "../BannerSubScene.h" #include "../ButtonSubScene.h" #include "../MenusConfig.h" -#include "../BannerSubScene.h" -#include "../../Config.h" #include #include diff --git a/game/prefab/ZapperObject.cpp b/game/prefab/ZapperObject.cpp index 6139d53..24bbbd2 100644 --- a/game/prefab/ZapperObject.cpp +++ b/game/prefab/ZapperObject.cpp @@ -116,4 +116,3 @@ void ZapperObject::set_active(bool active) { this->active = active; } - diff --git a/game/prefab/ZapperPoolScript.cpp b/game/prefab/ZapperPoolScript.cpp index 168637c..b832ddd 100644 --- a/game/prefab/ZapperPoolScript.cpp +++ b/game/prefab/ZapperPoolScript.cpp @@ -23,23 +23,24 @@ void ZapperPoolScript::init() { } void ZapperPoolScript::fixed_update(crepe::duration_t) { - float threshold = camera_transform->position.x - camera_camera->viewport_size.x / 2 - OFFSCREEN_MARGIN; + float threshold + = camera_transform->position.x - camera_camera->viewport_size.x / 2 - OFFSCREEN_MARGIN; for (ZapperObject & zapper : this->pool) { if (!zapper.active) continue; - if (zapper.transform.position.x < threshold) - zapper.set_active(false); + if (zapper.transform.position.x < threshold) zapper.set_active(false); } } void ZapperPoolScript::spawn_random() { OptionalRef zapper = this->get_next_zapper(); if (!zapper) return; // pool exhausted - + bool horizontal = Random::b(); vec2 pos; float rotation, length; - pos.x = camera_transform->position.x + camera_camera->viewport_size.x / 2 + OFFSCREEN_MARGIN; + pos.x + = camera_transform->position.x + camera_camera->viewport_size.x / 2 + OFFSCREEN_MARGIN; if (horizontal) { rotation = 90; @@ -67,4 +68,3 @@ OptionalRef ZapperPoolScript::get_next_zapper() { } return {}; } - diff --git a/game/prefab/ZapperPoolScript.h b/game/prefab/ZapperPoolScript.h index dd60071..2208c80 100644 --- a/game/prefab/ZapperPoolScript.h +++ b/game/prefab/ZapperPoolScript.h @@ -31,4 +31,3 @@ private: static constexpr float MAX_LENGTH = 400; static constexpr float OFFSCREEN_MARGIN = 50 + MAX_LENGTH; }; - diff --git a/game/prefab/ZapperPoolSubScene.cpp b/game/prefab/ZapperPoolSubScene.cpp index e341090..8422b8c 100644 --- a/game/prefab/ZapperPoolSubScene.cpp +++ b/game/prefab/ZapperPoolSubScene.cpp @@ -1,13 +1,13 @@ #include -#include "ZapperPoolSubScene.h" #include "ZapperPoolScript.h" +#include "ZapperPoolSubScene.h" using namespace crepe; using namespace std; ZapperPoolSubScene::ZapperPoolSubScene(Scene & scene) - : controller { scene.new_object("controller") } { + : controller {scene.new_object("controller")} { Log::logf(Log::DEBUG, "Building zapper pool..."); vector pool; @@ -16,4 +16,3 @@ ZapperPoolSubScene::ZapperPoolSubScene(Scene & scene) BehaviorScript & behavior = this->controller.add_component(); behavior.set_script(std::move(pool)); } - diff --git a/game/prefab/ZapperPoolSubScene.h b/game/prefab/ZapperPoolSubScene.h index f930e22..6f6e297 100644 --- a/game/prefab/ZapperPoolSubScene.h +++ b/game/prefab/ZapperPoolSubScene.h @@ -1,8 +1,8 @@ #pragma once -#include -#include #include +#include +#include #include class CreateZapperEvent : public crepe::Event {}; diff --git a/src/crepe/api/Vector2.hpp b/src/crepe/api/Vector2.hpp index e2f96ed..30441d2 100644 --- a/src/crepe/api/Vector2.hpp +++ b/src/crepe/api/Vector2.hpp @@ -180,7 +180,7 @@ Vector2 Vector2::rotate(float deg) const { } // namespace crepe template -std::format_context::iterator std::formatter>::format(crepe::Vector2 vec, format_context & ctx) const { +std::format_context::iterator +std::formatter>::format(crepe::Vector2 vec, format_context & ctx) const { return formatter::format(std::format("{{{}, {}}}", vec.x, vec.y), ctx); } - -- cgit v1.2.3