// // Created by sebastian on 23.12.25. // #ifndef DICEWARS_SIEDLER_APPLICATION_H #define DICEWARS_SIEDLER_APPLICATION_H #include #include #include "Window.h" #include "events/EventBus.h" #include "inputsOutputs/inputs/Keyboard.h" #include "inputsOutputs/inputs/Mouse.h" #include "inputsOutputs/stateControl/StateManager.h" #include "inputsOutputs/stateControl/states/State.h" class Layer; class Application { public: Application(); ~Application(); void run(); void close() {running = false;} static Application& getInstance(); [[nodiscard]] Window& getWindow() const {return *window;} EventBus& getEventBus() {return eventBus;} std::unique_ptr keyboard; std::unique_ptr mouse; std::unique_ptr stateManager; std::shared_ptr gameState; private: bool running = true; std::unique_ptr window; static Application* instance; std::vector layers; EventBus eventBus; void updateTime(); float lastFrame; protected: void pushLayer(Layer* layer); }; #endif //DICEWARS_SIEDLER_APPLICATION_H