From 3472e0de54bbfa63517de8db7d665b732389ae85 Mon Sep 17 00:00:00 2001 From: mafaldo Date: Mon, 12 Feb 2018 23:43:14 +0100 Subject: Add RangedWeapon, MeleeWeapon --- src/main/headers/Bullet.hpp | 12 ++++++++++++ src/main/headers/Item.hpp | 11 ++++++----- src/main/headers/MeleeWeapon.hpp | 7 ++++++- src/main/headers/RangedWeapon.hpp | 8 ++++++++ src/main/headers/Weapon.hpp | 4 ++++ 5 files changed, 36 insertions(+), 6 deletions(-) create mode 100644 src/main/headers/Bullet.hpp (limited to 'src/main/headers') 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 + 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 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 + class Weapon : public Item { protected: unsigned _damage; unsigned _requiredLevel; + + Weapon(const std::string &name) : Item(name) {} }; #endif -- cgit v1.2.1