Player.cpp 1.4 KB

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