diff options
author | Aki <please@ignore.pl> | 2022-05-21 15:31:39 +0200 |
---|---|---|
committer | Aki <please@ignore.pl> | 2022-05-21 15:31:56 +0200 |
commit | 15ba7976d44eefb5db43db95c99c868b1f119636 (patch) | |
tree | eab188cc49f50cdf6da5905baa5f543ea2afc5b6 | |
parent | a26e53c7aa39d0b2ab8ef7b80bdf663563aed91c (diff) | |
download | derelict-15ba7976d44eefb5db43db95c99c868b1f119636.zip derelict-15ba7976d44eefb5db43db95c99c868b1f119636.tar.gz derelict-15ba7976d44eefb5db43db95c99c868b1f119636.tar.bz2 |
Moved view and window management to App class
-rw-r--r-- | App.cpp | 41 | ||||
-rw-r--r-- | App.h | 17 | ||||
-rw-r--r-- | CMakeLists.txt | 1 | ||||
-rw-r--r-- | main.cpp | 19 |
4 files changed, 68 insertions, 10 deletions
@@ -0,0 +1,41 @@ +#include "App.h" + +#include <memory> +#include <utility> + +#include <raylib.h> + +#include "View.h" + + +App::App() : + m_view {} +{ + InitWindow(800, 600, "Derelict"); + SetWindowState(FLAG_WINDOW_RESIZABLE); + SetTargetFPS(60); +} + + +App::~App() +{ + m_view.reset(); + CloseWindow(); +} + + +void +App::assign(std::unique_ptr<View> view) +{ + m_view = std::move(view); +} + + +void +App::loop() +{ + if (m_view) { + m_view->update(GetFrameTime()); + m_view->draw(); + } +} @@ -0,0 +1,17 @@ +#pragma once + +#include <memory> + +#include "View.h" + + +class App +{ +public: + App(); + ~App(); + void assign(std::unique_ptr<View> view); + void loop(); +private: + std::unique_ptr<View> m_view; +}; diff --git a/CMakeLists.txt b/CMakeLists.txt index 2f8bb00..8945b6c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,6 +7,7 @@ find_package(raylib 3 REQUIRED) find_package(nlohmann_json 3.2 REQUIRED) add_executable( ${PROJECT_NAME} + App.cpp DumpSource.cpp main.cpp Reader.cpp @@ -1,27 +1,26 @@ +#include <memory> #include <utility> #include <raylib.h> +#include "App.h" #include "DumpSource.h" #include "Reader.h" #include "View.h" +App app; + + int main(int, char*[]) { - InitWindow(800, 600, "Derelict"); { - SetWindowState(FLAG_WINDOW_RESIZABLE); - SetTargetFPS(60); DumpSource source("sample.json"); auto [grids, timeline] = Reader::read(source); - View view(std::move(grids), std::move(timeline)); - while (!WindowShouldClose()) - { - view.update(GetFrameTime()); - view.draw(); - } + auto view = std::make_unique<View>(std::move(grids), std::move(timeline)); + app.assign(std::move(view)); } - CloseWindow(); + while (!WindowShouldClose()) + app.loop(); } |