#ifndef GAME_H #define GAME_H #include "client/gui/StartGUI.h" #include "client/input/Controller.h" #include "client/rendering/RenderSettings.h" #include "client/rendering/Renderer.h" #include "client/rendering/ShaderMatrix.h" #include "common/block/BlockRegistry.h" #include "common/world/World.h" #include "gaming-core/input/TextInput.h" #include "gaming-core/network/Client.h" #include "gaming-core/utils/Clock.h" #include "gaming-core/utils/Size.h" #include "rendering/renderer/WorldRenderer.h" class Game final { public: enum State { START }; Game(TextInput& textInput, const Controller& controller, const Clock& fps, const Clock& tps, RenderSettings& renderSettings, const Size& size, Client& client); void tick(); void renderWorld(float lag, ShaderMatrix& sm); void renderOverlay(float lag, ShaderMatrix& sm, Renderer& r); bool isRunning() const; void onConnect(); void onDisconnect(); void onPacket(InPacket& in); private: TextInput& textInput; const Controller& controller; const Clock& fps; const Clock& tps; RenderSettings& renderSettings; const Size& size; Client& client; State state; BaseGUI baseGUI; StartGUI startGUI; Vector3 lastPos; Vector3 pos; Quaternion lastRotation; Quaternion rotation; BlockRegistry blockRegistry; World world; WorldRenderer worldRenderer; bool connected; }; #endif