X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fui%2FInterface.hpp;h=bcc6c662ff1e0750937ff4c5e0750cda9fe0b77c;hb=dcd54cacda98c2c0f7cf0c7a9131fb858d8ee10a;hp=5cf82076a74b0f629dc15930f2dca2b3c001296e;hpb=df8e86cac65da6daedcab3e4ab1751de2f7e123a;p=blank.git diff --git a/src/ui/Interface.hpp b/src/ui/Interface.hpp index 5cf8207..bcc6c66 100644 --- a/src/ui/Interface.hpp +++ b/src/ui/Interface.hpp @@ -1,44 +1,27 @@ #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 "../model/geometry.hpp" -#include "../model/OutlineModel.hpp" -#include "../world/Block.hpp" -#include "../world/EntityCollision.hpp" -#include "../world/WorldCollision.hpp" - -#include -#include +#include "../app/Config.hpp" +#include "../graphics/glm.hpp" + #include namespace blank { -class Environment; -class Viewport; -class World; +struct ClientController; +class Keymap; +struct PlayerController; class Interface { public: - struct Config { - float move_velocity = 0.005f; - float pitch_sensitivity = -0.0025f; - float yaw_sensitivity = -0.001f; + Interface(Config &, const Keymap &, PlayerController &, ClientController &); - bool keyboard_disabled = false; - bool mouse_disabled = false; - bool audio_disabled = false; - bool visual_disabled = false; - }; + void SetInventorySlots(int num) { num_slots = num; } - Interface(const Config &, Environment &, World &); + void Lock(); + void Unlock(); void HandlePress(const SDL_KeyboardEvent &); void HandleRelease(const SDL_KeyboardEvent &); @@ -47,84 +30,21 @@ public: void HandleRelease(const SDL_MouseButtonEvent &); void Handle(const SDL_MouseWheelEvent &); - void FaceBlock(); - void TurnBlock(); - - void ToggleCollision(); - - void PickBlock(); - void PlaceBlock(); - void RemoveBlock() noexcept; - - void PrintBlockInfo(); - void PrintChunkInfo(); - void PrintLightInfo(); - void PrintSelectionInfo(); - void Print(const Block &); - - void SelectNext(); - void SelectPrevious(); - - void ToggleAudio(); - void ToggleVisual(); - - void ToggleDebug(); - void UpdateCounter(); - void UpdatePosition(); - void UpdateOrientation(); - void UpdateBlockInfo(); - void UpdateEntityInfo(); - - void PostMessage(const char *); - void PostMessage(const std::string &msg) { - PostMessage(msg.c_str()); - } - - void Update(int dt); - - void Render(Viewport &) noexcept; - private: - void CheckAim(); - void UpdateOutline(); + void UpdateMovement(); + void InvAbs(int slot); + void InvRel(int delta); private: - Environment &env; - World &world; - FPSController ctrl; - HUD hud; - - Ray aim; - WorldCollision aim_world; - EntityCollision aim_entity; - - OutlineModel outline; - glm::mat4 outline_transform; - - FixedText counter_text; - FixedText position_text; - FixedText orientation_text; - FixedText block_text; - FixedText entity_text; - Block last_block; - Entity *last_entity; - MessageBox messages; - IntervalTimer msg_timer; - - Config config; - - IntervalTimer place_timer; - IntervalTimer remove_timer; - - Block remove; - Block selection; - - Sound place_sound; - Sound remove_sound; + Config &config; + const Keymap &keymap; + PlayerController &player_ctrl; + ClientController &client_ctrl; glm::ivec3 fwd, rev; + int num_slots; - bool debug; + bool locked; };