You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

80 lines
1.3 KiB

  1. #include "src/class/player.hpp"
  2. #include <string.h>
  3. Player::Player(std::string playerName)
  4. : Character(playerName)
  5. {
  6. experience = 0;
  7. level = 1;
  8. }
  9. Player::Player(std::string playerName, int playerMaxHP, int playerAtk, int playerDef, int playerLevel, int playerExp)
  10. : Character(playerName, playerMaxHP, playerAtk, playerDef)
  11. {
  12. experience = playerExp;
  13. level = playerLevel;
  14. }
  15. int Player::getLevel()
  16. {
  17. return level;
  18. }
  19. int Player::getExp()
  20. {
  21. return experience;
  22. }
  23. int Player::expToLevelUp()
  24. {
  25. if (level >= PLAYER_MAX_LEVEL)
  26. {
  27. return 0;
  28. }
  29. else
  30. {
  31. return (level * level) - experience;
  32. }
  33. }
  34. bool Player::checkLevelup()
  35. {
  36. return expToLevelUp() < 0;
  37. }
  38. bool Player::levelUp(int stat)
  39. {
  40. if (checkLevelup())
  41. {
  42. switch (stat)
  43. {
  44. case 1:
  45. maxHP += 10;
  46. restoreHP();
  47. break;
  48. case 2:
  49. atk += 2;
  50. break;
  51. case 3:
  52. def += 1;
  53. break;
  54. }
  55. return true;
  56. }
  57. else
  58. {
  59. return false;
  60. }
  61. }
  62. int Player::takeExperience(int bounty)
  63. {
  64. experience = experience + bounty;
  65. if (experience > PLAYER_MAX_EXPERIENCE)
  66. {
  67. experience = PLAYER_MAX_EXPERIENCE;
  68. }
  69. return experience;
  70. }