aboutsummaryrefslogtreecommitdiff
path: root/backend
diff options
context:
space:
mode:
Diffstat (limited to 'backend')
-rw-r--r--backend/Dungeon.cpp2
-rw-r--r--backend/Player.cpp12
-rw-r--r--backend/Player.h1
-rw-r--r--backend/String.cpp5
-rw-r--r--backend/String.h1
5 files changed, 19 insertions, 2 deletions
diff --git a/backend/Dungeon.cpp b/backend/Dungeon.cpp
index 84f9c79..fed955b 100644
--- a/backend/Dungeon.cpp
+++ b/backend/Dungeon.cpp
@@ -24,8 +24,8 @@ void Dungeon::update_attacks(ListRange<Enemy *> & enemies) {
if (rng.rand_double() < enemy->get_attack()) continue;
unsigned damage = rng.rand_int(enemy->get_damage_min(), enemy->get_damage_max() + 1);
- this->player.take_damage(damage);
lprtf("%s raakt en doet %d punt schade.\n", enemy->get_displayname().c_str(), damage);
+ this->player.take_damage(damage);
}
}
diff --git a/backend/Player.cpp b/backend/Player.cpp
index 4180458..f2bc526 100644
--- a/backend/Player.cpp
+++ b/backend/Player.cpp
@@ -16,15 +16,25 @@ unsigned Player::get_health() const {
return this->health_points;
}
+bool Player::is_dead() const {
+ return this->health_points == 0;
+}
+
void Player::take_damage(unsigned int dmg) {
if (this->cheating) return;
+ if (this->is_dead()) return;
dmg = min(dmg, this->health_points);
if (this->armor != nullptr)
dmg = max(0u, dmg - this->armor->get_protection());
this->health_points -= dmg;
- lprtf("Je hebt nog %d levenspunten over.\n", this->health_points);
+ auto & hp = this->health_points;
+ lprtf("Je hebt %s%d levenspunt%s over.\n", hp > 0 ? "nog " : "", hp, hp == 1 ? "" : "en");
+
+ if (this->is_dead()) {
+ lprtf("Je bent dood gegaan!\n");
+ }
}
Location & Player::get_location() const {
diff --git a/backend/Player.h b/backend/Player.h
index b101de2..0dce061 100644
--- a/backend/Player.h
+++ b/backend/Player.h
@@ -33,6 +33,7 @@ public:
void set_location(Location &);
void equip(WeaponObject *);
void equip(ArmorObject *);
+ bool is_dead() const;
private:
Dungeon & dungeon;
diff --git a/backend/String.cpp b/backend/String.cpp
index 2f998be..381277e 100644
--- a/backend/String.cpp
+++ b/backend/String.cpp
@@ -15,6 +15,7 @@ String & String::operator = (const String & other) {
this->set(other.data(), other.size());
return *this;
}
+
String::String(const String & other) {
this->set(other.data(), other.size());
}
@@ -24,6 +25,10 @@ String::String(const char * c_str) {
this->set(c_str);
}
+String::String(const char * data, size_t size) {
+ this->set(data, size);
+}
+
String String::fmt(const char * fmt, ...) {
va_list args;
va_start(args, fmt);
diff --git a/backend/String.h b/backend/String.h
index cf4304f..0f20de6 100644
--- a/backend/String.h
+++ b/backend/String.h
@@ -7,6 +7,7 @@ class String {
public:
String();
String(const char * c_str);
+ String(const char * data, size_t size);
String(const String &);
~String();
public: