aboutsummaryrefslogtreecommitdiff
path: root/backend/Player.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'backend/Player.cpp')
-rw-r--r--backend/Player.cpp59
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());
+}
+