From 743cdd5b2fe175605352c337396c3d70dac66247 Mon Sep 17 00:00:00 2001 From: Loek Le Blansch Date: Tue, 7 Jan 2025 09:43:53 +0100 Subject: roll back player controller --- game/CMakeLists.txt | 2 ++ game/GameScene.cpp | 4 +-- game/PlayerScript.cpp | 11 +++++++ game/PlayerScript.h | 8 +++++ game/PlayerSubScene.cpp | 76 ++++++++++++++++++++++++++++++++++++++++++++ game/PlayerSubScene.h | 10 ++++++ game/prefab/CMakeLists.txt | 2 -- game/prefab/PlayerObject.cpp | 71 ----------------------------------------- game/prefab/PlayerObject.h | 30 ----------------- game/prefab/PlayerScript.cpp | 13 -------- game/prefab/PlayerScript.h | 16 ---------- 11 files changed, 109 insertions(+), 134 deletions(-) create mode 100644 game/PlayerScript.cpp create mode 100644 game/PlayerScript.h create mode 100644 game/PlayerSubScene.cpp create mode 100644 game/PlayerSubScene.h delete mode 100644 game/prefab/PlayerObject.cpp delete mode 100644 game/prefab/PlayerObject.h delete mode 100644 game/prefab/PlayerScript.cpp delete mode 100644 game/prefab/PlayerScript.h diff --git a/game/CMakeLists.txt b/game/CMakeLists.txt index a149487..32d7085 100644 --- a/game/CMakeLists.txt +++ b/game/CMakeLists.txt @@ -15,6 +15,8 @@ target_sources(main PUBLIC GameScene.cpp MoveCameraManualyScript.cpp StartGameScript.cpp + PlayerScript.cpp + PlayerSubScene.cpp main.cpp ) diff --git a/game/GameScene.cpp b/game/GameScene.cpp index b287763..71612e3 100644 --- a/game/GameScene.cpp +++ b/game/GameScene.cpp @@ -20,7 +20,7 @@ #include "StartGameScript.h" #include "background/BackgroundSubScene.h" -#include "prefab/PlayerObject.h" +#include "PlayerSubScene.h" #include "prefab/ZapperObject.h" using namespace crepe; @@ -41,7 +41,7 @@ void GameScene::load_scene() { camera.add_component().set_script(); camera.add_component(Rigidbody::Data {}); - PlayerObject {new_object("player", "player", vec2(-100, 200))}; + PlayerSubScene player(*this); GameObject floor = new_object("floor", "game_world", vec2(0, 325)); floor.add_component(Rigidbody::Data { diff --git a/game/PlayerScript.cpp b/game/PlayerScript.cpp new file mode 100644 index 0000000..1c388f5 --- /dev/null +++ b/game/PlayerScript.cpp @@ -0,0 +1,11 @@ +#include "PlayerScript.h" + +#include + +using namespace crepe; +using namespace std; + +void PlayerScript::fixed_update(crepe::duration_t dt) { + Rigidbody & rb = this->get_components_by_name("player").front(); + if (this->get_key_state(Keycode::SPACE)) rb.add_force_linear(vec2(0, -10)); +} diff --git a/game/PlayerScript.h b/game/PlayerScript.h new file mode 100644 index 0000000..84c4f7f --- /dev/null +++ b/game/PlayerScript.h @@ -0,0 +1,8 @@ +#pragma once + +#include + +class PlayerScript : public crepe::Script { +public: + void fixed_update(crepe::duration_t dt); +}; diff --git a/game/PlayerSubScene.cpp b/game/PlayerSubScene.cpp new file mode 100644 index 0000000..00b7810 --- /dev/null +++ b/game/PlayerSubScene.cpp @@ -0,0 +1,76 @@ +#include "PlayerSubScene.h" +#include "Config.h" +#include "PlayerScript.h" + +#include +#include +#include +#include +#include + +using namespace crepe; +using namespace std; + +PlayerSubScene::PlayerSubScene(Scene & scn) { + GameObject player = scn.new_object("player", "player", vec2(-100, 200)); + Asset player_body_asset {"asset/barry/defaultBody.png"}; + Sprite & player_body_sprite = player.add_component( + player_body_asset, + Sprite::Data { + .sorting_in_layer = SORT_IN_LAY_PLAYER, + .order_in_layer = 0, + .size = vec2(0, 50), + } + ); + player.add_component( + player_body_sprite, ivec2(32, 32), uvec2(4, 8), + Animator::Data { + .fps = 5, + .looping = true, + } + ); + Asset player_head_asset {"asset/barry/defaultHead.png"}; + Sprite & player_head_sprite = player.add_component( + player_head_asset, + Sprite::Data { + .sorting_in_layer = SORT_IN_LAY_PLAYER, + .order_in_layer = 1, + .size = vec2(0, 50), + .position_offset = vec2(0, -20), + } + ); + player.add_component( + player_head_sprite, ivec2(32, 32), uvec2(4, 8), + Animator::Data { + .fps = 5, + .looping = true, + } + ); + Asset player_jetpack_asset {"asset/barry/jetpackDefault.png"}; + Sprite & player_jetpack_sprite = player.add_component( + player_jetpack_asset, + Sprite::Data { + .sorting_in_layer = SORT_IN_LAY_PLAYER, + .order_in_layer = 2, + .size = vec2(0, 60), + .position_offset = vec2(-20, 0), + } + ); + player_jetpack_sprite.active = false; + player.add_component( + player_jetpack_sprite, ivec2(32, 44), uvec2(4, 4), + Animator::Data { + .fps = 5, + .looping = true, + } + ); + player.add_component(Rigidbody::Data { + .gravity_scale = 20, + .body_type = Rigidbody::BodyType::DYNAMIC, + .linear_velocity = vec2(100, 0), + .collision_layers = {COLL_LAY_BOT_TOP}, + .collision_layer = COLL_LAY_PLAYER, + }); + player.add_component(vec2(50, 50)); + player.add_component().set_script().active = false; +} diff --git a/game/PlayerSubScene.h b/game/PlayerSubScene.h new file mode 100644 index 0000000..bf94c32 --- /dev/null +++ b/game/PlayerSubScene.h @@ -0,0 +1,10 @@ +#pragma once + +namespace crepe { +class Scene; +} + +class PlayerSubScene { +public: + PlayerSubScene(crepe::Scene & scn); +}; diff --git a/game/prefab/CMakeLists.txt b/game/prefab/CMakeLists.txt index 5585a32..5f8ea6c 100644 --- a/game/prefab/CMakeLists.txt +++ b/game/prefab/CMakeLists.txt @@ -1,6 +1,4 @@ target_sources(main PUBLIC - PlayerObject.cpp - PlayerScript.cpp ZapperObject.cpp ) diff --git a/game/prefab/PlayerObject.cpp b/game/prefab/PlayerObject.cpp deleted file mode 100644 index 2d48bf8..0000000 --- a/game/prefab/PlayerObject.cpp +++ /dev/null @@ -1,71 +0,0 @@ -#include "PlayerObject.h" -#include "Config.h" -#include "PlayerScript.h" - -using namespace crepe; - -PlayerObject::PlayerObject(crepe::GameObject && base) - : GameObject(std::move(base)), - sprite { - .body = add_component( - Asset {"asset/barry/defaultBody.png"}, - Sprite::Data { - .sorting_in_layer = SORT_IN_LAY_PLAYER, - .order_in_layer = 0, - .size = vec2(0, 50), - } - ), - .head = add_component( - Asset {"asset/barry/defaultHead.png"}, - Sprite::Data { - .sorting_in_layer = SORT_IN_LAY_PLAYER, - .order_in_layer = 1, - .size = vec2(0, 50), - .position_offset = vec2(0, -20), - } - ), - .jetpack = add_component( - Asset {"asset/barry/jetpackDefault.png"}, - Sprite::Data { - .sorting_in_layer = SORT_IN_LAY_PLAYER, - .order_in_layer = 2, - .size = vec2(0, 60), - .position_offset = vec2(-20, 0), - } - ) - }, - animator { - .body = add_component( - sprite.body, ivec2(32, 32), uvec2(4, 8), - Animator::Data { - .fps = 5, - .looping = true, - } - ), - .head = add_component( - sprite.head, ivec2(32, 32), uvec2(4, 8), - Animator::Data { - .fps = 5, - .looping = true, - } - ), - .jetpack = add_component( - sprite.jetpack, ivec2(32, 44), uvec2(4, 4), - Animator::Data { - .fps = 5, - .looping = true, - } - ), - }, - body(add_component(Rigidbody::Data { - .gravity_scale = 20, - .body_type = Rigidbody::BodyType::DYNAMIC, - .linear_velocity = vec2(100, 0), - .collision_layers = {COLL_LAY_BOT_TOP}, - .collision_layer = COLL_LAY_PLAYER, - })), - collider(add_component(vec2(50, 50))), - controller(add_component().set_script(*this)) { - sprite.jetpack.active = false; - controller.active = false; -} diff --git a/game/prefab/PlayerObject.h b/game/prefab/PlayerObject.h deleted file mode 100644 index a44d367..0000000 --- a/game/prefab/PlayerObject.h +++ /dev/null @@ -1,30 +0,0 @@ -#pragma once - -#include -#include -#include -#include -#include -#include - -class PlayerObject : public crepe::GameObject { -public: - PlayerObject(crepe::GameObject &&); - -public: - struct { - crepe::Sprite & body; - crepe::Sprite & head; - crepe::Sprite & jetpack; - } sprite; - - struct { - crepe::Animator & body; - crepe::Animator & head; - crepe::Animator & jetpack; - } animator; - - crepe::Rigidbody & body; - crepe::BoxCollider & collider; - crepe::BehaviorScript & controller; -}; diff --git a/game/prefab/PlayerScript.cpp b/game/prefab/PlayerScript.cpp deleted file mode 100644 index 3d06476..0000000 --- a/game/prefab/PlayerScript.cpp +++ /dev/null @@ -1,13 +0,0 @@ -#include -#include - -#include "PlayerScript.h" - -using namespace crepe; -using namespace std; - -PlayerScript::PlayerScript(const PlayerObject & player) : player(player) {} - -void PlayerScript::fixed_update(crepe::duration_t dt) { - if (this->get_key_state(Keycode::SPACE)) player.body.add_force_linear({0, -10}); -} diff --git a/game/prefab/PlayerScript.h b/game/prefab/PlayerScript.h deleted file mode 100644 index cc0f0aa..0000000 --- a/game/prefab/PlayerScript.h +++ /dev/null @@ -1,16 +0,0 @@ -#pragma once - -#include - -#include "PlayerObject.h" - -class PlayerScript : public crepe::Script { -public: - PlayerScript(const PlayerObject & player); - -protected: - void fixed_update(crepe::duration_t dt); - -protected: - PlayerObject player; -}; -- cgit v1.2.3