Game.cpp 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. #include "client/Game.h"
  2. #include "common/network/Packets.h"
  3. #include "gaming-core/utils/Utils.h"
  4. Game::Game(const Controller& controller, const Clock& fps, const Clock& tps,
  5. RenderSettings& settings, const Size& size, Client& client)
  6. : controller(controller), fps(fps), tps(tps), renderSettings(settings),
  7. size(size), client(client), world(blockRegistry), worldRenderer(world),
  8. connected(false) {
  9. pos = Vector3(16.0f, 30.0f, -10.0f);
  10. rotation = Quaternion(Vector3(1.0f, 0.0f, 0.0f), 30) * rotation;
  11. rotation = Quaternion(Vector3(0.0f, 1.0f, 0.0f), 30) * rotation;
  12. }
  13. void Game::tick() {
  14. if(!connected && controller.down.wasReleased()) {
  15. if(client.connect("127.0.0.1", 11196, 3000)) {
  16. std::cout << client.getError() << '\n';
  17. } else {
  18. std::cout << "connected\n";
  19. }
  20. } else {
  21. client.consumeEvents(*this);
  22. }
  23. lastRotation = rotation;
  24. lastPos = pos;
  25. Vector3 right = rotation * Vector3(1.0f, 0.0f, 0.0f);
  26. Vector3 up = rotation * Vector3(0.0f, 1.0f, 0.0f);
  27. Vector3 back = rotation * Vector3(0.0f, 0.0f, -1.0f);
  28. const float speed = 2.0f;
  29. if(controller.down.isDown()) {
  30. pos += back * speed;
  31. }
  32. if(controller.up.isDown()) {
  33. pos -= back * speed;
  34. }
  35. if(controller.left.isDown()) {
  36. pos -= right * speed;
  37. }
  38. if(controller.right.isDown()) {
  39. pos += right * speed;
  40. }
  41. if(controller.jump.isDown()) {
  42. pos += up * speed;
  43. }
  44. if(controller.sneak.isDown()) {
  45. pos -= up * speed;
  46. }
  47. const float rotationSpeed = 5.0f;
  48. if(controller.camLeft.isDown()) {
  49. rotation = Quaternion(up, -rotationSpeed) * rotation;
  50. }
  51. if(controller.camRight.isDown()) {
  52. rotation = Quaternion(up, rotationSpeed) * rotation;
  53. }
  54. if(controller.camUp.isDown()) {
  55. rotation = Quaternion(right, -rotationSpeed) * rotation;
  56. }
  57. if(controller.camDown.isDown()) {
  58. rotation = Quaternion(right, rotationSpeed) * rotation;
  59. }
  60. }
  61. void Game::renderWorld(float lag, Renderer& renderer) {
  62. renderer.update(Utils::interpolate(lastPos, pos, lag),
  63. lastRotation.lerp(lag, rotation));
  64. worldRenderer.render(lag, renderer);
  65. }
  66. void Game::renderTextOverlay(float lag, Renderer& renderer, FontRenderer& fr) {
  67. (void)lag;
  68. renderer.scale(2.0f).update();
  69. StringBuffer<100> s;
  70. s.append("FPS: &074")
  71. .append(fps.getUpdatesPerSecond())
  72. .append(" &999TPS: &722")
  73. .append(tps.getUpdatesPerSecond());
  74. fr.drawString(10, 10, s);
  75. }
  76. bool Game::isRunning() const {
  77. return true;
  78. }
  79. void Game::onConnect() {
  80. }
  81. void Game::onDisconnect() {
  82. }
  83. void Game::onPacket(InPacket& in) {
  84. uint16 id;
  85. if(in.readU16(id)) {
  86. return;
  87. }
  88. switch(id) {
  89. case ServerPacket::CHAT:
  90. StringBuffer<256> s;
  91. in.readString(s);
  92. std::cout << s << '\n';
  93. break;
  94. }
  95. }