aboutsummaryrefslogtreecommitdiff
path: root/cpp04/ex03/Character.cpp
diff options
context:
space:
mode:
authorCharles <sircharlesaze@gmail.com>2020-04-14 18:02:14 +0200
committerCharles <sircharlesaze@gmail.com>2020-04-14 18:02:14 +0200
commitefea8712aaf8169b1184cceb83705ca6b8783173 (patch)
tree3c682f6af9d5877ddfa1740f4bac10f5f5123ddc /cpp04/ex03/Character.cpp
parent119f7f96e77a2d86d692e82645dde4c2dc054052 (diff)
downloadpiscine_cpp-efea8712aaf8169b1184cceb83705ca6b8783173.tar.gz
piscine_cpp-efea8712aaf8169b1184cceb83705ca6b8783173.tar.bz2
piscine_cpp-efea8712aaf8169b1184cceb83705ca6b8783173.zip
cpp04, ex03 not finished, require more sophisticated main
Diffstat (limited to 'cpp04/ex03/Character.cpp')
-rw-r--r--cpp04/ex03/Character.cpp72
1 files changed, 72 insertions, 0 deletions
diff --git a/cpp04/ex03/Character.cpp b/cpp04/ex03/Character.cpp
new file mode 100644
index 0000000..34aaa48
--- /dev/null
+++ b/cpp04/ex03/Character.cpp
@@ -0,0 +1,72 @@
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* Character.cpp :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2020/04/14 16:45:54 by charles #+# #+# */
+/* Updated: 2020/04/14 17:59:57 by charles ### ########.fr */
+/* */
+/* ************************************************************************** */
+
+#include "Character.hpp"
+
+Character::Character() : m_name(""), m_inventory_size(0)
+{
+}
+
+Character::Character(Character const& other)
+{
+ *this = other;
+}
+
+void Character::operator=(Character const& other)
+{
+ for (int i = 0; i < m_inventory_size; i++)
+ delete m_inventory[i];
+ m_inventory_size = other.m_inventory_size;
+ for (int i = 0; i < m_inventory_size; i++)
+ m_inventory[i] = other.m_inventory[i]->clone();
+ m_name = other.m_name;
+}
+
+Character::~Character()
+{
+ for (int i = 0; i < m_inventory_size; i++)
+ delete m_inventory[i];
+}
+
+Character::Character(std::string const& name)
+ : m_name(name), m_inventory_size(0)
+{
+}
+
+std::string const& Character::getName() const
+{
+ return m_name;
+}
+
+void Character::equip(AMateria* m)
+{
+ if (m_inventory_size >= INVENTORY_MAX_SIZE)
+ return;
+ m_inventory[m_inventory_size] = m;
+ m_inventory_size++;
+}
+
+void Character::unequip(int idx)
+{
+ if (idx < 0 || idx >= m_inventory_size)
+ return;
+ for (int i = idx; i < m_inventory_size - 1; i++)
+ m_inventory[i] = m_inventory[i + 1];
+ m_inventory_size--;
+}
+
+void Character::use(int idx, ICharacter& target)
+{
+ if (idx < 0 || idx >= m_inventory_size)
+ return;
+ m_inventory[idx]->use(target);
+}