Player.cpp 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. #define _USE_MATH_DEFINES
  2. #include <cmath>
  3. #include "Player.h"
  4. #include <GL/freeglut.h>
  5. Player* Player::instance = NULL;
  6. Player::Player()
  7. {
  8. speed = 10;
  9. health = 50;
  10. xp = 75;
  11. level = 10;
  12. crystals = 0;
  13. leftWeapon = new Weapon("models/weapons/ZwaardMetTextures/TextureZwaard.obj", 1, position, rotation, Vec3f(4.5, -8, -1), Vec3f(-2.0f, 6.0f, -2.1f), Vec2f(170, 70), Vec2f(20, -80));
  14. leftWeapon->rotateWeapon(Vec3f(150, 0, 60));
  15. rightWeapon = new Weapon("models/weapons/ZwaardMetTextures/TextureZwaard.obj", 1, position, rotation, Vec3f(0.5, -8, -1), Vec3f(-2.0f, 6.0f, -2.1f), Vec2f(170, 70), Vec2f(20, -80));
  16. rightWeapon->rotateWeapon(Vec3f(150, 0, 60));
  17. }
  18. Player* Player::getInstance()
  19. {
  20. if (instance == nullptr)
  21. instance = new Player();
  22. return instance;
  23. }
  24. void Player::init()
  25. {
  26. instance = new Player();
  27. }
  28. Player::~Player()
  29. {
  30. if (leftWeapon)
  31. delete leftWeapon;
  32. if (rightWeapon)
  33. delete rightWeapon;
  34. }
  35. void Player::setCamera()
  36. {
  37. glRotatef(rotation.x, 1, 0, 0);
  38. glRotatef(rotation.y, 0, 1, 0);
  39. glTranslatef(-position.x, -position.y, -position.z);
  40. leftWeapon->rotate(rotation);
  41. rightWeapon->rotate(rotation);
  42. }
  43. void Player::setPosition(float angle, float fac, bool height)
  44. {
  45. if (height)
  46. position.y += angle*fac;
  47. else
  48. {
  49. position.x -= (float)cos((rotation.y + angle) / 180 * M_PI) * fac;
  50. position.z -= (float)sin((rotation.y + angle) / 180 * M_PI) * fac;
  51. }
  52. leftWeapon->move(position);
  53. rightWeapon->move(position);
  54. }
  55. void Player::draw() {
  56. leftWeapon->draw();
  57. rightWeapon->draw();
  58. }