voxelcore/src/frontend/screens.h
2023-11-17 13:57:45 +03:00

58 lines
No EOL
1.2 KiB
C++

#ifndef FRONTEND_SCREENS_H_
#define FRONTEND_SCREENS_H_
#include <memory>
#include "../settings.h"
class Assets;
class Level;
class WorldRenderer;
class HudRenderer;
class Engine;
class Camera;
class Batch2D;
namespace gui {
class UINode;
}
/* Screen is a mainloop state */
class Screen {
protected:
Engine* engine;
public:
Screen(Engine* engine) : engine(engine) {};
virtual ~Screen() {};
virtual void update(float delta) = 0;
virtual void draw(float delta) = 0;
};
class MenuScreen : public Screen {
std::shared_ptr<gui::UINode> panel;
std::shared_ptr<gui::UINode> newWorldPanel;
Batch2D* batch;
Camera* uicamera;
public:
MenuScreen(Engine* engine);
~MenuScreen();
void update(float delta) override;
void draw(float delta) override;
};
class LevelScreen : public Screen {
Level* level;
WorldRenderer* worldRenderer;
HudRenderer* hud;
bool occlusion = true;
void updateHotkeys();
public:
LevelScreen(Engine* engine, Level* level);
~LevelScreen();
void update(float delta) override;
void draw(float delta) override;
};
#endif // FRONTEND_SCREENS_H_