#include "class/ScavTrap.hpp" // ************************************************************************** // // Constructors // // ************************************************************************** // ScavTrap::ScavTrap(std::string const &name) : ClapTrap( name, ScavTrap::_defaultHitPoints, ScavTrap::_defaultEnergyPoints, ScavTrap::_defaultAttackDamages), _activeMode(false) { if (DEBUG) std::cout << std::boolalpha << "Creating ScavTrap " << this->_name << " (" << this->_hitPoints << ")" << " (" << this->_energyPoints << ")" << " (" << this->_attackDamages << ")" << " (" << this->_activeMode << ")" << std::endl; } ScavTrap::ScavTrap(ScavTrap const &src) : ClapTrap( src._name, src._hitPoints, src._energyPoints, src._attackDamages) { if (DEBUG) std::cout << std::boolalpha << "Creating ScavTrap " << this->_name << " (" << this->_hitPoints << ")" << " (" << this->_energyPoints << ")" << " (" << this->_attackDamages << ")" << " (" << this->_activeMode << ")" << std::endl; } // ************************************************************************* // // Destructors // // ************************************************************************* // ScavTrap::~ScavTrap(void) { if (DEBUG) std::cout << "Destroying ScavTrap " << this->_name << std::endl; } // ************************************************************************* // // Public Member Functions // // ************************************************************************* // void ScavTrap::attack(std::string const &target) { if (DEBUG) std::cout << "Calling ScavTrap::attack()" << std::endl; std::cout << "ScavTrap " << this->_name; if (this->_hitPoints && this->_energyPoints) std::cout << " deals " << this->_attackDamages << " damages to "; else if (!this->_hitPoints) std::cout << " hasn't enough hit points to attack "; else std::cout << " hasn't enough energy points to attack "; std::cout << target << std::endl; this->_energyPoints -= !!this->_energyPoints; } void ScavTrap::guardGate(void) { if (DEBUG) std::cout << "Calling ScavTrap::guardGate()" << std::endl; std::cout << "ScavTrap " << this->_name; if (!this->_activeMode) std::cout << " enters "; else std::cout << " leaves "; std::cout << "Gate keeper mode" << std::endl; this->_activeMode ^= true; } // ************************************************************************* // // Operators // // ************************************************************************* // ScavTrap &ScavTrap::operator=(ScavTrap const &rhs) { if (DEBUG) std::cout << "Calling ScavTrap::operator=()" << std::endl; if (this != &rhs) { this->_name = rhs._name; this->_hitPoints = rhs._hitPoints; this->_energyPoints = rhs._energyPoints; this->_attackDamages = rhs._attackDamages; this->_activeMode = rhs._activeMode; } return *this; } std::ostream &operator<<(std::ostream &o, ScavTrap const &rhs) { o << "ScavTrap:" << std::endl << "\t" "name: " << rhs.getName() << std::endl << "\t" "hitPoints: " << rhs.getHitPoints() << std::endl << "\t" "energyPoints: " << rhs.getEnergyPoints() << std::endl << "\t" "attackDamages: " << rhs.getAttackDamages() << std::endl; return o; } // ************************************************************************** // // Private Attributes // // ************************************************************************** // std::string const ScavTrap::_defaultName = std::string("defaultName"); unsigned int const ScavTrap::_defaultHitPoints = 100; unsigned int const ScavTrap::_defaultEnergyPoints = 50; unsigned int const ScavTrap::_defaultAttackDamages = 20;