ProjectTextRPG/TextRPG/Source/Game/Characters/Monster/Monster.cpp

85 lines
1.4 KiB
C++

#include "pch.h"
#include "Monster.h"
#include "GameInstance.h"
#include "Core/Subsystems/GameInputSystem.h"
#include "Game/Characters/Player/Player.h"
Monster::Monster(MonsterStatData&& Desc) :
MonsterData(std::move(Desc))
{
OriginalData = MonsterData;
}
Monster::~Monster()
{
Release();
}
void Monster::Attack(class Player* Target)
{
GInput << MonsterData.Name << "이 공격했다! \n";
system("pause");
std::string TargetName = Target->GetName();
int TargetDefence = Target->GetDefence();
int Damage = 0;
Damage = (MonsterData.Attack - TargetDefence) < 0 ? 1 : (MonsterData.Attack - TargetDefence);
GInput << TargetName << "에게 " << Damage << " 데미지!" << "\n";
GInput << TargetName << " HP: " << Target->GetHP() << " -> ";
Target->TakeDamage(Damage);
GInput << Target->GetHP() << "\n";
system("pause");
}
void Monster::Release()
{
}
void Monster::TakeDamage(int Amount)
{
MonsterData.HP -= Amount;
}
bool Monster::IsDead()
{
return MonsterData.HP < 0;
}
void Monster::Reset()
{
MonsterData = OriginalData;
}
std::string Monster::GetName() const
{
return MonsterData.Name;
}
std::string Monster::GetDropItemName() const
{
return MonsterData.DropItemName;
}
int Monster::GetDropItemPrice() const
{
return MonsterData.DropItemPrice;
}
int Monster::GetHP() const
{
return MonsterData.HP;
}
int Monster::GetAttack() const
{
return MonsterData.Attack;
}
int Monster::GetDefence() const
{
return MonsterData.Defence;
}