56 lines
1.2 KiB
C++
56 lines
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;
|
|
class ContentGfxCache;
|
|
class LevelController;
|
|
|
|
/* Screen is a mainloop state */
|
|
class Screen {
|
|
protected:
|
|
Engine* engine;
|
|
std::unique_ptr<Batch2D> batch;
|
|
public:
|
|
Screen(Engine* engine);
|
|
virtual ~Screen();
|
|
virtual void update(float delta) = 0;
|
|
virtual void draw(float delta) = 0;
|
|
};
|
|
|
|
class MenuScreen : public Screen {
|
|
Camera* uicamera;
|
|
public:
|
|
MenuScreen(Engine* engine);
|
|
~MenuScreen();
|
|
|
|
void update(float delta) override;
|
|
void draw(float delta) override;
|
|
};
|
|
|
|
class LevelScreen : public Screen {
|
|
Level* level;
|
|
LevelController* controller;
|
|
WorldRenderer* worldRenderer;
|
|
HudRenderer* hud;
|
|
ContentGfxCache* cache;
|
|
|
|
bool hudVisible = true;
|
|
void updateHotkeys();
|
|
public:
|
|
LevelScreen(Engine* engine, Level* level);
|
|
~LevelScreen();
|
|
|
|
void update(float delta) override;
|
|
void draw(float delta) override;
|
|
};
|
|
|
|
#endif // FRONTEND_SCREENS_H_
|