Game.cpp 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. #include "client/Game.h"
  2. #include "gaming-core/utils/Utils.h"
  3. Game::Game(const Controller& controller, const Clock& fps, const Clock& tps,
  4. RenderSettings& settings, const Size& size) :
  5. controller(controller), fps(fps), tps(tps), renderSettings(settings), size(size),
  6. world(blockRegistry), worldRenderer(world) {
  7. pos = Vector3(16.0f, 24.0f, 0.0f);
  8. }
  9. void Game::tick() {
  10. lastRotation = rotation;
  11. lastPos = pos;
  12. Vector3 right = rotation * Vector3(1.0f, 0.0f, 0.0f);
  13. Vector3 up = rotation * Vector3(0.0f, 1.0f, 0.0f);
  14. Vector3 back = rotation * Vector3(0.0f, 0.0f, -1.0f);
  15. const float speed = 1.0f;
  16. if(controller.down.isDown()) {
  17. pos += back * speed;
  18. }
  19. if(controller.up.isDown()) {
  20. pos -= back * speed;
  21. }
  22. if(controller.left.isDown()) {
  23. pos -= right * speed;
  24. }
  25. if(controller.right.isDown()) {
  26. pos += right * speed;
  27. }
  28. if(controller.jump.isDown()) {
  29. pos += up * speed;
  30. }
  31. if(controller.sneak.isDown()) {
  32. pos -= up * speed;
  33. }
  34. const float rotationSpeed = 5.0f;
  35. if(controller.camLeft.isDown()) {
  36. rotation = Quaternion(up, -rotationSpeed) * rotation;
  37. }
  38. if(controller.camRight.isDown()) {
  39. rotation = Quaternion(up, rotationSpeed) * rotation;
  40. }
  41. if(controller.camUp.isDown()) {
  42. rotation = Quaternion(right, -rotationSpeed) * rotation;
  43. }
  44. if(controller.camDown.isDown()) {
  45. rotation = Quaternion(right, rotationSpeed) * rotation;
  46. }
  47. }
  48. void Game::renderWorld(float lag, Renderer& renderer) {
  49. renderer.update(Utils::interpolate(lastPos, pos, lag), lastRotation.lerp(lag, rotation));
  50. worldRenderer.render(lag, renderer);
  51. }
  52. void Game::renderTextOverlay(float lag, Renderer& renderer, FontRenderer& fr) {
  53. (void) lag;
  54. renderer.scale(2.0f).update();
  55. StringBuffer<100> s;
  56. s.append("FPS: &074").append(fps.getUpdatesPerSecond()).append(" &999TPS: &722").append(tps.getUpdatesPerSecond());
  57. fr.drawString(10, 10, s);
  58. }
  59. bool Game::isRunning() const {
  60. return true;
  61. }