McRogueFace/src/GameEngine.h

54 lines
1.3 KiB
C
Raw Normal View History

#pragma once
#include "Common.h"
#include "Scene.h"
#include "McRFPy_API.h"
#include "IndexTexture.h"
2024-03-07 13:59:26 +00:00
#include "Timer.h"
class GameEngine
{
sf::RenderWindow window;
sf::Font font;
std::map<std::string, Scene*> scenes;
bool running = true;
bool paused = false;
int currentFrame = 0;
sf::View visible;
sf::Clock clock;
float frameTime;
std::string window_title;
2024-03-07 13:59:26 +00:00
sf::Clock runtime;
std::map<std::string, Timer> timers;
void testTimers();
public:
2024-03-06 15:50:19 +00:00
std::string scene;
GameEngine();
Scene* currentScene();
void changeScene(std::string);
2024-03-06 15:50:19 +00:00
void createScene(std::string);
void quit();
void setPause(bool);
sf::Font & getFont();
sf::RenderWindow & getWindow();
void run();
void sUserInput();
int getFrame() { return currentFrame; }
float getFrameTime() { return frameTime; }
sf::View getView() { return visible; }
2024-03-07 13:59:26 +00:00
void manageTimer(std::string, PyObject*, int);
2024-03-08 21:55:58 +00:00
void setWindowScale(float);
// global textures for scripts to access
std::vector<IndexTexture> textures;
// global audio storage
std::vector<sf::SoundBuffer> sfxbuffers;
sf::Music music;
sf::Sound sfx;
std::shared_ptr<std::vector<std::shared_ptr<UIDrawable>>> scene_ui(std::string scene);
};