diff options
Diffstat (limited to 'backend/Player.cpp')
-rw-r--r-- | backend/Player.cpp | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/backend/Player.cpp b/backend/Player.cpp new file mode 100644 index 0000000..a113a21 --- /dev/null +++ b/backend/Player.cpp @@ -0,0 +1,59 @@ +#include <assert.h> + +#include "Player.h" +#include "print.h" +#include "Dungeon.h" +#include "util.h" + +Player::Player(Dungeon & dungeon) : dungeon(dungeon) { } + +float Player::get_attack() const { + if (this->cheating) return 1.f; + return this->attack_chance; +} + +unsigned Player::get_health() const { + return this->health_points; +} + +void Player::take_damage(unsigned int dmg) { + if (this->cheating) return; + + dmg = min(dmg, this->health_points); + this->health_points -= dmg; + + lprtf("Je hebt nog %d levenspunten over.\n", this->health_points); +} + +Location & Player::get_location() const { + assert(this->location != nullptr); + return *this->location; +} +void Player::set_location(Location & location) { + this->location = &location; +} + +void Player::equip(WeaponObject * weapon) { + if (weapon == nullptr) return; + + lprtf("Je "); + if (this->weapon != nullptr) { + lprtf("laat %s vallen en ", this->weapon->get_name().c_str()); + this->inventory.push_back(this->weapon); + } + this->weapon = weapon; + lprtf("pakt %s vast.\n", this->weapon->get_name().c_str()); +} + +void Player::equip(ArmorObject * armor) { + if (armor == nullptr) return; + + lprtf("Je "); + if (this->armor != nullptr) { + lprtf("trekt %s uit en ", this->armor->get_name().c_str()); + this->inventory.push_back(this->armor); + } + this->armor = armor; + lprtf("doet %s aan.\n", this->armor->get_name().c_str()); +} + |