/*********************************************************************
*	Head Up Display pro naboje.
*	Okno HUD, ktere zobrazuje pocty naboju ve zbrani a v zasobe
*
*	author: Michal Jirous
*	date: 24.11.2008
*	file: HUD_ammo.cpp
**********************************************************************/

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

AmmoWindow::AmmoWindow()
{
	onInit();
	HUDBaseWindowInit();
	setCaption( textLibrary::getText( TXT_AMMO ), "REGULAR", FONT_ALIGN_LEFT );
}


void AmmoWindow::onDefault()
{
	float x = systemconf::getSystemInfo().m_iResolutionWidth * vardef::HUD_AMMO_WIN_X_DEFAULT;
	float y = systemconf::getSystemInfo().m_iResolutionHeight * vardef::HUD_AMMO_WIN_Y_DEFAULT;
	setPosition( x, y );
}

void AmmoWindow::onCancel()
{
	float x = systemconf::getSystemInfo().m_iResolutionWidth * gamevarsLibrary::getfData( vardef::HUD_AMMO_WIN_X );
	float y = systemconf::getSystemInfo().m_iResolutionHeight * gamevarsLibrary::getfData( vardef::HUD_AMMO_WIN_Y );
	setPosition( x, y );
}

void AmmoWindow::onSave()
{
	float x = m_fGlobalXpos / systemconf::getSystemInfo().m_iResolutionWidth;
	float y = (m_fGlobalYpos) / systemconf::getSystemInfo().m_iResolutionHeight;
	gamevarsLibrary::setVariable( vardef::HUD_AMMO_WIN_X, x );
	gamevarsLibrary::setVariable( vardef::HUD_AMMO_WIN_Y, y );
}

void AmmoWindow::onInit()
{
	m_fWidth = HUD_AMMO_WIDTH;
	m_fHeight = HUD_AMMO_HEIGHT;
	m_fGlobalXpos = systemconf::getSystemInfo().m_iResolutionWidth * gamevarsLibrary::getfData( vardef::HUD_AMMO_WIN_X );
	m_fGlobalYpos = systemconf::getSystemInfo().m_iResolutionHeight * gamevarsLibrary::getfData( vardef::HUD_AMMO_WIN_Y );

	m_ValueHolder.setColorCritical( HUD::HUD_COLOR_CRITICAL );
	m_ValueHolder.setColorDefault( HUD_AMMO_COLOR );
	m_ValueHolder.setCriticalValue( 0 );
	m_ValueHolder.setColorHighLighted( HUD_AMMO_HIGHLIGHTED );

	m_TotalAmmoValueHolder.setColorCritical( HUD::HUD_COLOR_CRITICAL );
	m_TotalAmmoValueHolder.setColorDefault( HUD_AMMO_COLOR );
	m_TotalAmmoValueHolder.setCriticalValue( 0 );
	m_TotalAmmoValueHolder.setColorHighLighted( HUD_AMMO_HIGHLIGHTED );
}

void AmmoWindow::componentDraw( ScissorBox &scissorBox )
{
	BasicWeapon *tmpWeapon = game.m_pPlayer->getCurrentWeapon();
	if( tmpWeapon && tmpWeapon->needAmmo() && game.m_pPlayer )
	{
		m_ValueHolder.draw( scissorBox.x + HUD_AMMO_BORDER, scissorBox.y + HUD_AMMO_BORDER, "HEALTH", m_fAlphaMultiplier  );
		m_TotalAmmoValueHolder.draw( scissorBox.x + scissorBox.w / 2 + HUD_AMMO_BORDER, scissorBox.y + HUD_AMMO_BORDER, "HEALTH", m_fAlphaMultiplier  );
	}
}

void AmmoWindow::onRun()
{
	if( game.m_pPlayer )
	{
		BasicWeapon *tmpWeapon = game.m_pPlayer->getCurrentWeapon();
		int ammo = 0;
		int totalammo = 0;
		if( tmpWeapon )
		{
			ammo = tmpWeapon->getAmmo();
			totalammo = tmpWeapon->getTotalAmmo();
		}
		m_ValueHolder.setValueHighLighted( ammo );
		m_ValueHolder.run();

		m_TotalAmmoValueHolder.setValueHighLighted( totalammo );
		m_TotalAmmoValueHolder.run();
	}
}
