#ifndef BLANK_UI_INTERFACE_HPP_
#define BLANK_UI_INTERFACE_HPP_
+#include "FixedText.hpp"
#include "HUD.hpp"
+#include "MessageBox.hpp"
#include "../app/FPSController.hpp"
#include "../app/IntervalTimer.hpp"
+#include "../audio/Sound.hpp"
#include "../graphics/Font.hpp"
#include "../model/geometry.hpp"
#include "../model/OutlineModel.hpp"
#include "../world/Block.hpp"
+#include <string>
#include <glm/glm.hpp>
namespace blank {
-class Assets;
class Chunk;
-class FrameCounter;
+class Environment;
class Viewport;
class World;
bool keyboard_disabled = false;
bool mouse_disabled = false;
+ bool audio_disabled = false;
bool visual_disabled = false;
};
- Interface(const Config &, const Assets &, const FrameCounter &, World &);
+ Interface(const Config &, Environment &, World &);
void HandlePress(const SDL_KeyboardEvent &);
void HandleRelease(const SDL_KeyboardEvent &);
void HandleRelease(const SDL_MouseButtonEvent &);
void Handle(const SDL_MouseWheelEvent &);
- void Resize(const Viewport &);
-
void FaceBlock();
void TurnBlock();
void SelectNext();
void SelectPrevious();
- void ToggleCounter();
+ void ToggleAudio();
+ void ToggleVisual();
+
+ void ToggleDebug();
void UpdateCounter();
+ void UpdatePosition();
+
+ void PostMessage(const char *);
+ void PostMessage(const std::string &msg) {
+ PostMessage(msg.c_str());
+ }
void Update(int dt);
void CheckAim();
private:
- const FrameCounter &counter;
+ Environment &env;
World &world;
FPSController ctrl;
Font font;
OutlineModel outline;
glm::mat4 outline_transform;
- bool show_counter;
- Texture counter_tex;
- SpriteModel counter_sprite;
- glm::mat4 counter_transform;
- float counter_x;
+ FixedText counter_text;
+ FixedText position_text;
+ MessageBox messages;
+ IntervalTimer msg_timer;
Config config;
Block remove;
Block selection;
- glm::tvec3<int> fwd, rev;
+ Sound place_sound;
+ Sound remove_sound;
+
+ glm::ivec3 fwd, rev;
};