ScavTrap.cpp
1 /* ************************************************************************** */ 2 /* */ 3 /* ::: :::::::: */ 4 /* ScavTrap.cpp :+: :+: :+: */ 5 /* +:+ +:+ +:+ */ 6 /* By: gychoi <gychoi@student.42seoul.kr> +#+ +:+ +#+ */ 7 /* +#+#+#+#+#+ +#+ */ 8 /* Created: 2023/08/09 18:54:29 by gychoi #+# #+# */ 9 /* Updated: 2023/08/11 23:43:49 by gychoi ### ########.fr */ 10 /* */ 11 /* ************************************************************************** */ 12 13 #include "ScavTrap.hpp" 14 #include <iostream> 15 16 /* 17 * Constructor & Destructor 18 */ 19 20 ScavTrap::ScavTrap(void) 21 { 22 std::cout << "ScavTrap default constructor called" << std::endl; 23 _hit = 100; 24 _energy = 50; 25 _attack = 20; 26 introduce(); 27 } 28 29 ScavTrap::ScavTrap(std::string const& name) : ClapTrap(name) 30 { 31 std::cout << "ScavTrap parameterized constructor called" << std::endl; 32 const_cast<std::string&>(_name) = name; 33 _hit = 100; 34 _energy = 50; 35 _attack = 20; 36 introduce(); 37 } 38 39 ScavTrap::ScavTrap(ScavTrap const& target) : ClapTrap(target.getName()) 40 { 41 std::cout << "ScavTrap copy constructor called" << std::endl; 42 if (this != &target) 43 *this = target; 44 introduce(); 45 } 46 47 ScavTrap& ScavTrap::operator=(ScavTrap const& target) 48 { 49 std::cout << "ScavTrap copy assignment operator called" << std::endl; 50 if (this != &target) 51 { 52 const_cast<std::string&>(_name) = target._name; 53 _hit = target._hit; 54 _energy = target._energy; 55 _attack = target._attack; 56 } 57 return (*this); 58 } 59 60 ScavTrap::~ScavTrap(void) 61 { 62 std::cout << "ScavTrap destructor called" << std::endl; 63 } 64 65 /* 66 * Public Member Functions : ScavTrap Actions 67 */ 68 69 void ScavTrap::attack(std::string const& target) 70 { 71 if (_energy > 0) 72 { 73 std::cout << "ScavTrap " << _name << " attacks " << target << " causing " << _attack << " points of damage!" << std::endl; 74 _energy--; 75 } 76 else 77 std::cout << "ScavTrap " << _name << " is out of energy. Cannot move!" << std::endl; 78 } 79 80 void ScavTrap::guardGate(void) 81 { 82 if (_energy > 0) 83 { 84 std::cout << "ScavTrap " << _name << " is guarding the gate" << std::endl; 85 std::cout << "[" << getName() << "]: " << "Guarding gates is FUN!" << std::endl; 86 _energy--; 87 } 88 else 89 std::cout << "ScavTrap " << _name << " is out of energy. Cannot move!" << std::endl; 90 } 91 92 void ScavTrap::introduce(void) 93 { 94 std::cout << "["<< getName() << "]: " << "Halt, moon citizen! I've been chosen to stand out here far, far away from everyone else -- to guard the main gate to the old communications facility." << std::endl; 95 }