/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* Character.cpp :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: adjoly +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/12/12 16:25:46 by adjoly #+# #+# */ /* Updated: 2024/12/12 18:55:42 by adjoly ### ########.fr */ /* */ /* ************************************************************************** */ #include "Character.hpp" #include "AMateria.hpp" #include "ICharacter.hpp" #include "Log.hpp" Character::Character(void) : _name("noname") { log("➕", "Character", "", "default constructor called"); } Character::~Character(void) { log("➖", "Character", "", "destructor called"); for (int i = 0; i < ENV_SIZE; i++) { if (_materias[i].obj) delete _materias[i].obj; } } Character::Character(std::string const name) : _name(name) { log("➕", "Character", name, "name constructor called"); } Character::Character(const Character &cpy) { for(int i = 0; i < ENV_SIZE; i++) { _materias[i].equipped = cpy._materias[i].equipped; _materias[i].obj = cpy._materias[i].obj->clone(); } _name = cpy._name; log("➕", "Character", "", "copy constructor called"); } Character &Character::operator=(const Character &cpy) { if (this != &cpy) { _name = cpy._name; for (int i = 0; i < ENV_SIZE; i++) { _materias[i].obj = cpy._materias[i].obj->clone(); _materias[i].equipped = cpy._materias[i].equipped; } } log("➕", "Character", "", "copy assignement constructor called"); return (*this); } std::string const &Character::getName(void) const { return(_name); } void Character::equip(AMateria *m) { for (int i = 0; i < ENV_SIZE; i++) { if (!_materias[i].equipped) { _materias[i].obj = m; _materias[i].equipped = true; return ; } } } void Character::unequip(int idx) { if (idx >= 0 && idx < ENV_SIZE) { _materias[idx].equipped = false; } } void Character::use(int idx, ICharacter &character) { if (idx >= 0 && idx < ENV_SIZE && _materias[idx].equipped) { _materias[idx].obj->use(character); } }