aboutsummaryrefslogtreecommitdiff
path: root/src/example/game.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/example/game.cpp')
-rw-r--r--src/example/game.cpp53
1 files changed, 46 insertions, 7 deletions
diff --git a/src/example/game.cpp b/src/example/game.cpp
index a8d6d1b..ade90c9 100644
--- a/src/example/game.cpp
+++ b/src/example/game.cpp
@@ -1,8 +1,10 @@
+#include "manager/ComponentManager.h"
+#include "api/Scene.h"
+#include "manager/Mediator.h"
#include <crepe/api/BoxCollider.h>
#include <crepe/api/Camera.h>
#include <crepe/api/Color.h>
#include <crepe/api/Event.h>
-#include <crepe/api/EventManager.h>
#include <crepe/api/GameObject.h>
#include <crepe/api/LoopManager.h>
#include <crepe/api/Rigidbody.h>
@@ -21,21 +23,58 @@ class MyScript : public Script {
Log::logf("Box {} script on_collision()", test.info.this_collider.game_object_id);
return true;
}
+ bool keypressed(const KeyPressEvent & test) {
+ Log::logf("Box script keypressed()");
+ switch (test.key) {
+ case Keycode::A:
+ {
+ Transform & tf = this->get_component<Transform>();
+ tf.position.x -= 1;
+ break;
+ }
+ case Keycode::W:
+ {
+ Transform & tf = this->get_component<Transform>();
+ tf.position.y -= 1;
+ break;
+ }
+ case Keycode::S:
+ {
+ Transform & tf = this->get_component<Transform>();
+ tf.position.y += 1;
+ break;
+ }
+ case Keycode::D:
+ {
+ Transform & tf = this->get_component<Transform>();
+ tf.position.x += 1;
+ break;
+ }
+ default:
+ break;
+ }
+ return false;
+ }
+
void init() {
- subscribe<CollisionEvent>(
- [this](const CollisionEvent & ev) -> bool { return this->oncollision(ev); });
+ Log::logf("init");
+ subscribe<CollisionEvent>([this](const CollisionEvent & ev) -> bool { return this->oncollision(ev); });
+ subscribe<KeyPressEvent>([this](const KeyPressEvent & ev) -> bool { return this->keypressed(ev); });
}
void update() {
// Retrieve component from the same GameObject this script is on
}
+
};
class ConcreteScene1 : public Scene {
public:
using Scene::Scene;
-
+
void load_scene() {
- ComponentManager & mgr = this->component_manager;
+
+ Mediator & m = this->mediator;
+ ComponentManager & mgr = m.component_manager;
Color color(0, 0, 0, 255);
float screen_size_width = 640;
@@ -68,9 +107,9 @@ public:
"Name", "Tag", vec2{screen_size_width / 2, screen_size_height / 2}, 0, 1);
game_object1.add_component<Rigidbody>(Rigidbody::Data{
.mass = 1,
- .gravity_scale = 0.01,
+ .gravity_scale = 0,
.body_type = Rigidbody::BodyType::DYNAMIC,
- .linear_velocity = {1, 1},
+ .linear_velocity = {0, 0},
.constraints = {0, 0, 0},
.elastisity_coefficient = 1,
.offset = {0, 0},