diff options
Diffstat (limited to 'src/example')
-rw-r--r-- | src/example/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/example/game.cpp | 30 |
2 files changed, 17 insertions, 14 deletions
diff --git a/src/example/CMakeLists.txt b/src/example/CMakeLists.txt index 560e2bc..3ec5e43 100644 --- a/src/example/CMakeLists.txt +++ b/src/example/CMakeLists.txt @@ -20,4 +20,5 @@ add_example(asset_manager) add_example(savemgr) add_example(rendering_particle) add_example(gameloop) +add_example(game) diff --git a/src/example/game.cpp b/src/example/game.cpp index a557be7..f6b580a 100644 --- a/src/example/game.cpp +++ b/src/example/game.cpp @@ -18,17 +18,18 @@ using namespace std; class MyScript : public Script { static bool oncollision(const CollisionEvent& test) { - std::cout << "test collision: " << test.info.first.collider.game_object_id << std::endl; + Log::logf("Box {} script on_collision()", test.info.first.collider.game_object_id); return true; } void init() { - EventManager::get_instance().subscribe<CollisionEvent>(oncollision, this->get_game_object_id()); + EventManager::get_instance().subscribe<CollisionEvent>(oncollision, 0); } void update() { // Retrieve component from the same GameObject this script is on } }; + class ConcreteScene1 : public Scene { public: using Scene::Scene; @@ -37,11 +38,11 @@ public: ComponentManager & mgr = this->component_manager; Color color(0, 0, 0, 0); - double screen_size_width = 640; - double screen_size_height = 480; - double world_collider = 1000; + float screen_size_width = 640; + float screen_size_height = 480; + float world_collider = 1000; //define playable world - GameObject world = mgr.new_object("Name", "Tag", Vector2{screen_size_width/2, screen_size_height/2}, 0, 1); + GameObject world = mgr.new_object("Name", "Tag", vec2{screen_size_width/2, screen_size_height/2}, 0, 1); world.add_component<Rigidbody>(Rigidbody::Data{ .mass = 0, .gravity_scale = 0, @@ -51,13 +52,13 @@ public: .bounce = false, .offset = {0,0} }); - world.add_component<BoxCollider>(Vector2{0, 0-(screen_size_height/2+world_collider/2)}, world_collider, world_collider);; // Top - world.add_component<BoxCollider>(Vector2{0, screen_size_height/2+world_collider/2}, world_collider, world_collider); // Bottom - world.add_component<BoxCollider>(Vector2{0-(screen_size_width/2+world_collider/2), 0}, world_collider, world_collider); // Left - world.add_component<BoxCollider>(Vector2{screen_size_width/2+world_collider/2, 0}, world_collider, world_collider); // right + world.add_component<BoxCollider>(vec2{0, 0-(screen_size_height/2+world_collider/2)}, world_collider, world_collider);; // Top + world.add_component<BoxCollider>(vec2{0, screen_size_height/2+world_collider/2}, world_collider, world_collider); // Bottom + world.add_component<BoxCollider>(vec2{0-(screen_size_width/2+world_collider/2), 0}, world_collider, world_collider); // Left + world.add_component<BoxCollider>(vec2{screen_size_width/2+world_collider/2, 0}, world_collider, world_collider); // right - GameObject game_object1 = mgr.new_object("Name", "Tag", Vector2{screen_size_width/2, screen_size_height/2}, 0, 1); + GameObject game_object1 = mgr.new_object("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, @@ -69,20 +70,21 @@ public: .elastisity = 1, .offset = {0,0}, }); - game_object1.add_component<BoxCollider>(Vector2{0, 0}, 20, 20); + game_object1.add_component<BoxCollider>(vec2{0, 0}, 20, 20); game_object1.add_component<BehaviorScript>().set_script<MyScript>(); game_object1.add_component<Sprite>( make_shared<Texture>("/home/jaro/crepe/asset/texture/green_square.png"), color, FlipSettings{true, true}); game_object1.add_component<Camera>(Color::WHITE); } + + string get_name() const { return "scene1"; } }; int main(int argc, char * argv[]) { LoopManager gameloop; - gameloop.scene_manager.add_scene<ConcreteScene1>("scene1"); - gameloop.scene_manager.load_next_scene(); + gameloop.add_scene<ConcreteScene1>(); gameloop.start(); return 0; } |