Files
gpd-324/CPlusPlus/Classes/Monster.cpp
T

76 lines
1.4 KiB
C++

#include <format>
#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;
}