55 lines
2.0 KiB
C++
55 lines
2.0 KiB
C++
/* ************************************************************************** */
|
||
/* */
|
||
/* ::: :::::::: */
|
||
/* ScavTrap.cpp :+: :+: :+: */
|
||
/* +:+ +:+ +:+ */
|
||
/* By: adjoly <adjoly@student.42angouleme.fr> +#+ +:+ +#+ */
|
||
/* +#+#+#+#+#+ +#+ */
|
||
/* Created: 2024/11/27 12:53:46 by adjoly #+# #+# */
|
||
/* Updated: 2024/11/27 12:59:02 by adjoly ### ########.fr */
|
||
/* */
|
||
/* ************************************************************************** */
|
||
|
||
#include "ScavTrap.hpp"
|
||
#include "ClapTrap.hpp"
|
||
|
||
ScavTrap::ScavTrap(void) : ClapTrap() {
|
||
log("➕", "default constructor called");
|
||
}
|
||
|
||
ScavTrap::~ScavTrap(void) {
|
||
log("➖", "destructor called");
|
||
}
|
||
|
||
ScavTrap::ScavTrap(std::string name) : ClapTrap(name) {
|
||
log("➕", getName(), "constructor called");
|
||
}
|
||
|
||
ScavTrap::ScavTrap(const ScavTrap &other) {
|
||
*this = other;
|
||
log("➕", getName(), "copy constructor called");
|
||
}
|
||
|
||
ScavTrap &ScavTrap::operator=(const ScavTrap &cpy) {
|
||
log("🟰", getName(), "copy assignement constructor called");
|
||
if (this != &cpy) {
|
||
setName(cpy.getName());
|
||
setHealth(cpy.getHealth());
|
||
setEnergyPoints(cpy.getEnergyPoints());
|
||
setAttackDamage(cpy.getAttackDamage());
|
||
}
|
||
return (*this);
|
||
}
|
||
|
||
void ScavTrap::attack(const std::string& target) {
|
||
if (getHealth() == 0) {
|
||
log("💀", getName(), "can't attack already dead");
|
||
return ;
|
||
} else if (getEnergyPoints() == 0) {
|
||
log("💤", getName(), "can't attack no energy left GO TO SLEEP!");
|
||
return ;
|
||
}
|
||
log("💥", getName(), "attacks " + target + " causing " + iToS(getAttackDamage()) + " points of damage!");
|
||
setEnergyPoints(getEnergyPoints() - 1);
|
||
}
|