#include "client/Game.h" #include "client/utils/Utils.h" #include "rendering/Renderer.h" #include "common/utils/String.h" Game::Game(const Control& control, const Camera& camera, Ray& ray, const Clock& fps, const Clock& tps, RenderSettings& renderSettings) : control(control), camera(camera), ray(ray), fps(fps), tps(tps), renderSettings(renderSettings), lengthAngle(20.0f), widthAngle(35.0f), world(blockRegistry), worldRenderer(world) { pos.set(0, 10, 0); } void Game::tick() { const float speed = 0.25f; if(control.keys.down.isDown()) { pos.addMul(camera.getFlatBack(), speed); } if(control.keys.up.isDown()) { pos.addMul(camera.getFlatBack(), -speed); } if(control.keys.left.isDown()) { pos.addMul(camera.getFlatRight(), -speed); } if(control.keys.right.isDown()) { pos.addMul(camera.getFlatRight(), speed); } if(control.keys.jump.isDown()) { pos.addMul(camera.getFlatUp(), speed); } if(control.keys.sneak.isDown()) { pos.addMul(camera.getFlatUp(), -speed); } const float rotation = 5.0f; if(control.keys.camLeft.isDown()) { lengthAngle += rotation; } if(control.keys.camRight.isDown()) { lengthAngle -= rotation; } if(control.keys.camUp.isDown() && widthAngle - rotation > -90.0f) { widthAngle -= rotation; } if(control.keys.camDown.isDown() && widthAngle + rotation < 90.0f) { widthAngle += rotation; } ray.store(); ray.set(pos, lengthAngle, widthAngle); if(control.keys.test5.getDownTime() == 1) { renderSettings.ssao = !renderSettings.ssao; } /*if(control.keys.test.isDown()) { renderSettings.testRadius /= 0.95f; } if(control.keys.test2.isDown()) { renderSettings.testRadius *= 0.95f; } if(control.keys.test3.isDown()) { renderSettings.testBias /= 0.95f; } if(control.keys.test4.isDown()) { renderSettings.testBias *= 0.95f; }*/ } void Game::renderWorld(float lag, Renderer& renderer) const { worldRenderer.render(lag, renderer); } void Game::renderTextOverlay(float lag, Renderer& renderer, FontRenderer& fr) const { (void) lag; renderer.scale(1.0f).update(); String s; s.append("FPS: ").append(fps.getUpdatesPerSecond()); fr.drawString(10, 10, s); s.clear().append("TPS: ").append(tps.getUpdatesPerSecond()); fr.drawString(10, 20, s); s.clear().append("Bias: ").append("%.6f", renderSettings.testBias); fr.drawString(10, 30, s); s.clear().append("Radius: ").append("%.6f", renderSettings.testRadius); fr.drawString(10, 40, s); s.clear().append("Shadows: ").append(renderSettings.shadows); fr.drawString(10, 50, s); } bool Game::isRunning() const { return true; }