SpelunkyRemake / Diamond.cpp
Diamond.cpp
Raw
#include "pch.h"
#include "Diamond.h"

Diamond::Diamond(int x, int y, const Type& type)
	: Item(x, y)
	, m_Type{ type }
{
	Init();
	Item::CenterInTile();
}

Diamond::Diamond(const Point2f& pos, const Type& type)
	: Item(pos)
	, m_Type{ type }
{
	Init();
}

void Diamond::Init()
{
	switch (m_Type)
	{
	case Type::GREEN:
		m_Hitbox.width = 38;
		m_Hitbox.height = 33;
		m_HitboxMargin.x = 22;
		m_HitboxMargin.y = 18;

		m_SrcRect.left = 4 * m_ClipWidth;
		m_SrcRect.bottom = m_ClipHeight;

		m_Amount = 800;
		break;
	case Type::BLUE:
		m_Hitbox.width = 32;
		m_Hitbox.height = 33;
		m_HitboxMargin.x = 23;
		m_HitboxMargin.y = 18;

		m_SrcRect.left = 5 * m_ClipWidth;
		m_SrcRect.bottom = m_ClipHeight;

		m_Amount = 1200;
		break;
	case Type::RED:
		m_Hitbox.width = 37;
		m_Hitbox.height = 38;
		m_HitboxMargin.x = 23;
		m_HitboxMargin.y = 17;

		m_SrcRect.left = 6 * m_ClipWidth;
		m_SrcRect.bottom = m_ClipHeight;

		m_Amount = 1600;
		break;
	default:
		break;
	}
}

size_t Diamond::GetTypeHash() const
{
	return typeid(*this).hash_code();
}

Diamond::~Diamond()
{

}

void Diamond::Update(float elapsedSec, const Level& level)
{
	Item::Update(elapsedSec, level);
}

void Diamond::Draw() const
{
	Item::Draw();
}

int Diamond::GetAmount() const
{
	return m_Amount;
}

Diamond::Type Diamond::GetType() const
{
	return m_Type;
}