Client.cpp 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. #include "Client.h"
  2. #include "../engine/GameEngine.h"
  3. #include <cmath>
  4. Client* Client::instance;
  5. void Client::start()
  6. {
  7. GameEngine::start(1024, 620, "Test Game", []()
  8. {
  9. Client::instance = new Client();
  10. }, []()
  11. {
  12. Client::instance->tick();
  13. }, [](float lag)
  14. {
  15. Client::instance->renderTick(lag);
  16. });
  17. delete instance;
  18. }
  19. void Client::stop()
  20. {
  21. GameEngine::stop();
  22. }
  23. Client::Client() : chunk(0, 0), texture("resources/textures.png")
  24. {
  25. //chunk.init();
  26. position.set(0, 0, -2);
  27. GameEngine::get()->getShader().setCamera(position.getX(), position.getY(), position.getZ(), 0, 0);
  28. GameEngine::get()->getShader().storeCamera();
  29. GameEngine::get()->getKeyManager().map(KEY_LEFT, GLFW_KEY_A);
  30. GameEngine::get()->getKeyManager().map(KEY_RIGHT, GLFW_KEY_D);
  31. GameEngine::get()->getKeyManager().map(KEY_UP, GLFW_KEY_W);
  32. GameEngine::get()->getKeyManager().map(KEY_DOWN, GLFW_KEY_S);
  33. GameEngine::get()->getKeyManager().map(KEY_JUMP, GLFW_KEY_SPACE);
  34. GameEngine::get()->getKeyManager().map(KEY_SNEAK, GLFW_KEY_LEFT_SHIFT);
  35. GameEngine::get()->getKeyManager().map(KEY_CAM_LEFT, GLFW_KEY_H);
  36. GameEngine::get()->getKeyManager().map(KEY_CAM_RIGHT, GLFW_KEY_K);
  37. GameEngine::get()->getKeyManager().map(KEY_CAM_UP, GLFW_KEY_U);
  38. GameEngine::get()->getKeyManager().map(KEY_CAM_DOWN, GLFW_KEY_J);
  39. }
  40. Client::~Client()
  41. {
  42. }
  43. float oldTicker = 0;
  44. float ticker = 0;
  45. void Client::tick()
  46. {
  47. oldTicker = ticker;
  48. ticker += 1;
  49. if(ticker >= 360)
  50. {
  51. oldTicker = 0;
  52. ticker = 0;
  53. }
  54. Shader& c = GameEngine::get()->getShader();
  55. c.storeCamera();
  56. KeyManager& key = GameEngine::get()->getKeyManager();
  57. float factor = 0.125f;
  58. if(key.isDown(KEY_LEFT))
  59. {
  60. position.addMul(c.getLeft(), factor);
  61. }
  62. if(key.isDown(KEY_RIGHT))
  63. {
  64. position.addMul(c.getRight(), factor);
  65. }
  66. if(key.isDown(KEY_UP))
  67. {
  68. position.addMul(c.getFront(), factor);
  69. }
  70. if(key.isDown(KEY_DOWN))
  71. {
  72. position.addMul(c.getBack(), factor);
  73. }
  74. if(key.isDown(KEY_JUMP))
  75. {
  76. position.addMul(c.getUp(), factor);
  77. }
  78. if(key.isDown(KEY_SNEAK))
  79. {
  80. position.addMul(c.getDown(), factor);
  81. }
  82. if(key.isDown(KEY_CAM_LEFT))
  83. {
  84. lengthAngle += 2;
  85. }
  86. if(key.isDown(KEY_CAM_RIGHT))
  87. {
  88. lengthAngle -= 2;
  89. }
  90. if(key.isDown(KEY_CAM_UP))
  91. {
  92. widthAngle += 2;
  93. }
  94. if(key.isDown(KEY_CAM_DOWN))
  95. {
  96. widthAngle -= 2;
  97. }
  98. c.setCamera(position.getX(), position.getY(), position.getZ(), lengthAngle, widthAngle);
  99. }
  100. void Client::renderTick(float lag)
  101. {
  102. /*GameEngine::getCamera().updateView(lag);
  103. texture.bind();
  104. GameEngine::setColorEnabled(false);
  105. GameEngine::setUseBlending(false);
  106. GameEngine::setTextureEnabled(true);
  107. chunk.renderTick(lag);*/
  108. GameEngine::get()->getShader().set2DMode();
  109. GameEngine::get()->getShader().setToIdentity();
  110. GameEngine::get()->getShader().translateTo(200, 200, 0);
  111. GameEngine::get()->getShader().rotateZ(interpolate(lag, oldTicker, ticker));
  112. GameEngine::get()->getShader().updateModelMatrix();
  113. GameEngine::get()->getShader().setTextMode();
  114. string wusi;
  115. float y = 30;
  116. wusi = "FPS: " + to_string(GameEngine::get()->getFramesPerSecond());
  117. y = GameEngine::get()->getDirectRenderer().drawString(30, y, true, wusi);
  118. }