Program Listing for File engine.h

Return to documentation for file (simple2dengine/engine.h)

#ifndef _SIMPLE2DENGINE_ENGINE_H_
#define _SIMPLE2DENGINE_ENGINE_H_

#include <memory>
#include <string>

#include <SFML/Graphics.hpp>
#include <SFML/System.hpp>
#include <SFML/Window.hpp>

#include "simple2dengine/configuration.h"
#include "simple2dengine/managers/asset_manager.h"
#include "simple2dengine/managers/input_manager.h"
#include "simple2dengine/managers/loaders/font_loader.h"
#include "simple2dengine/managers/loaders/sound_loader.h"
#include "simple2dengine/managers/loaders/texture_loader.h"
#include "simple2dengine/managers/scene_manager.h"

namespace simple2dengine
{
    class Engine
    {
      public:
        Engine(const Configuration& config);
        void run();
        void stop();
        SceneManager& getSceneManager();
        AssetManager& getAssetManager();
        InputManager& getInputManager();
        const Configuration& getConfiguration();
        sf::RenderWindow& getRenderWindow();

      private:
        void update(int deltaInMs);
        void render();

        sf::RenderWindow window;     // SFML window
        sf::Clock deltaClock;        // Help to calculate delta for update method
        bool isRunning = false;      // Running state
        Configuration configuration; // Configuration object (window size, fps, etc)
        // managers
        SceneManager sceneManager; // operates with scenes
        AssetManager assetManager; // operates with assets
        InputManager inputManager; // operates with input
    };
} // namespace simple2dengine

#endif // _SIMPLE2DENGINE_ENGINE_H_