From 0fb406e1b61a43558b29c1192a197cd56dcbfd18 Mon Sep 17 00:00:00 2001 From: Max-001 Date: Sat, 11 Jan 2025 11:17:17 +0100 Subject: Fix: Set fixed background --- game/PreviewScene.cpp | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/game/PreviewScene.cpp b/game/PreviewScene.cpp index 14a5560..e00170f 100644 --- a/game/PreviewScene.cpp +++ b/game/PreviewScene.cpp @@ -1,7 +1,10 @@ #include "PreviewScene.h" #include "Config.h" -#include "background/BackgroundSubScene.h" +#include "background/AquariumSubScene.h" +#include "background/ForestSubScene.h" +#include "background/HallwaySubScene.h" +#include "background/StartSubScene.h" #include "hud/HudScript.h" #include "hud/HudSubScene.h" #include "hud/SpeedScript.h" @@ -40,7 +43,20 @@ using namespace std; void PreviewScene::load_scene() { - BackgroundSubScene background(*this); + StartSubScene start; + HallwaySubScene hallway; + ForestSubScene forest; + AquariumSubScene aquarium; + + float begin_x = 400; + + begin_x = start.create(*this, begin_x); + + begin_x = hallway.create(*this, begin_x, 1, Color::YELLOW); + + begin_x = aquarium.create(*this, begin_x); + + begin_x = hallway.create(*this, begin_x, 2, Color::GREEN); GameObject camera = new_object("camera", "camera", vec2(650, 0)); camera.add_component( -- cgit v1.2.3 From 459044947bea485c4e006a62af0f5af0b7190d9d Mon Sep 17 00:00:00 2001 From: Max-001 Date: Sat, 11 Jan 2025 11:17:38 +0100 Subject: Fix: Set camera background to black --- game/PreviewScene.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/game/PreviewScene.cpp b/game/PreviewScene.cpp index e00170f..bc28192 100644 --- a/game/PreviewScene.cpp +++ b/game/PreviewScene.cpp @@ -62,7 +62,7 @@ void PreviewScene::load_scene() { camera.add_component( ivec2(990, 720), vec2(VIEWPORT_X, VIEWPORT_Y), Camera::Data { - .bg_color = Color::RED, + .bg_color = Color::BLACK, } ); -- cgit v1.2.3 From 2bc23c83489fe45af207559cbb8620b97fc73b35 Mon Sep 17 00:00:00 2001 From: Max-001 Date: Sat, 11 Jan 2025 11:21:17 +0100 Subject: Fix: Invert both body and head of NPC sprite --- game/preview/NpcScript.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/game/preview/NpcScript.cpp b/game/preview/NpcScript.cpp index 5a93c2b..86117d4 100644 --- a/game/preview/NpcScript.cpp +++ b/game/preview/NpcScript.cpp @@ -9,7 +9,7 @@ using namespace crepe; void NpcScript::fixed_update(duration_t dt) { auto & rb = this->get_component(); - auto & npc = this->get_component(); + auto npc = this->get_components(); auto & transform = this->get_component(); if (transform.position.x < 200) { @@ -20,8 +20,10 @@ void NpcScript::fixed_update(duration_t dt) { } if (rb.data.linear_velocity.x < 0) { - npc.data.flip = {true, false}; + npc.front().get().data.flip = {true, false}; + npc.back().get().data.flip = {true, false}; } else { - npc.data.flip = {false, false}; + npc.front().get().data.flip = {false, false}; + npc.back().get().data.flip = {false, false}; } } -- cgit v1.2.3 From d557cfd311a6239e579fad35e3684f8c0e170ce7 Mon Sep 17 00:00:00 2001 From: Max-001 Date: Sat, 11 Jan 2025 11:22:33 +0100 Subject: Fix: Player and NPS do not collide anymore --- game/preview/NpcSubScene.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/game/preview/NpcSubScene.cpp b/game/preview/NpcSubScene.cpp index c9ab5b6..9fddb78 100644 --- a/game/preview/NpcSubScene.cpp +++ b/game/preview/NpcSubScene.cpp @@ -57,7 +57,7 @@ NpcSubScene::NpcSubScene(Scene & scn) { .body_type = Rigidbody::BodyType::DYNAMIC, .linear_velocity = {-50, 0}, //.max_linear_velocity = 40, - .collision_layers = {COLL_LAY_BOT_TOP, COLL_LAY_PLAYER, 100}, + .collision_layers = {COLL_LAY_BOT_TOP, 100}, .collision_layer = COLL_LAY_PLAYER, }); -- cgit v1.2.3 From 46aec26cae3d2d405aac64e69bbba74944cd7a7b Mon Sep 17 00:00:00 2001 From: Max-001 Date: Sat, 11 Jan 2025 11:35:33 +0100 Subject: Fix: Made player much more responsive --- game/preview/PrevPlayerScript.cpp | 44 +++++++++++++++++++++++++++++++++++---- game/preview/PrevPlayerScript.h | 17 +++++++++++---- 2 files changed, 53 insertions(+), 8 deletions(-) diff --git a/game/preview/PrevPlayerScript.cpp b/game/preview/PrevPlayerScript.cpp index fce5c5a..0126bb2 100644 --- a/game/preview/PrevPlayerScript.cpp +++ b/game/preview/PrevPlayerScript.cpp @@ -21,10 +21,6 @@ bool PrevPlayerScript::key_pressed(const KeyPressEvent & ev) { this->body->data.flip = {false, false}; this->head->data.flip = {false, false}; break; - - case Keycode::SPACE: - this->get_component().data.linear_velocity.y = -move_speed; - break; case Keycode::D0: this->body_anim->set_anim(0); this->head_anim->set_anim(0); @@ -104,6 +100,8 @@ bool PrevPlayerScript::key_pressed(const KeyPressEvent & ev) { } void PrevPlayerScript::init() { + this->rb = get_component(); + auto animations = this->get_components(); body_anim = animations[0]; head_anim = animations[1]; @@ -115,12 +113,50 @@ void PrevPlayerScript::init() { subscribe([this](const KeyPressEvent & ev) -> bool { return this->key_pressed(ev); }); + subscribe([this](const KeyPressEvent & ev) -> bool { + if (ev.repeat) return false; + return this->on_key_down(ev); + }); + subscribe([this](const KeyReleaseEvent & ev) -> bool { + return this->on_key_up(ev); + }); }; void PrevPlayerScript::fixed_update(crepe::duration_t dt) { + if (this->get_key_state(Keycode::SPACE)) { + this->rb->add_force_linear( + vec2(0, -1) * (engine_gravity * PLAYER_GRAVITY_SCALE * dt.count()) + ); + } + auto & savemgr = this->get_save_manager(); const auto & pos = this->get_component().position; savemgr.set("player_x", pos.x); savemgr.set("player_y", pos.y); }; + +bool PrevPlayerScript::on_key_down(const KeyPressEvent & ev) { + if (ev.key == Keycode::SPACE) { + const vec2 UP = {0, -1}; + this->help_kick(UP); + } + return false; +} + +bool PrevPlayerScript::on_key_up(const KeyReleaseEvent & ev) { + if (ev.key == Keycode::SPACE) { + const vec2 DOWN = {0, 1}; + this->help_kick(DOWN); + } + return false; +} + +void PrevPlayerScript::help_kick(const vec2 & direction) { + // softly "kick" the player (at start/end of flight) + vec2 & velocity = this->rb->data.linear_velocity; + float kick_amount = std::min( + velocity.length() * PLAYER_HELP_KICK_SCALE, engine_gravity * PLAYER_HELP_KICK_MAX + ); + velocity += direction * kick_amount; +} diff --git a/game/preview/PrevPlayerScript.h b/game/preview/PrevPlayerScript.h index cc3184e..ae66449 100644 --- a/game/preview/PrevPlayerScript.h +++ b/game/preview/PrevPlayerScript.h @@ -1,10 +1,10 @@ - +#include +#include #include +#include #include -#include - -#include #include +#include class PrevPlayerScript : public crepe::Script { private: @@ -20,4 +20,13 @@ private: void init(); void fixed_update(crepe::duration_t dt); bool key_pressed(const crepe::KeyPressEvent & ev); + +private: + bool on_key_down(const crepe::KeyPressEvent & ev); + bool on_key_up(const crepe::KeyReleaseEvent & ev); + void help_kick(const crepe::vec2 & direction); + +private: + float & engine_gravity = crepe::Config::get_instance().physics.gravity; + crepe::OptionalRef rb; }; -- cgit v1.2.3 From 417b001a26a188f91289558d125988c5f853ddbe Mon Sep 17 00:00:00 2001 From: Max-001 Date: Sat, 11 Jan 2025 11:45:05 +0100 Subject: Fix: removed button Q and E --- game/preview/PrevPlayerScript.cpp | 6 ------ 1 file changed, 6 deletions(-) diff --git a/game/preview/PrevPlayerScript.cpp b/game/preview/PrevPlayerScript.cpp index 0126bb2..c63c1c8 100644 --- a/game/preview/PrevPlayerScript.cpp +++ b/game/preview/PrevPlayerScript.cpp @@ -68,12 +68,6 @@ bool PrevPlayerScript::key_pressed(const KeyPressEvent & ev) { case Keycode::P: this->get_component().play(); break; - case Keycode::Q: - this->get_components_by_name("camera").front().get().data.zoom -= 0.01; - break; - case Keycode::E: - this->get_components_by_name("camera").front().get().data.zoom += 0.01; - break; case Keycode::J: this->get_components_by_name("camera").front().get().position.x -= move_speed; -- cgit v1.2.3 From 0e1e5e9fa6c6cf37af983122243d230a320dfa7b Mon Sep 17 00:00:00 2001 From: Max-001 Date: Sat, 11 Jan 2025 12:09:04 +0100 Subject: Fix: Added audio track --- game/preview/PrevPlayerSubScene.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/game/preview/PrevPlayerSubScene.cpp b/game/preview/PrevPlayerSubScene.cpp index 9ff111c..56a434a 100644 --- a/game/preview/PrevPlayerSubScene.cpp +++ b/game/preview/PrevPlayerSubScene.cpp @@ -78,4 +78,5 @@ PrevPlayerSubScene::PrevPlayerSubScene(Scene & scn) { }); player.add_component(vec2(50, 50)); player.add_component().set_script(); + player.add_component(Asset {"asset/music/level.ogg"}).stop(); } -- cgit v1.2.3