/*********************************************************************//**
*	HUD Gametime
*	Okno zobrazuje aktualni herni cas.	
*
*	author: Michal Jirous
*	date: 24.11.2008
*	file: HUD_gametime.cpp
**********************************************************************/

#include "HUD_gametime.h"
#include "ctrl_gamevars.h"
#include "ctrl_var_definition.h"
#include "sys_config.h"
#include "game.h"
#include "fonts.h"
#include "textLibrary.h"

GameTimeWindow::GameTimeWindow()
{
	onInit();
	HUDBaseWindowInit();
	setCaption( textLibrary::getText( TXT_GAMETIME ), "REGULAR", FONT_ALIGN_LEFT );
	m_iZeroCharSize = -1;
}


void GameTimeWindow::onDefault()
{
	float x = (systemconf::getSystemInfo().m_iResolutionWidth - HUD_GAMETIME_WIDTH) * vardef::HUD_GAMETIME_WIN_X_DEFAULT;
	float y = systemconf::getSystemInfo().m_iResolutionHeight-HUD_GAMETIME_HEIGHT - (systemconf::getSystemInfo().m_iResolutionHeight-HUD_GAMETIME_HEIGHT) * vardef::HUD_GAMETIME_WIN_Y_DEFAULT;
	setPosition( x, y );
}

void GameTimeWindow::onCancel()
{
	float x = (systemconf::getSystemInfo().m_iResolutionWidth - HUD_GAMETIME_WIDTH) * gamevarsLibrary::getfData( vardef::HUD_GAMETIME_WIN_X );
	float y = systemconf::getSystemInfo().m_iResolutionHeight-HUD_GAMETIME_HEIGHT - (systemconf::getSystemInfo().m_iResolutionHeight-HUD_GAMETIME_HEIGHT) * gamevarsLibrary::getfData( vardef::HUD_GAMETIME_WIN_Y );
	setPosition( x, y );
}

void GameTimeWindow::onSave()
{
	float x = (m_fGlobalXpos) / (systemconf::getSystemInfo().m_iResolutionWidth-HUD_GAMETIME_WIDTH);
	float y = (m_fGlobalYpos + systemconf::getSystemInfo().m_iResolutionHeight+HUD_GAMETIME_HEIGHT) / (systemconf::getSystemInfo().m_iResolutionHeight-HUD_GAMETIME_HEIGHT);
	gamevarsLibrary::setVariable( vardef::HUD_GAMETIME_WIN_X, x );
	gamevarsLibrary::setVariable( vardef::HUD_GAMETIME_WIN_Y, y );
}

void GameTimeWindow::onInit()
{
	m_pFont = fontLibrary::getFont("OXYGEN");
	m_fWidth = HUD_GAMETIME_WIDTH;
	m_fHeight = HUD_GAMETIME_HEIGHT;
	m_fGlobalXpos = (systemconf::getSystemInfo().m_iResolutionWidth-HUD_GAMETIME_WIDTH) * gamevarsLibrary::getfData( vardef::HUD_GAMETIME_WIN_X );
	m_fGlobalYpos = systemconf::getSystemInfo().m_iResolutionHeight-HUD_GAMETIME_HEIGHT - (systemconf::getSystemInfo().m_iResolutionHeight-HUD_GAMETIME_HEIGHT) * gamevarsLibrary::getfData( vardef::HUD_GAMETIME_WIN_Y );
	/*m_ValueHolder.setColorCritical( HUD::HUD_COLOR_CRITICAL );
	m_ValueHolder.setColorDefault( HUD_HEALTH_COLOR );
	m_ValueHolder.setCriticalValue( CRITICAL_HEALTH );
	m_ValueHolder.setColorHighLighted( HUD_HEALTH_HIGHLIGHTED );*/
}

void GameTimeWindow::componentDraw( ScissorBox &scissorBox )
{
	if( game.m_pPlayer )
	{
		glPushAttrib( GL_ENABLE_BIT  | GL_CURRENT_BIT );
		glColor4fv( HUD_GAMETIME_COLOR.values );
		glDisable( GL_SCISSOR_TEST );
		fontLibrary::simpleDrawText( m_sCurrentTime, scissorBox.x + scissorBox.w / 2.0f - (m_sCurrentTime.length() * m_iZeroCharSize) / 2, scissorBox.y + HUD_GAMETIME_BORDER, m_pFont );
		//m_ValueHolder.draw( scissorBox.x + HUD_GAMETIME_BORDER, scissorBox.y + HUD_GAMETIME_BORDER, "HEALTH", m_fAlphaMultiplier  );
		glPopAttrib();
	}
}
#include "parsing.h"
void GameTimeWindow::onRun()
{
	if( m_uiCurrentValue != game.getGameTime() )
	{
		m_uiCurrentValue = game.getGameTime();
		
		m_sCurrentTime = parsing::formatTime( m_uiCurrentValue );

		if( m_iZeroCharSize == -1 && m_pFont )
		{
			m_iZeroCharSize = m_pFont->getCharacterWidth('0');
			m_fLetterhalfHeight = (float)m_pFont->m_iLetterHeight;
		}
	}
	
}
