diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/example/CMakeLists.txt | 2 | ||||
-rw-r--r-- | src/example/GameScene.cpp | 50 | ||||
-rw-r--r-- | src/example/GameScene.h | 11 | ||||
-rw-r--r-- | src/example/game.cpp | 52 |
4 files changed, 65 insertions, 50 deletions
diff --git a/src/example/CMakeLists.txt b/src/example/CMakeLists.txt index 911a99c..307c8da 100644 --- a/src/example/CMakeLists.txt +++ b/src/example/CMakeLists.txt @@ -4,6 +4,7 @@ set(GAME_HEADERS Forest.h Hallway.h Start.h + GameScene.h ) set(GAME_SOURCES @@ -13,6 +14,7 @@ set(GAME_SOURCES Forest.cpp Hallway.cpp Start.cpp + GameScene.cpp ) add_executable(game ${GAME_SOURCES} ${GAME_HEADERS}) diff --git a/src/example/GameScene.cpp b/src/example/GameScene.cpp new file mode 100644 index 0000000..8a0ec5c --- /dev/null +++ b/src/example/GameScene.cpp @@ -0,0 +1,50 @@ +#include "GameScene.h" +#include "Background.h" + +#include <crepe/api/BehaviorScript.h> +#include <crepe/api/Camera.h> +#include <crepe/api/Color.h> +#include <crepe/api/Event.h> +#include <crepe/api/GameObject.h> +#include <crepe/api/Rigidbody.h> +#include <crepe/api/Script.h> +#include <crepe/types.h> + +using namespace crepe; +using namespace std; + +class MoveCameraScript : public Script { +public: + void init() { + subscribe<KeyPressEvent>( + [this](const KeyPressEvent & ev) -> bool { return this->keypressed(ev); }); + } + +private: + bool keypressed(const KeyPressEvent & event) { + if (event.key == Keycode::RIGHT) { + Transform & cam = this->get_components_by_name<Transform>("camera").front(); + cam.position.x += 100; + } else if (event.key == Keycode::LEFT) { + Transform & cam = this->get_components_by_name<Transform>("camera").front(); + cam.position.x -= 100; + } + return true; + } +}; + +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), + Camera::Data{ + .bg_color = Color::RED, + }); + camera.add_component<BehaviorScript>().set_script<MoveCameraScript>(); + camera.add_component<Rigidbody>(Rigidbody::Data{ + .linear_velocity = vec2(100, 0), + }); +} + +string GameScene::get_name() const { return "scene1"; } diff --git a/src/example/GameScene.h b/src/example/GameScene.h new file mode 100644 index 0000000..16e2919 --- /dev/null +++ b/src/example/GameScene.h @@ -0,0 +1,11 @@ +#pragma once + +#include <crepe/api/Scene.h> +#include <string> + +class GameScene : public crepe::Scene { +public: + void load_scene(); + + std::string get_name() const; +}; diff --git a/src/example/game.cpp b/src/example/game.cpp index 8f3996b..378a64a 100644 --- a/src/example/game.cpp +++ b/src/example/game.cpp @@ -1,61 +1,13 @@ -#include "Background.h" +#include "GameScene.h" -#include <crepe/api/BehaviorScript.h> -#include <crepe/api/Camera.h> -#include <crepe/api/Color.h> -#include <crepe/api/Event.h> -#include <crepe/api/GameObject.h> #include <crepe/api/LoopManager.h> -#include <crepe/api/Rigidbody.h> -#include <crepe/api/Scene.h> -#include <crepe/api/Script.h> -#include <crepe/types.h> using namespace crepe; using namespace std; -class MoveCameraScript : public Script { -public: - void init() { - subscribe<KeyPressEvent>( - [this](const KeyPressEvent & ev) -> bool { return this->keypressed(ev); }); - } - -private: - bool keypressed(const KeyPressEvent & event) { - if (event.key == Keycode::RIGHT) { - Transform & cam = this->get_components_by_name<Transform>("camera").front(); - cam.position.x += 100; - } else if (event.key == Keycode::LEFT) { - Transform & cam = this->get_components_by_name<Transform>("camera").front(); - cam.position.x -= 100; - } - return true; - } -}; - -class Scene1 : public Scene { -public: - void load_scene() { - Background background(*this); - - GameObject camera = new_object("camera", "camera", vec2(600, 0)); - camera.add_component<Camera>(ivec2(1700, 720), vec2(2000, 800), - Camera::Data{ - .bg_color = Color::RED, - }); - camera.add_component<BehaviorScript>().set_script<MoveCameraScript>(); - camera.add_component<Rigidbody>(Rigidbody::Data{ - .linear_velocity = vec2(100, 0), - }); - } - - string get_name() const { return "scene1"; } -}; - int main(int argc, char * argv[]) { LoopManager gameloop; - gameloop.add_scene<Scene1>(); + gameloop.add_scene<GameScene>(); gameloop.start(); return 0; } |