#include #include "Monster.h" Monster::Monster() : Entity("My Monster"), _pWeapon(new Weapon()) { std::cout << "Create Monster" << std::endl; } Monster::Monster(const Monster& other) : Entity(other), ICompareable(other) { std::cout << "Create Copy of a Monster" << std::endl; // shallow copy //this->_pWeapon = other._pWeapon; this->_strength = other._strength; this->_speed = other._speed; // deep copy of internal pointers this->_pWeapon = new Weapon(*other._pWeapon); } Monster::Monster(int strength) : Entity("My Monster"), _strength(strength), _pWeapon(new Weapon()) { std::cout << "Create Monster with strength" << std::endl; this->name = "My Monster"; } Monster::~Monster() { std::cout << "Destroy Monster" << std::endl; if (_pWeapon != nullptr) { delete _pWeapon; _pWeapon = nullptr; } } //Monster Monster::Create(Monsters type) //{ // Monster monster; // switch (type) // { // case Ork: // monster._strength = 10; // monster._speed = 1.0f; // break; // case Troll: // monster._strength = 5; // monster._speed = 3.0f; // break; // case Elve: // monster._strength = 1; // monster._speed = 10.0f; // break; // default: // break; // } // // return monster; //} std::string Monster::ToString() { //return name + " " + "(" + std::to_string(_strength) + ")"; return std::format("{} ({})", name, _strength); } int Monster::Compare(ICompareable* other) { // TODO: implement later return 0; }