aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormax-001 <maxsmits21@kpnmail.nl>2024-12-17 11:57:25 +0100
committermax-001 <maxsmits21@kpnmail.nl>2024-12-17 11:57:25 +0100
commit24b415850da853496a6610e6fa00d4325b9a95c9 (patch)
tree31e1783b0ce12eb9ecfdb725f57f288e544b9c88
parent58dd5c74add6be4b4185b273291a30aec3f37fa5 (diff)
Added basic player with some physics
-rw-r--r--src/example/GameScene.cpp94
-rw-r--r--src/example/Hallway.cpp4
-rw-r--r--src/example/Start.cpp9
3 files changed, 103 insertions, 4 deletions
diff --git a/src/example/GameScene.cpp b/src/example/GameScene.cpp
index 8a0ec5c..76e5284 100644
--- a/src/example/GameScene.cpp
+++ b/src/example/GameScene.cpp
@@ -1,6 +1,11 @@
#include "GameScene.h"
#include "Background.h"
+#include "api/Animator.h"
+#include "api/Asset.h"
+#include "api/BoxCollider.h"
+#include "api/Transform.h"
+#include <cmath>
#include <crepe/api/BehaviorScript.h>
#include <crepe/api/Camera.h>
#include <crepe/api/Color.h>
@@ -8,6 +13,7 @@
#include <crepe/api/GameObject.h>
#include <crepe/api/Rigidbody.h>
#include <crepe/api/Script.h>
+#include <crepe/api/Sprite.h>
#include <crepe/types.h>
using namespace crepe;
@@ -33,18 +39,102 @@ private:
}
};
+class StartGame : public Script {
+public:
+ void update() {
+ Transform & player_transform
+ = this->get_components_by_name<Transform>("player").front();
+
+ if (player_transform.position.x == -310) {
+ Sprite & lamp_sprite = this->get_components_by_name<Sprite>("start_end").back();
+ lamp_sprite.active = true;
+ Sprite & hole_sprite = this->get_components_by_name<Sprite>("start_hole").front();
+ hole_sprite.active = true;
+ }
+
+ if (player_transform.position.x == -100) {
+ Animator & jetpack_stand_anim
+ = this->get_components_by_name<Animator>("start_begin").back();
+ jetpack_stand_anim.next_anim();
+ Sprite & jetpack_sprite = this->get_components_by_name<Sprite>("player").back();
+ jetpack_sprite.active = true;
+ }
+
+ if (player_transform.position.x == 150) {
+ Rigidbody & rb = this->get_components_by_name<Rigidbody>("camera").front();
+ rb.data.linear_velocity = vec2(100, 0);
+ }
+ }
+};
+
void GameScene::load_scene() {
Background background(*this);
- GameObject camera = new_object("camera", "camera", vec2(600, 0));
- camera.add_component<Camera>(ivec2(1700, 720), vec2(2000, 800),
+ GameObject camera = new_object("camera", "camera", vec2(250, 0));
+ camera.add_component<Camera>(ivec2(990, 720), vec2(1100, 800),
Camera::Data{
.bg_color = Color::RED,
});
camera.add_component<BehaviorScript>().set_script<MoveCameraScript>();
camera.add_component<Rigidbody>(Rigidbody::Data{
+ .linear_velocity = vec2(0, 0),
+ });
+
+ GameObject player = new_object("player", "player", vec2(-500, 200));
+ Asset player_body_asset{"asset/jetpack_joyride/barry/defaultBody.png"};
+ Sprite & player_body_sprite
+ = player.add_component<Sprite>(player_body_asset, Sprite::Data{
+ .sorting_in_layer = 10,
+ .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/jetpack_joyride/barry/defaultHead.png"};
+ Sprite & player_head_sprite
+ = player.add_component<Sprite>(player_head_asset, Sprite::Data{
+ .sorting_in_layer = 10,
+ .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/jetpack_joyride/barry/jetpackDefault.png"};
+ Sprite & player_jetpack_sprite = player.add_component<Sprite>(
+ player_jetpack_asset, Sprite::Data{
+ .sorting_in_layer = 10,
+ .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 = 1,
+ .body_type = Rigidbody::BodyType::DYNAMIC,
.linear_velocity = vec2(100, 0),
});
+ player.add_component<BoxCollider>(vec2(50, 50));
+
+ GameObject game_world = new_object("game_world", "game_world", vec2(0, 325));
+ game_world.add_component<Rigidbody>(Rigidbody::Data{
+ .body_type = Rigidbody::BodyType::STATIC,
+ });
+ game_world.add_component<BoxCollider>(vec2(INFINITY, 200));
+
+ GameObject start_game_scritp = new_object("start_game_script", "script", vec2(0, 0));
+ start_game_scritp.add_component<BehaviorScript>().set_script<StartGame>();
}
string GameScene::get_name() const { return "scene1"; }
diff --git a/src/example/Hallway.cpp b/src/example/Hallway.cpp
index c029acf..59d200f 100644
--- a/src/example/Hallway.cpp
+++ b/src/example/Hallway.cpp
@@ -21,8 +21,8 @@ float Hallway::create(Scene & scn, float begin_x, unsigned int sector_num,
begin_x += 600;
this->add_sector_number(begin, vec2(-200, 0), sector_num, sector_color);
- this->add_lamp(begin, vec2(-70, -120), 11);
- this->add_lamp(begin, vec2(30, -120), 9);
+ this->add_lamp(begin, vec2(330, -120), 11);
+ this->add_lamp(begin, vec2(430, -120), 9);
GameObject middle_1 = scn.new_object("hallway_middle", "background", vec2(begin_x, 0));
Asset middle_asset{"asset/jetpack_joyride/background/hallway/hallway1FG_2_TVOS.png"};
diff --git a/src/example/Start.cpp b/src/example/Start.cpp
index 2c46d34..846c34f 100644
--- a/src/example/Start.cpp
+++ b/src/example/Start.cpp
@@ -18,6 +18,14 @@ float Start::create(Scene & scn, float begin_x) {
.order_in_layer = 0,
.size = vec2(0, 800),
});
+ GameObject hole = scn.new_object("start_hole", "background", vec2(begin_x - 250, 140));
+ Asset hole_asset{"asset/jetpack_joyride/background/start/titleWallHole.png"};
+ Sprite & hole_sprite = hole.add_component<Sprite>(hole_asset, Sprite::Data{
+ .sorting_in_layer = 4,
+ .order_in_layer = 1,
+ .size = vec2(0, 200),
+ });
+ hole_sprite.active = false;
begin_x += 700;
this->add_table(begin, vec2(-150, 150));
@@ -54,6 +62,7 @@ void Start::add_lamp(GameObject & obj, vec2 offset, unsigned int fps) {
.size = vec2(0, 300),
.position_offset = offset - vec2(65, -55),
});
+ lamp_glow_sprite.active = false;
obj.add_component<Animator>(lamp_glow_sprite, ivec2(422, 384), uvec2(6, 1),
Animator::Data{
.fps = fps,