#include "shader.hpp"
#include <SDL.h>
+#include <glm/glm.hpp>
namespace blank {
class Interface {
public:
- explicit Interface(World &);
+ struct Config {
+ float move_velocity = 0.005f;
+ float pitch_sensitivity = -0.0025f;
+ float yaw_sensitivity = -0.001f;
+
+ bool keyboard_disabled = false;
+ bool mouse_disabled = false;
+ bool visual_disabled = false;
+ };
+
+ Interface(const Config &, World &);
void Handle(const SDL_KeyboardEvent &);
void Handle(const SDL_MouseMotionEvent &);
void Handle(const SDL_MouseButtonEvent &);
void Handle(const SDL_MouseWheelEvent &);
- void Handle(const SDL_WindowEvent &);
+ void Handle(const SDL_WindowEvent &) noexcept;
void FaceBlock();
void TurnBlock();
void PickBlock();
void PlaceBlock();
- void RemoveBlock();
+ void RemoveBlock() noexcept;
void PrintBlockInfo();
+ void PrintChunkInfo();
+ void PrintLightInfo();
void PrintSelectionInfo();
void Print(const Block &);
void Update(int dt);
- void Render(DirectionalLighting &);
+ void Render(DirectionalLighting &) noexcept;
private:
World &world;
OutlineModel outline;
glm::mat4 outline_transform;
- float move_velocity;
- float pitch_sensitivity;
- float yaw_sensitivity;
+ Config config;
Block remove;
Block selection;
- bool front, back, left, right, up, down;
+ glm::tvec3<int> fwd, rev;
};