#include "heroi.h"

CHeroi::CHeroi(int posicaoX, int posicaoY, volatile unsigned int *enderecoTemporizador)
{
	gTime = enderecoTemporizador;
	posX = posicaoX;
	posY = posicaoY;
	direcao = DIR_DOWN;
	LoadCharset();
}

CHeroi::~CHeroi()
{
	// destruir o charset
	for (int linha = 0; linha < NUM_DIRECOES; linha++)
		for (int coluna = 0; coluna < NUM_FRAMES; coluna++)
			destroy_bitmap(charset[linha][coluna]);
}

void CHeroi::LoadCharset()
{
	BITMAP* charsetTemp = load_bmp(CHARSET_NAME, NULL);
	for (int linha = 0; linha < NUM_DIRECOES; linha++)
		for (int coluna = 0; coluna < NUM_FRAMES; coluna++)
		{
			charset[linha][coluna] = create_bitmap(TILE_SIZE, TILE_SIZE);
			blit(charsetTemp, charset[linha][coluna], coluna * TILE_SIZE, linha * TILE_SIZE, 0, 0, TILE_SIZE, TILE_SIZE);
		}
	destroy_bitmap(charsetTemp);
}

void CHeroi::Draw(BITMAP* activePage)
{
	draw_sprite(activePage, charset[direcao][(*gTime / 48) % 2], posX, posY);
}

void CHeroi::MoveUp()
{
	posY--;
	direcao = DIR_UP;
}

void CHeroi::MoveDown()
{
	posY++;
	direcao = DIR_DOWN;
}

void CHeroi::MoveLeft()
{
	posX--;
	direcao = DIR_LEFT;
}

void CHeroi::MoveRight()
{
	posX++;
	direcao = DIR_RIGHT;
}

int CHeroi::GetPosX()
{
	return posX;
}
int CHeroi::GetPosY()
{
	return posY;
}
