X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Finterface.hpp;h=16ee89f46c37313578d4ca41583c82b4672d01af;hb=76b3ec0f6aa0dacf6d4944a2787991f3585299e8;hp=d3d58e8470b4fb9c9883e364917831ceaffe8bdd;hpb=3072e2cd49ad1614100d1a1c73afe6a4888fb875;p=blank.git diff --git a/src/interface.hpp b/src/interface.hpp index d3d58e8..16ee89f 100644 --- a/src/interface.hpp +++ b/src/interface.hpp @@ -8,6 +8,7 @@ #include "shader.hpp" #include +#include namespace blank { @@ -18,22 +19,33 @@ class World; 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 &); @@ -43,7 +55,7 @@ public: void Update(int dt); - void Render(DirectionalLighting &); + void Render(DirectionalLighting &) noexcept; private: World &world; @@ -57,14 +69,12 @@ private: 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 fwd, rev; };