diff options
| author | Charles <sircharlesaze@gmail.com> | 2020-04-14 18:02:14 +0200 |
|---|---|---|
| committer | Charles <sircharlesaze@gmail.com> | 2020-04-14 18:02:14 +0200 |
| commit | efea8712aaf8169b1184cceb83705ca6b8783173 (patch) | |
| tree | 3c682f6af9d5877ddfa1740f4bac10f5f5123ddc /cpp04/ex03/Character.cpp | |
| parent | 119f7f96e77a2d86d692e82645dde4c2dc054052 (diff) | |
| download | piscine_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.cpp | 72 |
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); +} |
