Dicewars-Siedler/src/engine/core/Application.h

55 lines
1.1 KiB
C++

//
// Created by sebastian on 23.12.25.
//
#ifndef DICEWARS_SIEDLER_APPLICATION_H
#define DICEWARS_SIEDLER_APPLICATION_H
#include <memory>
#include <vector>
#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> keyboard;
std::unique_ptr<Mouse> mouse;
std::unique_ptr<StateManager> stateManager;
std::shared_ptr<GameState> gameState;
private:
bool running = true;
std::unique_ptr<Window> window;
static Application* instance;
std::vector<Layer*> layers;
EventBus eventBus;
void updateTime();
float lastFrame;
protected:
void pushLayer(Layer* layer);
};
#endif //DICEWARS_SIEDLER_APPLICATION_H