CPP03/ex03/src/DiamondTrap.cpp
2025-04-07 17:43:15 +02:00

67 lines
2.0 KiB
C++

#include "DiamondTrap.hpp"
#include "ClapTrap.hpp"
#include "ScavTrap.hpp"
#include "FragTrap.hpp"
#include <iostream>
#include <string>
DiamondTrap::DiamondTrap() : ClapTrap("NoName"), _name("NoName")
{
_hitpoints = FragTrap::_hitpoints;
_energy_points = ScavTrap::_energy_points;
_attack_damage = FragTrap::_attack_damage;
std::cout << COLOR11 << "Diamondtrap " << COLOR_RESET << _name << " has been created" << std::endl;
status();
}
DiamondTrap::DiamondTrap(std::string name) : ClapTrap(name + "_clap_name"), _name(name)
{
_hitpoints = FragTrap::_hitpoints;
_energy_points = ScavTrap::_energy_points;
_attack_damage = FragTrap::_attack_damage;
std::cout << COLOR11 << "Diamondtrap " << COLOR_RESET << _name << " has been created" << std::endl;
status();
}
DiamondTrap::DiamondTrap(DiamondTrap const &src)
{
*this = src;
std::cout << COLOR11 << "Diamondtrap " << COLOR_RESET << _name << " has been created by copy constructor" << std::endl;
status();
}
DiamondTrap::~DiamondTrap()
{
std::cout << COLOR11 << "Diamondtrap " << COLOR_RESET << _name << " has been destroyed" << std::endl;
status();
}
DiamondTrap &DiamondTrap::operator=(DiamondTrap const &rhs)
{
if (this == &rhs)
return (*this);
_name = rhs._name;
_hitpoints = rhs._hitpoints;
_energy_points = rhs._energy_points;
_attack_damage = rhs._attack_damage;
ClapTrap::_name = rhs.ClapTrap::_name;
std::cout << COLOR11 << "Diamondtrap " << COLOR_RESET << _name << " has been created by assignment operator" << std::endl;
status();
return (*this);
}
void DiamondTrap::whoAmI(void)
{
std::cout << COLOR11 << "Diamondtrap " << COLOR_RESET
<< "I am " << _name << ", but my ClapTRap friends call me: "
<< ClapTrap::_name << std::endl;
status();
}
void DiamondTrap::status() const
{
std::cout << COLOR11 << "Diamondtrap " << COLOR10 << _name << " has " << _hitpoints
<< " hitpoints, " << _energy_points << " energy points and "
<< _attack_damage << " attack damage." << std::endl;
}