diff options
| -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}); -} |