#ifndef GAME_H #define GAME_H #include "client/gui/StartGUI.h" #include "client/input/Controller.h" #include "client/rendering/Renderer.h" #include "client/rendering/ShaderMatrix.h" #include "common/block/BlockRegistry.h" #include "common/world/World.h" #include "rendering/renderer/WorldRenderer.h" class Game final { const Controller& controller; typedef void (Game::*TickState)(); TickState tickState; typedef void (Game::*RenderState)(float, ShaderMatrix&, Renderer&); RenderState renderState; BaseGUI baseGUI; StartGUI startGUI; Vector3 lastPos; Vector3 pos; Quaternion lastRotation; Quaternion rotation; WorldRenderer worldRenderer; public: static Game* game; static BlockRegistry blockRegistry; static World world; Game(const Controller& controller); void tick(); void renderWorld(float lag, ShaderMatrix& sm); void renderOverlay(float lag, ShaderMatrix& sm, Renderer& r); bool isRunning() const; private: void tickConnectState(); void tickConnectedState(); void renderConnectState(float lag, ShaderMatrix& sm, Renderer& r); void renderConnectedState(float lag, ShaderMatrix& sm, Renderer& r); }; #endif