diff options
Diffstat (limited to 'src/example')
-rw-r--r-- | src/example/AITest.cpp | 29 | ||||
-rw-r--r-- | src/example/CMakeLists.txt | 2 | ||||
-rw-r--r-- | src/example/asset_manager.cpp | 36 | ||||
-rw-r--r-- | src/example/game.cpp | 4 | ||||
-rw-r--r-- | src/example/rendering_particle.cpp | 32 | ||||
-rw-r--r-- | src/example/savemgr.cpp | 44 |
6 files changed, 38 insertions, 109 deletions
diff --git a/src/example/AITest.cpp b/src/example/AITest.cpp index d12a99a..f4efc9f 100644 --- a/src/example/AITest.cpp +++ b/src/example/AITest.cpp @@ -1,5 +1,3 @@ -#include <SDL2/SDL_timer.h> -#include <chrono> #include <crepe/api/AI.h> #include <crepe/api/BehaviorScript.h> #include <crepe/api/Camera.h> @@ -50,23 +48,30 @@ public: GameObject game_object2 = mgr.new_object("", "", vec2{0, 0}, 0, 1); Texture img = Texture("asset/texture/test_ap43.png"); - game_object1.add_component<Sprite>(img, Color::MAGENTA, - Sprite::FlipSettings{false, false}, 1, 1, 195); - AI & ai = game_object1.add_component<AI>(300); + game_object1.add_component<Sprite>(img, Sprite::Data{ + .color = Color::MAGENTA, + .flip = Sprite::FlipSettings{false, false}, + .sorting_in_layer = 1, + .order_in_layer = 1, + .size = {0, 195}, + }); + AI & ai = game_object1.add_component<AI>(3000); // ai.arrive_on(); // ai.flee_on(); ai.path_follow_on(); - ai.add_path_node(vec2{1200, 1200}); - ai.add_path_node(vec2{-1200, 1200}); - ai.add_path_node(vec2{1200, -1200}); - ai.add_path_node(vec2{-1200, -1200}); + ai.make_oval_path(500, 1000, {0, -1000}, 1.5708, true); + ai.make_oval_path(1000, 500, {0, 500}, 4.7124, false); game_object1.add_component<Rigidbody>(Rigidbody::Data{ - .mass = 0.5f, .max_linear_velocity = {50, 50}, // sqrt(21^2 + 21^2) = 30 + .mass = 0.1f, + .max_linear_velocity = {40, 40}, }); game_object1.add_component<BehaviorScript>().set_script<Script1>(); - game_object2.add_component<Camera>(Color::WHITE, ivec2{1080, 720}, vec2{5000, 5000}, - 1.0f); + game_object2.add_component<Camera>(ivec2{1080, 720}, vec2{5000, 5000}, + Camera::Data{ + .bg_color = Color::WHITE, + .zoom = 1, + }); } string get_name() const override { return "Scene1"; } diff --git a/src/example/CMakeLists.txt b/src/example/CMakeLists.txt index 149c412..187ed46 100644 --- a/src/example/CMakeLists.txt +++ b/src/example/CMakeLists.txt @@ -16,8 +16,6 @@ function(add_example target_name) add_dependencies(examples ${target_name}) endfunction() -add_example(asset_manager) -add_example(savemgr) add_example(rendering_particle) add_example(game) add_example(button) diff --git a/src/example/asset_manager.cpp b/src/example/asset_manager.cpp deleted file mode 100644 index 917b547..0000000 --- a/src/example/asset_manager.cpp +++ /dev/null @@ -1,36 +0,0 @@ -#include <crepe/api/AssetManager.h> -#include <crepe/api/Texture.h> -#include <crepe/facade/Sound.h> - -using namespace crepe; - -int main() { - - // this needs to be called before the asset manager otherwise the destructor of sdl is not in - // the right order - { Texture test("../asset/texture/img.png"); } - // FIXME: make it so the issue described by the above comment is not possible (i.e. the order - // in which internal classes are instantiated should not impact the way the engine works). - - auto & mgr = AssetManager::get_instance(); - - { - // TODO: [design] the Sound class can't be directly included by the user as it includes - // SoLoud headers. - auto bgm = mgr.cache<Sound>("../mwe/audio/bgm.ogg"); - auto sfx1 = mgr.cache<Sound>("../mwe/audio/sfx1.wav"); - auto sfx2 = mgr.cache<Sound>("../mwe/audio/sfx2.wav"); - - auto img = mgr.cache<Texture>("../asset/texture/img.png"); - auto img1 = mgr.cache<Texture>("../asset/texture/second.png"); - } - - { - auto bgm = mgr.cache<Sound>("../mwe/audio/bgm.ogg"); - auto sfx1 = mgr.cache<Sound>("../mwe/audio/sfx1.wav"); - auto sfx2 = mgr.cache<Sound>("../mwe/audio/sfx2.wav"); - - auto img = mgr.cache<Texture>("../asset/texture/img.png"); - auto img1 = mgr.cache<Texture>("../asset/texture/second.png"); - } -} diff --git a/src/example/game.cpp b/src/example/game.cpp index 2b4e46f..4239c15 100644 --- a/src/example/game.cpp +++ b/src/example/game.cpp @@ -66,10 +66,6 @@ class MyScript1 : public Script { //add collider switch break; } - case Keycode::Q: { - throw "Test"; - break; - } default: break; } diff --git a/src/example/rendering_particle.cpp b/src/example/rendering_particle.cpp index 29d475d..13e625f 100644 --- a/src/example/rendering_particle.cpp +++ b/src/example/rendering_particle.cpp @@ -1,5 +1,7 @@ +#include "api/Asset.h" #include <crepe/Component.h> #include <crepe/api/Animator.h> +#include <crepe/api/Button.h> #include <crepe/api/Camera.h> #include <crepe/api/Color.h> #include <crepe/api/GameObject.h> @@ -7,11 +9,11 @@ #include <crepe/api/ParticleEmitter.h> #include <crepe/api/Rigidbody.h> #include <crepe/api/Sprite.h> -#include <crepe/api/Texture.h> #include <crepe/api/Transform.h> #include <crepe/manager/ComponentManager.h> #include <crepe/manager/Mediator.h> #include <crepe/types.h> +#include <iostream> using namespace crepe; using namespace std; @@ -41,13 +43,15 @@ using namespace std; class TestScene : public Scene { public: void load_scene() { + + cout << "TestScene" << endl; Mediator & mediator = this->mediator; ComponentManager & mgr = mediator.component_manager; GameObject game_object = mgr.new_object("", "", vec2{0, 0}, 0, 1); Color color(255, 255, 255, 255); - auto img = Texture("asset/spritesheet/pokemon_spritesheet.png"); + Asset img{"asset/spritesheet/spritesheet_test.png"}; Sprite & test_sprite = game_object.add_component<Sprite>( img, Sprite::Data{ @@ -57,21 +61,27 @@ public: .order_in_layer = 2, .size = {0, 100}, .angle_offset = 0, - .position_offset = {100, 0}, + .position_offset = {0, 0}, }); - auto & anim = game_object.add_component<Animator>(test_sprite, 4, 4, - Animator::Data{ - .fps = 1, - .looping = false, - }); - anim.set_anim(2); - anim.active = false; + //auto & anim = game_object.add_component<Animator>(test_sprite,ivec2{32, 64}, uvec2{4,1}, Animator::Data{}); + //anim.set_anim(0); - auto & cam = game_object.add_component<Camera>(ivec2{1280, 720}, vec2{400, 400}, + auto & cam = game_object.add_component<Camera>(ivec2{720, 1280}, vec2{400, 400}, Camera::Data{ .bg_color = Color::WHITE, }); + + function<void()> on_click = [&]() { cout << "button clicked" << std::endl; }; + function<void()> on_enter = [&]() { cout << "enter" << std::endl; }; + function<void()> on_exit = [&]() { cout << "exit" << std::endl; }; + + auto & button + = game_object.add_component<Button>(vec2{200, 200}, vec2{0, 0}, on_click, false); + button.on_mouse_enter = on_enter; + button.on_mouse_exit = on_exit; + button.is_toggle = true; + button.active = true; } string get_name() const { return "TestScene"; }; diff --git a/src/example/savemgr.cpp b/src/example/savemgr.cpp deleted file mode 100644 index 65c4a34..0000000 --- a/src/example/savemgr.cpp +++ /dev/null @@ -1,44 +0,0 @@ -/** \file - * - * Standalone example for usage of the save manager - */ - -#include <cassert> -#include <crepe/api/Config.h> -#include <crepe/api/SaveManager.h> -#include <crepe/util/Log.h> -#include <crepe/util/Proxy.h> - -using namespace crepe; - -// unrelated setup code -int _ = []() { - // make sure all log messages get printed - auto & cfg = Config::get_instance(); - cfg.log.level = Log::Level::TRACE; - - return 0; // satisfy compiler -}(); - -int main() { - const char * key = "mygame.test"; - - SaveManager & mgr = SaveManager::get_instance(); - - dbg_logf("has key = {}", mgr.has(key)); - ValueBroker<int> prop = mgr.get<int>(key, 0); - Proxy<int> val = mgr.get<int>(key, 0); - - dbg_logf("val = {}", mgr.get<int>(key).get()); - prop.set(1); - dbg_logf("val = {}", mgr.get<int>(key).get()); - val = 2; - dbg_logf("val = {}", mgr.get<int>(key).get()); - mgr.set<int>(key, 3); - dbg_logf("val = {}", mgr.get<int>(key).get()); - - dbg_logf("has key = {}", mgr.has(key)); - assert(true == mgr.has(key)); - - return 0; -} |