#include ".\hud.h"

HUD::HUD(TextManager* _textManager){
    textManager = _textManager;

    hp = (char*)malloc(sizeof(char)*5);
    hpChar = (char*)malloc(sizeof(char)*4);
    strcpy(hpChar, "HP:\0");

    strength = (char*)malloc(sizeof(char)*5);
    strengthChar = (char*)malloc(sizeof(char)*10);
    strcpy(strengthChar, "Strength:\0");

    mp = (char*)malloc(sizeof(char)*5);
    mpChar = (char*)malloc(sizeof(char)*4);
    strcpy(mpChar, "MP:\0");

    exp = (char*)malloc(sizeof(char)*10);
    expChar = (char*)malloc(sizeof(char)*5);
    strcpy(expChar, "EXP:\0");

    expToNextLevel = (char*)malloc(sizeof(char)*10);
    expToNextLevelChar = (char*)malloc(sizeof(char)*15);
    strcpy(expToNextLevelChar, "Next Level At:\0");

    level = (char*)malloc(sizeof(char)*10);
    levelChar = (char*)malloc(sizeof(char)*7);
    strcpy(levelChar, "Level:\0");

	frameRate = (char*)malloc(sizeof(char)*5);
    frameRateChar = (char*)malloc(sizeof(char)*11);
    strcpy(frameRateChar, "Frame Rate:\0");

	mainTileX = ( char* ) malloc( sizeof( char ) * 5 );
	mainTileXChar = ( char* ) malloc( sizeof( char ) * 3 );
	strcpy(mainTileXChar, "X:\0" );
	
    mainTileY = ( char* ) malloc( sizeof( char ) * 5 );
	mainTileYChar = ( char* ) malloc( sizeof( char ) * 3 );
	strcpy(mainTileYChar, "Y:\0" );
}

HUD::~HUD(void){
    free(frameRate);
    free(frameRateChar);
	free(mainTileX);
	free(mainTileXChar);
	free(mainTileY);
	free(mainTileYChar);
    free(hp);
    free(hpChar);
    free(exp);
    free(expChar);
    free(expToNextLevel);
    free(expToNextLevelChar);
    free(level);
    free(levelChar);
    free(mp);
    free(mpChar);
    free(strength);
    free(strengthChar);
}

void HUD::displayCharInfo(){
    hpCharText  = textManager->addString(64,16,hpChar,15,-1,0.5, Text::SCREEN);
    hpText      = textManager->addString(64+textManager->getStringWidth("HP:      ",15),16,hp,15,-1,0.5, Text::SCREEN );

    mpCharText = textManager->addString(64,66,mpChar,15,-1,0.5, Text::SCREEN);
    mpText     = textManager->addString(64+textManager->getStringWidth("MP:      ",15),66,mp,15,-1,0.5, Text::SCREEN );

    strengthCharText = textManager->addString(64,116,strengthChar,15,-1,0.5, Text::SCREEN);
    strengthText     = textManager->addString(64+textManager->getStringWidth("Strength:",15),116,strength,15,-1,0.5, Text::SCREEN );

    levelCharText = textManager->addString(64,166,levelChar,15,-1,0.5, Text::SCREEN);
    levelText     = textManager->addString(64+textManager->getStringWidth("Level   :",15),166,level,15,-1,0.5, Text::SCREEN );

    expCharText = textManager->addString(64,216,expChar,15,-1,0.5, Text::SCREEN);
    expText     = textManager->addString(64+textManager->getStringWidth("EXP:     ",15),216,exp,15,-1,0.5, Text::SCREEN );

    //expToNextLevelCharText = textManager->addString(64,266,expToNextLevelChar,15,-1,0.5, Text::SCREEN);
    //expToNextLevelText     = textManager->addString(64+textManager->getStringWidth("Next Level In:",15),266,expToNextLevel,15,-1,0.5, Text::SCREEN );

}

void HUD::displayFrameRate(){
	frameRateCharText = textManager->addString(64,400,frameRateChar,15,-1,0.5, Text::SCREEN);
	frameRateText = textManager->addString(64+textManager->getStringWidth("Frame Rate:",15),400,frameRate,15,-1,0.5, Text::SCREEN );

	mainTileXCharText = textManager->addString(64,450,mainTileXChar,15,-1,0.5, Text::SCREEN);
	mainTileXText = textManager->addString(64+textManager->getStringWidth("X:",15),450,mainTileX,15,-1,0.5, Text::SCREEN );
	
    mainTileYCharText = textManager->addString(64,500,mainTileYChar,15,-1,0.5, Text::SCREEN);
	mainTileYText = textManager->addString(64+textManager->getStringWidth("Y:",15),500,mainTileY,15,-1,0.5, Text::SCREEN );
}

void HUD::updateHP(int value){
    itoa( value, hp, 10);
	hpText->setString(hp);
}

void HUD::updateMP(int value){
    itoa( value, mp, 10);
	mpText->setString(mp);
}

void HUD::updateEXP(int value){
    itoa( value, exp, 10);
	expText->setString(exp);
}

void HUD::updateEXPNeededToLevel(int value){
    itoa( value, expToNextLevel, 10);
	expToNextLevelText->setString(expToNextLevel);
}

void HUD::updateFrameRate(int value){
    itoa( value, frameRate, 10);
	frameRateText->setString(frameRate);
}

void HUD::updateMainTileX(int value){
    itoa( value, mainTileX, 10);
	mainTileXText->setString(mainTileX);
}

void HUD::updateMainTileY(int value){
    itoa( value, mainTileY, 10);
	mainTileYText->setString(mainTileY);
}

void HUD::updateLevel(int value){
    itoa( value, level, 10);
	levelText->setString(level);
}

void HUD::updateStrength(int value){
    itoa( value, strength, 10);
	strengthText->setString(strength);
}

