diff options
author | Loek Le Blansch <loek@pipeframe.xyz> | 2025-01-07 09:43:53 +0100 |
---|---|---|
committer | Loek Le Blansch <loek@pipeframe.xyz> | 2025-01-07 09:43:53 +0100 |
commit | 743cdd5b2fe175605352c337396c3d70dac66247 (patch) | |
tree | 538c9713403f8746d629448190dc69305a15e82a | |
parent | 8620f57f7101b2090add89330e74854b77161d3f (diff) |
roll back player controller
-rw-r--r-- | game/CMakeLists.txt | 2 | ||||
-rw-r--r-- | game/GameScene.cpp | 4 | ||||
-rw-r--r-- | game/PlayerScript.cpp | 11 | ||||
-rw-r--r-- | game/PlayerScript.h (renamed from game/prefab/PlayerScript.h) | 8 | ||||
-rw-r--r-- | game/PlayerSubScene.cpp | 76 | ||||
-rw-r--r-- | game/PlayerSubScene.h | 10 | ||||
-rw-r--r-- | game/prefab/CMakeLists.txt | 2 | ||||
-rw-r--r-- | game/prefab/PlayerObject.cpp | 71 | ||||
-rw-r--r-- | game/prefab/PlayerObject.h | 30 | ||||
-rw-r--r-- | game/prefab/PlayerScript.cpp | 13 |
10 files changed, 101 insertions, 126 deletions
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<BehaviorScript>().set_script<MoveCameraManualyScript>(); camera.add_component<Rigidbody>(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>(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 <crepe/api/Rigidbody.h> + +using namespace crepe; +using namespace std; + +void PlayerScript::fixed_update(crepe::duration_t dt) { + Rigidbody & rb = this->get_components_by_name<Rigidbody>("player").front(); + if (this->get_key_state(Keycode::SPACE)) rb.add_force_linear(vec2(0, -10)); +} diff --git a/game/prefab/PlayerScript.h b/game/PlayerScript.h index cc0f0aa..84c4f7f 100644 --- a/game/prefab/PlayerScript.h +++ b/game/PlayerScript.h @@ -2,15 +2,7 @@ #include <crepe/api/Script.h> -#include "PlayerObject.h" - class PlayerScript : public crepe::Script { public: - PlayerScript(const PlayerObject & player); - -protected: void fixed_update(crepe::duration_t dt); - -protected: - PlayerObject player; }; 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 <crepe/api/Animator.h> +#include <crepe/api/GameObject.h> +#include <crepe/api/Scene.h> +#include <crepe/api/Script.h> +#include <crepe/api/Sprite.h> + +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<Sprite>( + player_body_asset, + Sprite::Data { + .sorting_in_layer = SORT_IN_LAY_PLAYER, + .order_in_layer = 0, + .size = vec2(0, 50), + } + ); + player.add_component<Animator>( + 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<Sprite>( + 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<Animator>( + 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<Sprite>( + 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<Animator>( + player_jetpack_sprite, ivec2(32, 44), uvec2(4, 4), + Animator::Data { + .fps = 5, + .looping = true, + } + ); + player.add_component<Rigidbody>(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<BoxCollider>(vec2(50, 50)); + player.add_component<BehaviorScript>().set_script<PlayerScript>().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<Sprite>( - 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<Sprite>( - 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<Sprite>( - 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<Animator>( - sprite.body, ivec2(32, 32), uvec2(4, 8), - Animator::Data { - .fps = 5, - .looping = true, - } - ), - .head = add_component<Animator>( - sprite.head, ivec2(32, 32), uvec2(4, 8), - Animator::Data { - .fps = 5, - .looping = true, - } - ), - .jetpack = add_component<Animator>( - sprite.jetpack, ivec2(32, 44), uvec2(4, 4), - Animator::Data { - .fps = 5, - .looping = true, - } - ), - }, - body(add_component<Rigidbody>(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<BoxCollider>(vec2(50, 50))), - controller(add_component<BehaviorScript>().set_script<PlayerScript>(*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 <crepe/api/Animator.h> -#include <crepe/api/BehaviorScript.h> -#include <crepe/api/BoxCollider.h> -#include <crepe/api/GameObject.h> -#include <crepe/api/Rigidbody.h> -#include <crepe/api/Sprite.h> - -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 <cassert> -#include <crepe/api/Rigidbody.h> - -#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}); -} |