shooter/engine/Engine.h

62 lines
1.6 KiB
C
Raw Normal View History

2021-09-13 15:53:43 +03:00
//
// Created by Иван Ильин on 14.01.2021.
//
#ifndef ENGINE_ENGINE_H
#define ENGINE_ENGINE_H
2022-07-11 16:58:05 +03:00
#include "io/Screen.h"
#include "io/Keyboard.h"
#include "io/Mouse.h"
2021-09-13 15:53:43 +03:00
#include "World.h"
#include "Camera.h"
#include "utils/Log.h"
class Engine {
private:
std::string _name;
2021-09-20 13:54:09 +03:00
2021-10-31 13:00:38 +03:00
int _triPerSec = 0;
bool _updateWorld = true;
bool _showDebugInfo = Consts::SHOW_DEBUG_INFO;
2021-10-22 19:42:32 +03:00
bool _useOpenGL = Consts::USE_OPEN_GL;
void printDebugInfo() const;
2021-10-31 11:39:08 +03:00
2021-09-13 15:53:43 +03:00
protected:
2021-10-28 16:58:02 +03:00
const std::shared_ptr<Screen> screen = std::make_shared<Screen>();
const std::shared_ptr<Keyboard> keyboard = std::make_shared<Keyboard>();
const std::shared_ptr<Mouse> mouse = std::make_shared<Mouse>(screen);
2021-10-28 16:58:02 +03:00
const std::shared_ptr<World> world = std::make_shared<World>();
const std::shared_ptr<Camera> camera = std::make_shared<Camera>();
2021-09-13 15:53:43 +03:00
virtual void start() {};
2021-10-31 11:39:08 +03:00
virtual void update() {};
2021-11-03 12:49:07 +03:00
[[nodiscard]] bool showDebugInfo() const { return _showDebugInfo; }
void setDebugInfo(bool value) { _showDebugInfo = value; }
2021-10-31 11:39:08 +03:00
void setUpdateWorld(bool value) { _updateWorld = value; }
2021-10-31 11:39:08 +03:00
2021-10-22 19:42:32 +03:00
void setGlEnable(bool value) { _useOpenGL = value; }
[[nodiscard]] bool glEnable() const { return _useOpenGL; }
2021-09-13 15:53:43 +03:00
2021-10-31 11:39:08 +03:00
virtual void gui() {}
2021-10-02 20:36:07 +03:00
public:
Engine();
virtual ~Engine() = default;
2021-10-31 11:39:08 +03:00
void create(int screenWidth = Consts::STANDARD_SCREEN_WIDTH, int screenHeight = Consts::STANDARD_SCREEN_HEIGHT,
const std::string &name = Consts::PROJECT_NAME, bool verticalSync = true,
sf::Color background = Consts::BACKGROUND_COLOR, sf::Uint32 style = sf::Style::Default);
2021-10-02 20:36:07 +03:00
void exit();
2021-09-13 15:53:43 +03:00
};
#endif //INC_3DZAVR_TDZAVR_H