Client.cpp 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. #include "Client.h"
  2. #include <iostream>
  3. using namespace std;
  4. Client::Client()
  5. {
  6. position.set(0, 0, -2);
  7. shader.setCamera(position.getX(), position.getY(), position.getZ(), 0, 0);
  8. shader.storeCamera();
  9. keyManager.map(KEY_LEFT, GLFW_KEY_A);
  10. keyManager.map(KEY_RIGHT, GLFW_KEY_D);
  11. keyManager.map(KEY_UP, GLFW_KEY_W);
  12. keyManager.map(KEY_DOWN, GLFW_KEY_S);
  13. keyManager.map(KEY_JUMP, GLFW_KEY_SPACE);
  14. keyManager.map(KEY_SNEAK, GLFW_KEY_LEFT_SHIFT);
  15. keyManager.map(KEY_CAM_LEFT, GLFW_KEY_H);
  16. keyManager.map(KEY_CAM_RIGHT, GLFW_KEY_K);
  17. keyManager.map(KEY_CAM_UP, GLFW_KEY_U);
  18. keyManager.map(KEY_CAM_DOWN, GLFW_KEY_J);
  19. mouseManager.map(MOUSE_LEFT, GLFW_MOUSE_BUTTON_1);
  20. }
  21. Client::~Client()
  22. {
  23. }
  24. float oldTicker = 0;
  25. float ticker = 0;
  26. void Client::tick()
  27. {
  28. tps.update();
  29. if(mouseManager.isDown(MOUSE_LEFT))
  30. {
  31. cout << mouseManager.getDownTime(MOUSE_LEFT) << endl;
  32. }
  33. oldTicker = ticker;
  34. ticker += 1;
  35. if(ticker >= 360)
  36. {
  37. oldTicker = 0;
  38. ticker = 0;
  39. }
  40. shader.storeCamera();
  41. float factor = 0.125f;
  42. if(keyManager.isDown(KEY_LEFT))
  43. {
  44. position.addMul(shader.getLeft(), factor);
  45. }
  46. if(keyManager.isDown(KEY_RIGHT))
  47. {
  48. position.addMul(shader.getRight(), factor);
  49. }
  50. if(keyManager.isDown(KEY_UP))
  51. {
  52. position.addMul(shader.getFront(), factor);
  53. }
  54. if(keyManager.isDown(KEY_DOWN))
  55. {
  56. position.addMul(shader.getBack(), factor);
  57. }
  58. if(keyManager.isDown(KEY_JUMP))
  59. {
  60. position.addMul(shader.getUp(), factor);
  61. }
  62. if(keyManager.isDown(KEY_SNEAK))
  63. {
  64. position.addMul(shader.getDown(), factor);
  65. }
  66. if(keyManager.isDown(KEY_CAM_LEFT))
  67. {
  68. lengthAngle += 2;
  69. }
  70. if(keyManager.isDown(KEY_CAM_RIGHT))
  71. {
  72. lengthAngle -= 2;
  73. }
  74. if(keyManager.isDown(KEY_CAM_UP))
  75. {
  76. widthAngle += 2;
  77. }
  78. if(keyManager.isDown(KEY_CAM_DOWN))
  79. {
  80. widthAngle -= 2;
  81. }
  82. shader.setCamera(position.getX(), position.getY(), position.getZ(), lengthAngle, widthAngle);
  83. mouseManager.tick();
  84. keyManager.tick();
  85. }
  86. void Client::renderTick(float lag)
  87. {
  88. fps.update();
  89. shader.set2DMode();
  90. shader.setToIdentity();
  91. shader.translateTo(200, 200, 0);
  92. shader.rotateZ(interpolate(lag, oldTicker, ticker));
  93. shader.updateModelMatrix();
  94. shader.setTextMode();
  95. string wusi;
  96. float y = 30;
  97. wusi = "FPS: " + to_string(fps.getUpdatesPerSecond());
  98. y = directRenderer.drawString(30, y, true, wusi);
  99. }
  100. void Client::onKeyEvent(int key, int scancode, int action, int mods)
  101. {
  102. if(action == GLFW_PRESS)
  103. {
  104. keyManager.press(key);
  105. }
  106. else if(action == GLFW_RELEASE)
  107. {
  108. keyManager.release(key);
  109. }
  110. }
  111. void Client::onMouseClick(int button, int action, int mods)
  112. {
  113. if(action == GLFW_PRESS)
  114. {
  115. mouseManager.press(button);
  116. }
  117. else if(action == GLFW_RELEASE)
  118. {
  119. mouseManager.release(button);
  120. }
  121. }