2024-11-27 13:02:43 +01:00
|
|
|
|
/* ************************************************************************** */
|
|
|
|
|
/* */
|
|
|
|
|
/* ::: :::::::: */
|
|
|
|
|
/* ScavTrap.cpp :+: :+: :+: */
|
|
|
|
|
/* +:+ +:+ +:+ */
|
|
|
|
|
/* By: adjoly <adjoly@student.42angouleme.fr> +#+ +:+ +#+ */
|
|
|
|
|
/* +#+#+#+#+#+ +#+ */
|
|
|
|
|
/* Created: 2024/11/27 12:53:46 by adjoly #+# #+# */
|
2024-11-29 15:39:44 +01:00
|
|
|
|
/* Updated: 2024/11/29 15:39:05 by adjoly ### ########.fr */
|
2024-11-27 13:02:43 +01:00
|
|
|
|
/* */
|
|
|
|
|
/* ************************************************************************** */
|
|
|
|
|
|
|
|
|
|
#include "ScavTrap.hpp"
|
2024-11-29 15:39:44 +01:00
|
|
|
|
#include <iostream>
|
|
|
|
|
|
|
|
|
|
void logScav(std::string emoji, std::string who, std::string str) {
|
|
|
|
|
std::cout << "「" << emoji << "」ScavTrap(" << who << "): " << str << std::endl;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void logScav(std::string emoji, std::string str) {
|
|
|
|
|
std::cout << "「" << emoji << "」ScavTrap: " << str << std::endl;
|
|
|
|
|
}
|
2024-11-27 13:02:43 +01:00
|
|
|
|
|
|
|
|
|
ScavTrap::ScavTrap(void) : ClapTrap() {
|
2024-11-29 15:39:44 +01:00
|
|
|
|
logScav("➕", "default constructor called");
|
|
|
|
|
_health = 100;
|
|
|
|
|
_energyPoints = 50;
|
|
|
|
|
_attackDamage = 20;
|
2024-11-27 13:02:43 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ScavTrap::~ScavTrap(void) {
|
2024-11-29 15:39:44 +01:00
|
|
|
|
logScav("➖", "destructor called");
|
2024-11-27 13:02:43 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ScavTrap::ScavTrap(std::string name) : ClapTrap(name) {
|
2024-11-29 15:39:44 +01:00
|
|
|
|
logScav("➕", name, "constructor called");
|
|
|
|
|
_health = 100;
|
|
|
|
|
_energyPoints = 50;
|
|
|
|
|
_attackDamage = 20;
|
2024-11-27 13:02:43 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ScavTrap::ScavTrap(const ScavTrap &other) {
|
|
|
|
|
*this = other;
|
2024-11-29 15:39:44 +01:00
|
|
|
|
logScav("➕", _name, "copy constructor called");
|
2024-11-27 13:02:43 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ScavTrap &ScavTrap::operator=(const ScavTrap &cpy) {
|
2024-11-29 15:39:44 +01:00
|
|
|
|
logScav("🟰", _name, "copy assignement constructor called");
|
2024-11-27 13:02:43 +01:00
|
|
|
|
if (this != &cpy) {
|
2024-11-29 15:39:44 +01:00
|
|
|
|
_name = cpy.getName();
|
|
|
|
|
_health = cpy.getHealth();
|
|
|
|
|
_energyPoints = cpy.getEnergyPoints();
|
|
|
|
|
_attackDamage = cpy.getAttackDamage();
|
2024-11-27 13:02:43 +01:00
|
|
|
|
}
|
|
|
|
|
return (*this);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void ScavTrap::attack(const std::string& target) {
|
2024-11-29 15:39:44 +01:00
|
|
|
|
if (_health == 0) {
|
|
|
|
|
logScav("💀", _name, "can't attack already dead");
|
2024-11-27 13:02:43 +01:00
|
|
|
|
return ;
|
2024-11-29 15:39:44 +01:00
|
|
|
|
} else if (_energyPoints == 0) {
|
|
|
|
|
logScav("💤", _name, "can't attack no energy left GO TO SLEEP!");
|
2024-11-27 13:02:43 +01:00
|
|
|
|
return ;
|
|
|
|
|
}
|
2024-11-29 15:39:44 +01:00
|
|
|
|
logScav("💥", _name, "attacks " + target + " causing " + iToS(_attackDamage) + " points of damage!");
|
2024-11-27 13:02:43 +01:00
|
|
|
|
setEnergyPoints(getEnergyPoints() - 1);
|
|
|
|
|
}
|