aboutsummaryrefslogtreecommitdiff
path: root/backend
diff options
context:
space:
mode:
authorLoek Le Blansch <loek@pipeframe.xyz>2024-10-31 21:40:55 +0100
committerLoek Le Blansch <loek@pipeframe.xyz>2024-10-31 21:40:55 +0100
commitd7012045bb61f117fb7b9c51ddd03e4c54f25fe6 (patch)
tree28cadae7a828865aa4bd13f62fb83f81c600b063 /backend
parent82dcf9e2dd3596b28ef846f4a217dc19c21cf781 (diff)
more more more more WIP
Diffstat (limited to 'backend')
-rw-r--r--backend/Dungeon.cpp2
-rw-r--r--backend/Enemy.cpp15
-rw-r--r--backend/Enemy.h2
-rw-r--r--backend/String.cpp5
-rw-r--r--backend/String.h3
-rw-r--r--backend/WeaponObject.cpp10
-rw-r--r--backend/WeaponObject.h2
7 files changed, 32 insertions, 7 deletions
diff --git a/backend/Dungeon.cpp b/backend/Dungeon.cpp
index b1e89ba..30d6068 100644
--- a/backend/Dungeon.cpp
+++ b/backend/Dungeon.cpp
@@ -16,7 +16,7 @@ void Dungeon::update(Location * player_location) {
}
void Dungeon::update_attacks(ListRange<Enemy *> & enemies) {
- printf("TODO: de vijanden vallen aan!\n");
+ lprtf(":: De vijand%s in je locatie vallen aan! ::\n", enemies.size() == 1 ? "" : "en");
}
void Dungeon::update_movement() {
diff --git a/backend/Enemy.cpp b/backend/Enemy.cpp
index 9d3b26d..15e66ed 100644
--- a/backend/Enemy.cpp
+++ b/backend/Enemy.cpp
@@ -10,3 +10,18 @@ const String & Enemy::get_description() const { return this->description; }
unsigned Enemy::get_health() const { return this->health_points; }
+const String & Enemy::get_displayname() const {
+ static String displayname;
+ displayname = String::fmt("%s%s", this->name.c_str(), this->health_points == 0 ? " [verslagen]" : "");
+ return displayname;
+}
+
+static inline unsigned min(unsigned a, unsigned b) {
+ return a < b ? a : b;
+}
+
+void Enemy::take_damage(unsigned int dmg) {
+ dmg = min(dmg, this->health_points);
+ this->health_points -= dmg;
+}
+
diff --git a/backend/Enemy.h b/backend/Enemy.h
index ea08864..23d988d 100644
--- a/backend/Enemy.h
+++ b/backend/Enemy.h
@@ -9,6 +9,8 @@ public:
void set_description(const String & description);
const String & get_description() const;
unsigned get_health() const;
+ void take_damage(unsigned int dmg);
+ virtual const String & get_displayname() const;
private:
friend class EnemyFactory;
diff --git a/backend/String.cpp b/backend/String.cpp
index a8b648a..2f998be 100644
--- a/backend/String.cpp
+++ b/backend/String.cpp
@@ -10,6 +10,11 @@ String::String() {
this->set("");
}
+
+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());
}
diff --git a/backend/String.h b/backend/String.h
index e41222e..cf4304f 100644
--- a/backend/String.h
+++ b/backend/String.h
@@ -19,6 +19,9 @@ public:
size_t size() const;
bool empty() const;
+public:
+ String & operator = (const String &);
+
private:
void set(const char * data);
void set(const char * data, size_t data_len);
diff --git a/backend/WeaponObject.cpp b/backend/WeaponObject.cpp
index a92f9c8..58db34d 100644
--- a/backend/WeaponObject.cpp
+++ b/backend/WeaponObject.cpp
@@ -1,12 +1,10 @@
#include "WeaponObject.h"
-void WeaponObject::set_damage_min(int damage_min) {
- this->damage_min = damage_min;
-}
+void WeaponObject::set_damage_min(int damage_min) { this->damage_min = damage_min; }
+int WeaponObject::get_damage_min() const { return this->damage_min; }
-void WeaponObject::set_damage_max(int damage_max) {
- this->damage_max = damage_max;
-}
+void WeaponObject::set_damage_max(int damage_max) { this->damage_max = damage_max; }
+int WeaponObject::get_damage_max() const { return this->damage_max; }
const String & WeaponObject::get_displayname() const {
static String display = String::fmt("%s (%d - %d schade)", this->get_name().c_str(), this->damage_min, this->damage_max);
diff --git a/backend/WeaponObject.h b/backend/WeaponObject.h
index e1347ec..5ac4f87 100644
--- a/backend/WeaponObject.h
+++ b/backend/WeaponObject.h
@@ -7,7 +7,9 @@ class WeaponObject : public Object {
public:
void set_damage_min(int damage_min);
+ int get_damage_min() const;
void set_damage_max(int damage_max);
+ int get_damage_max() const;
virtual const String & get_displayname() const;
private: