76 lines
1.4 KiB
C++
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;
|
|
}
|