diff --git a/samples/CMakeLists.txt b/samples/CMakeLists.txt index aee64702..c613c9e4 100644 --- a/samples/CMakeLists.txt +++ b/samples/CMakeLists.txt @@ -47,3 +47,4 @@ add_e2d_sample(05) add_e2d_sample(06) add_e2d_sample(07) add_e2d_sample(08) +add_e2d_sample(09) diff --git a/samples/bin/library/scenes/sample_09.json b/samples/bin/library/scenes/sample_09.json new file mode 100644 index 00000000..75a15970 --- /dev/null +++ b/samples/bin/library/scenes/sample_09.json @@ -0,0 +1,8 @@ +{ + "prototype" : "../prefabs/scene_prefab.json", + "children" : [{ + "prototype" : "../prefabs/background_prefab.json" + },{ + "prototype" : "../prefabs/camera_prefab.json" + }] +} diff --git a/samples/sources/sample_09/sample_09.cpp b/samples/sources/sample_09/sample_09.cpp new file mode 100644 index 00000000..4a61d1cb --- /dev/null +++ b/samples/sources/sample_09/sample_09.cpp @@ -0,0 +1,69 @@ +/******************************************************************************* + * This file is part of the "Enduro2D" + * For conditions of distribution and use, see copyright notice in LICENSE.md + * Copyright (C) 2018-2020, by Matvey Cherevko (blackmatov@gmail.com) + ******************************************************************************/ + +#include "../common.hpp" +using namespace e2d; + +namespace +{ + class game_system final : public systems::update_system { + public: + void process( + ecs::registry& owner, + const systems::update_event& event) override + { + E2D_UNUSED(owner, event); + const keyboard& k = the().keyboard(); + + if ( k.is_key_just_released(keyboard_key::f12) ) { + the().toggle_visible(!the().visible()); + } + + if ( k.is_key_just_released(keyboard_key::escape) ) { + the().set_should_close(true); + } + + if ( k.is_key_pressed(keyboard_key::lsuper) && k.is_key_just_released(keyboard_key::enter) ) { + the().toggle_fullscreen(!the().fullscreen()); + } + } + }; + + class game final : public starter::application { + public: + bool initialize() final { + return create_scene() + && create_systems(); + } + private: + bool create_scene() { + auto scene_prefab_res = the().load_asset("scenes/sample_09.json"); + auto scene_go = scene_prefab_res + ? the().instantiate(scene_prefab_res->content()) + : gobject(); + return scene_go.valid(); + } + + bool create_systems() { + ecs::registry_filler(the().registry()) + .feature(ecs::feature() + .add_system()); + return true; + } + }; +} + +int e2d_main(int argc, char *argv[]) { + const auto starter_params = starter::parameters( + engine::parameters("sample_09", "enduro2d") + .window_params(engine::window_parameters() + .size({1024, 512})) + .timer_params(engine::timer_parameters() + .maximal_framerate(100))); + modules::initialize(argc, argv, starter_params).start(); + modules::shutdown(); + return 0; +}