aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/headers
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/main/headers/Bullet.hpp12
-rw-r--r--src/main/headers/Item.hpp11
-rw-r--r--src/main/headers/MeleeWeapon.hpp7
-rw-r--r--src/main/headers/RangedWeapon.hpp8
-rw-r--r--src/main/headers/Weapon.hpp4
5 files changed, 36 insertions, 6 deletions
diff --git a/src/main/headers/Bullet.hpp b/src/main/headers/Bullet.hpp
new file mode 100644
index 0000000..e38c3f2
--- /dev/null
+++ b/src/main/headers/Bullet.hpp
@@ -0,0 +1,12 @@
+#ifndef BULLET_HPP
+#define BULLET_HPP
+
+#include "Item.hpp"
+
+class Bullet : public Item
+{
+public:
+ bool use(RangedWeapon &weapon);
+}
+
+#endif
diff --git a/src/main/headers/Item.hpp b/src/main/headers/Item.hpp
index 3664a0e..caa1e6f 100644
--- a/src/main/headers/Item.hpp
+++ b/src/main/headers/Item.hpp
@@ -14,16 +14,17 @@ public:
Item() = delete;
virtual ~Item() {}
- virtual bool use(Actor &actor) = 0;
- virtual bool use(Item &item) = 0;
+ virtual bool use(Actor &user, Actor &actor) = 0;
bool stackable() { return _maxAmount == 1; }
protected:
- const unsigned _maxAmount;
- const unsigned _amount; // stackable
+ unsigned _maxAmount;
+ unsigned _amount; // stackable
- std::string _name;
+ const std::string _name;
+
+ Item(const std::string &name) : _name(name) {}
};
#endif
diff --git a/src/main/headers/MeleeWeapon.hpp b/src/main/headers/MeleeWeapon.hpp
index e031333..b98d027 100644
--- a/src/main/headers/MeleeWeapon.hpp
+++ b/src/main/headers/MeleeWeapon.hpp
@@ -4,6 +4,8 @@
#include "Weapon.hpp"
#include "Actor.hpp"
+#include <string>
+
class MeleeWeapon : public Weapon
{
@@ -12,7 +14,10 @@ public:
SWORD, AXE, LANCE
};
- virtual bool use(Actor &actor);
+ const Type type;
+
+ MeleeWeapon(Type t, const std::string &name);
+ bool use(Actor &user, Actor &actor);
protected:
bool _throwable;
diff --git a/src/main/headers/RangedWeapon.hpp b/src/main/headers/RangedWeapon.hpp
index 57b6ea4..0cc3be1 100644
--- a/src/main/headers/RangedWeapon.hpp
+++ b/src/main/headers/RangedWeapon.hpp
@@ -1,10 +1,18 @@
#ifndef RANGEDWEAPON_HPP
#define RANGEDWEAPON_HPP
+#include "Actor.hpp"
+#include "Weapon.hpp"
+
#include <string>
class RangedWeapon : public Weapon
{
+public:
+ RangedWeapon(const std::string &name);
+ bool use(Actor &user, Actor &actor);
+ void reload(Actor &actor);
+
protected:
bool _charged;
unsigned _range;
diff --git a/src/main/headers/Weapon.hpp b/src/main/headers/Weapon.hpp
index ef9d3d5..4c134ea 100644
--- a/src/main/headers/Weapon.hpp
+++ b/src/main/headers/Weapon.hpp
@@ -4,11 +4,15 @@
#include "Item.hpp"
#include "Actor.hpp"
+#include <string>
+
class Weapon : public Item
{
protected:
unsigned _damage;
unsigned _requiredLevel;
+
+ Weapon(const std::string &name) : Item(name) {}
};
#endif