Player.cpp 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  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. maxHp = 100;
  10. health = maxHp;
  11. xp = 0;
  12. maxXp = 100;
  13. level = 1;
  14. crystals = 0;
  15. 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));
  16. leftWeapon->rotateWeapon(Vec3f(150, 0, 60));
  17. 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));
  18. rightWeapon->rotateWeapon(Vec3f(150, 0, 60));
  19. }
  20. Player* Player::getInstance()
  21. {
  22. if (instance == nullptr)
  23. instance = new Player();
  24. return instance;
  25. }
  26. void Player::init()
  27. {
  28. instance = new Player();
  29. }
  30. Player::~Player()
  31. {
  32. if (leftWeapon)
  33. delete leftWeapon;
  34. if (rightWeapon)
  35. delete rightWeapon;
  36. }
  37. void Player::setCamera()
  38. {
  39. glRotatef(rotation.x, 1, 0, 0);
  40. glRotatef(rotation.y, 0, 1, 0);
  41. glTranslatef(-position.x, -position.y, -position.z);
  42. leftWeapon->rotate(rotation);
  43. rightWeapon->rotate(rotation);
  44. }
  45. void Player::setPosition(float angle, float fac, bool height)
  46. {
  47. if (height)
  48. position.y += angle*fac;
  49. else
  50. {
  51. position.x -= (float)cos((rotation.y + angle) / 180 * M_PI) * fac;
  52. position.z -= (float)sin((rotation.y + angle) / 180 * M_PI) * fac;
  53. }
  54. leftWeapon->move(position);
  55. rightWeapon->move(position);
  56. }
  57. void Player::draw() {
  58. leftWeapon->draw();
  59. rightWeapon->draw();
  60. }
  61. void Player::HpDown(int damage)
  62. {
  63. int newHealth = health - damage;
  64. if (newHealth <= 0)
  65. {
  66. exit(0);
  67. }
  68. health = newHealth;
  69. }
  70. void Player::HpUp(int hp)
  71. {
  72. if (health != maxHp)
  73. {
  74. int newHealth = health + hp;
  75. if (newHealth >= maxHp)
  76. {
  77. newHealth = maxHp;
  78. }
  79. health = newHealth;
  80. }
  81. }
  82. void Player::XpUp(int xpUp)
  83. {
  84. float newXp = xp + xpUp;
  85. if (newXp >= maxXp)
  86. {
  87. newXp -= maxXp;
  88. levelUp();
  89. }
  90. xp = newXp;
  91. }
  92. void Player::levelUp()
  93. {
  94. level++;
  95. maxXp += 50;
  96. maxHp += 10;
  97. health = maxHp;
  98. }