/*********************************************************************//**
*	Hlavni menu.
*	Zde se definuji komponenty hlavniho menu, vsechny jeho okna
*	identifikace ovladacich prvku, obsluha udalosti, vykreslovani.
*	Hlavni menu je pocatecni interakci s uzivatelem pri spusteni hry.
*	umoznuje spoustet hru a menit nastaveni.
*
*	author: Michal Jirous
*	date: 25.7.2008
*	file: game_mainmenu.cpp
**********************************************************************/

#include "game_mainmenu.h"
#include "textLibrary.h"
#include "sys_config.h"
#include "ctrl_gamecontrol.h"
#include "sys_console.h"
#include "ctrl_var_definition.h"
#include "graphics.h"
#include "ctrl_keydatabase.h"
#include "sys_controller.h"
#include "mathematic.h"

using namespace mainMenu;
using namespace std;
using namespace systemConsole;
using namespace vardef;

mainMenu::MainMenu mainMenu::main_menu;

/*********************************************************
***********	   CONSTANTS DEFINITIONS	******************
*********************************************************/
const float MAIN_MENU_LOGO_BORDER								= 3.0f;
const Color4I MAIN_MENU_LOGO_COLOR								= Color4I( 174,215,230,220 );
const Color4I MAIN_MENU_KEYSET_TEXT_COLOR						= MAIN_MENU_LOGO_COLOR;
const Color4I MAIN_MENU_PLAYERNAME_COLOR						= MAIN_MENU_LOGO_COLOR;
const Uint32 MAIN_MENU_LOGO_ANIMATION_RESET_TIME				= 1200;
const Uint32 MAIN_MENU_LOGO_ANIMATION_TRANSLATE_RESET_TIME		= 1000;
const Uint32 MAIN_MENU_LOGO_ANIMATION_FAST_RESET_TIME			= 15000;
const float MAIN_MENU_LOGO_POSITION								= BUTTON_HEIGHT * 3.0f;
const float MAIN_MENU_LOGO_IMAGE_SIZE_MULT						= 2.0f;
const float BUTTON_X_POSITION									= 0.1f;

const float MAIN_MENU_KEYSETMODE_MAX_ALPHA						= 0.7f;
const float MAIN_MENU_KEYSETMODE_ALPHA_STEP						= 0.1f;
const float MAIN_MENU_PLAYER_SET_BUTTON_SIZE					= BUTTON_HEIGHT;

static const char*	MAIN_MENU_PLAYER_NAME_FONT					= "SERIF16";

const float MAIN_MENU_SLOW_ANIM_POSITION_STEP					= 0.1f;
const float MAIN_MENU_SLOW_ANIM_SIZE_CHANGE_ALPHA_STEP			= 0.01f;
const float MAIN_MENU_SLOW_ANIM_SIZE_CHANGE_STEP				= 0.1f;

const float MAIN_MENU_FAST_ANIM_SIZE_CHANGE_ALPHA_STEP			= 0.02f;
const float MAIN_MENU_FAST_ANIM_SIZE_CHANGE_STEP_X				= 5.0f;
const float MAIN_MENU_FAST_ANIM_SIZE_CHANGE_STEP_Y				= 1.0f;

/*********************************************************
***********	COMPONENT CALLBACK FUNCTION*******************
*********************************************************/
void buttonCallback( CBaseComponent *pComponent, void * data )
{
	MainMenu *pMainWindow = static_cast<MainMenu*>(data);
	switch( pComponent->getObjectID() )
	{
		case BUTTON_EXIT:
			pMainWindow->joinMessageBox( pMainWindow->m_pMsgQuit );
//			GFG_MessageBox_2Buttons( pMainWindow, GFG_MSGBOX_QUESTION, textLibrary::getText(TXT_REALLY_EXIT), textLibrary::getText(TXT_BACK), BUTTON_MSGBOX_CANCEL, textLibrary::getText(TXT_EXIT), BUTTON_MSGBOX_QUIT );
			break;
		case BUTTON_MSGBOX_QUIT: 
			systemconf::requestQuit();
			break;
		case BUTTON_MSGBOX_CANCEL:
			pMainWindow->removeMessageBox();
			break;
		case BUTTON_PLAY:
			if( pMainWindow->m_pPlayWindow )
				pMainWindow->m_pPlayWindow->setVisible( pMainWindow->m_pPlayWindow->getVisible() ^ 1 );	//switch
			break;
		case BUTTON_PLAYWINDOW_CLOSE:
			if( pMainWindow->m_pPlayWindow )
				pMainWindow->m_pPlayWindow->setVisible( false );
		case LISTBOX_LEVEL_LIST:
			if( pComponent->getObjectType() == GFG_LISTBOX )
			{
				ListBox *listbox = reinterpret_cast<ListBox*>(pComponent);
				LevelPanel *panel = reinterpret_cast<LevelPanel*>( listbox->getSelectedPanel() );
				if( panel )
				{
					pMainWindow->setLevelDescriptionDetails( panel );
				}
			}
			break;
		case BUTTON_OPTION:
			if( pMainWindow->m_pOptionWindow )
				pMainWindow->m_pOptionWindow->setVisible( pMainWindow->m_pOptionWindow->getVisible() ^ 1 );	//switch
			break;
		case OPTION_KEYBOARD_DEFINITION_MAIN:
			if( pMainWindow )
				pMainWindow->setKeySetMode( MAIN_KEY );
			break;
		case OPTION_KEYBOARD_DEFINITION_ALTERNATIVE:
			if( pMainWindow )
				pMainWindow->setKeySetMode( ALTERNATIVE_KEY );
			break;
		case OPTION_BUTTON_SAVE:
			if( pMainWindow )
				pMainWindow->saveOptionSettings();
			break;
		case OPTION_BUTTON_DEFAULT:
			pMainWindow->joinMessageBox( pMainWindow->m_pMsgLostChanges );
			//GFG_MessageBox_2Buttons( pMainWindow, GFG_MSGBOX_QUESTION, textLibrary::getText(28), textLibrary::getText(30), BUTTON_MSGBOX_CANCEL, textLibrary::getText(29), OPTION_DEFAULT_MSGBOX_YES );
			break;
		case OPTION_DEFAULT_MSGBOX_YES:
			if( pMainWindow )
			{
				pMainWindow->loadDefaultOptionSettings();
				pMainWindow->removeMessageBox();
			}
			break;
		case OPTION_BUTTON_CANCEL:
			if( pMainWindow->m_pOptionWindow )
				pMainWindow->m_pOptionWindow->setVisible( false );	//switch
			break;
		case BUTTON_PLAYER_SET:
			if( pMainWindow->m_pPlayerSetWindow )
				pMainWindow->m_pPlayerSetWindow->setVisible( pMainWindow->m_pPlayerSetWindow->getVisible() ^ 1 );	//switch
			break;	
		case PLAYER_CLOSE:
			if( pMainWindow->m_pPlayerSetWindow )
				pMainWindow->m_pPlayerSetWindow->setVisible( false );
			break;
		case PLAYER_ADD:
			pMainWindow->addTypedPlayerName();
			break;
		case PLAYER_NAME_LIST:
			if( pMainWindow->m_pPlayerNames )
				pMainWindow->setCurrentPlayerName( reinterpret_cast<NamePanel*>( pMainWindow->m_pPlayerNames->getSelectedPanel() ) );
			break;
		case BUTTON_RESUME:
			gameControl::game_control.decodeCommand( "resume" );	//TODO
			break;
		case BUTTON_PLAYWINDOW_GO:
			if( pMainWindow )
				pMainWindow->processSelectedLevel();
			break;
		case OPTION_BUTTON_HUDSET:
			gameControl::game_control.decodeCommand( "hudset" );	//TODO
			break;

	}
}

MainMenu::MainMenu() : CMainWindow()
{
	m_pPlayWindow = NULL;
	m_pLevelList = NULL;
	m_pBestPlayer = NULL;
	m_fTargetAlphaLogoAnim = 0.0f;
	m_uiResetTime2 = 0;
	m_uiResetTime = 0;
	m_pOptionWindow = NULL;
	m_uiResetTime3 = 0;
	m_bKeySetMode = false;
	m_fTranslateXAnim = 0.0f;
	m_fTranslateYAnim = 0.0f;
	m_fKeySetAlphaMultiplier = 0.0f;
	m_bAlternative = false;
	m_pMouseSensitivity = NULL;
	m_pLevelName = NULL;
	m_pKeyMapList = NULL;
	m_pLevelDescription = NULL;
	m_pBestTime = NULL;
	m_pWindowedBox = NULL;
	m_pLanguages = NULL;
	m_pSkipIntro = NULL;
	m_pDeveloperMode = NULL;
	m_pPlayerSetWindow = NULL;
	m_pCurrentPlayer = NULL;
	m_pPlayerNames = NULL;
	m_pInsertName = NULL;
	m_pMainMenuPlayerName = NULL;
	m_bSaveNameList = false;
	m_pResumeButton = NULL;
}



void MainMenu::user_draw()
{
	glPushAttrib( GL_CURRENT_BIT | GL_ENABLE_BIT );
	
	glEnable( GL_BLEND );
	glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );
	glBindTexture( GL_TEXTURE_2D, m_LogoTexture.texture_id );
	glEnable( GL_TEXTURE_2D );

	if( m_LogoTexture.texture_id && m_fMyAlpha > ALPHA_TRANSPARENT)
	{
		glColor4fv( MAIN_MENU_LOGO_COLOR.values );
		//vykresleni statickeho loga
			glBegin( GL_QUADS );
				glTexCoord2f( 0, 0 );	glVertex2f( m_LogoRect.x, m_LogoRect.y );
				glTexCoord2f( 1, 0 );	glVertex2f( m_LogoRect.x + m_LogoRect.w, m_LogoRect.y );
				glTexCoord2f( 1, 1 );	glVertex2f( m_LogoRect.x + m_LogoRect.w, m_LogoRect.y + m_LogoRect.h );
				glTexCoord2f( 0, 1 );	glVertex2f( m_LogoRect.x, m_LogoRect.y + m_LogoRect.h );
			glEnd();
	
		//animovane doplnky loga
		m_Logo.draw();
		m_LogoFast.draw();
	}

	glPopAttrib();
}


/*********************************************************
*****	MAIN WINDOW COMPONENT LAYOUT DEFINITION	   *******
*********************************************************/

void MainMenu::init( float width, float height )
{
	console << "Creating Main menu...";
	setSize( width, height );
	GFG_setCallback_default( GFG_newCallback( buttonCallback, this ) );

	//vytvoreni tlacitek - pod sebou
	Button *button = GFG_newButton( textLibrary::getText( TXT_PLAY ), BUTTON_PLAY, BUTTON_WIDTH, BUTTON_HEIGHT ); ;
	button->setPosition( width * BUTTON_X_POSITION, height / 2.0f - BUTTON_HEIGHT );
	addComponent( button );

	button = GFG_newButton( textLibrary::getText( TXT_OPTION ), BUTTON_OPTION, BUTTON_WIDTH, BUTTON_HEIGHT ); ;
	button->setPosition( width * BUTTON_X_POSITION, height / 2.0f - 2*BUTTON_HEIGHT - BUTTON_HEIGHT / 2.0f );
	addComponent( button );

	button = GFG_newButton( textLibrary::getText( TXT_HELP ), BUTTON_HELP, BUTTON_WIDTH, BUTTON_HEIGHT ); ;
	button->setPosition( width * BUTTON_X_POSITION, height / 2.0f - 3*BUTTON_HEIGHT - 2 * BUTTON_HEIGHT / 2.0f );
	addComponent( button );

	button = GFG_newButton( textLibrary::getText( TXT_ABOUT ), BUTTON_ABOUT, BUTTON_WIDTH, BUTTON_HEIGHT ); ;
	button->setPosition( width * BUTTON_X_POSITION, height / 2.0f - 4*BUTTON_HEIGHT - 3 * BUTTON_HEIGHT / 2.0f );
	addComponent( button );
	
	button = GFG_newButton( textLibrary::getText( TXT_END ), BUTTON_EXIT, BUTTON_WIDTH, BUTTON_HEIGHT ); ;
	button->setPosition( width * BUTTON_X_POSITION, height / 2.0f - 5*BUTTON_HEIGHT -  4 * BUTTON_HEIGHT / 2.0f );
	addComponent( button );


	m_pResumeButton = GFG_newButton( textLibrary::getText( TXT_RESUME ), BUTTON_RESUME, BUTTON_WIDTH, BUTTON_HEIGHT ); ;
	m_pResumeButton->setPosition( width * BUTTON_X_POSITION, height / 2.0f + BUTTON_HEIGHT / 2.0f );
	m_pResumeButton->setVisible( false );
	addComponent( m_pResumeButton );

	//popisek s aktualnim jmenem hrace
	m_pMainMenuPlayerName = new SimpleLabel( width - MAIN_MENU_PLAYER_SET_BUTTON_SIZE, MAIN_MENU_PLAYER_SET_BUTTON_SIZE );
	m_pMainMenuPlayerName->setPosition( 0, m_fHeight - MAIN_MENU_PLAYER_SET_BUTTON_SIZE );
	m_pMainMenuPlayerName->setAlign( FONT_ALIGN_RIGHT );
	m_pMainMenuPlayerName->setFont( MAIN_MENU_PLAYER_NAME_FONT );
	m_pMainMenuPlayerName->setColorText( MAIN_MENU_PLAYERNAME_COLOR );
	m_pMainMenuPlayerName->setCaption( gamevarsLibrary::getsData( vardef::NAME_NAME ) );
	addComponent( m_pMainMenuPlayerName );

	//tlacitko pro otevreni okna vyberu jmena hrace
	button = GFG_newButton( "", BUTTON_PLAYER_SET, MAIN_MENU_PLAYER_SET_BUTTON_SIZE, MAIN_MENU_PLAYER_SET_BUTTON_SIZE );
	button->setPosition( width - MAIN_MENU_PLAYER_SET_BUTTON_SIZE, height - MAIN_MENU_PLAYER_SET_BUTTON_SIZE );
	addComponent( button );

	//animated logo definition
	m_LogoTexture.image.setFilename( LOGO_PICTURE_FILE );

	textureLibrary.applyTexture( &m_LogoTexture );
	
	m_Logo.m_iTextureID = m_LogoTexture.texture_id;
	m_LogoFast.m_iTextureID = m_LogoTexture.texture_id;
	m_LogoRect.x = m_fWidth * BUTTON_X_POSITION;
	m_LogoRect.y = m_fHeight / 2.0f + MAIN_MENU_LOGO_POSITION;
	m_LogoRect.w =  m_LogoTexture.image.width * MAIN_MENU_LOGO_IMAGE_SIZE_MULT;
	m_LogoRect.h =  m_LogoTexture.image.height * MAIN_MENU_LOGO_IMAGE_SIZE_MULT;


	m_Logo.m_fStaticX = m_LogoRect.x - MAIN_MENU_LOGO_BORDER;
	m_Logo.m_fStaticY = m_LogoRect.y - MAIN_MENU_LOGO_BORDER;
	m_Logo.m_fStaticWidth = m_LogoRect.w + 2.0f*MAIN_MENU_LOGO_BORDER;
	m_Logo.m_fStaticHeight = m_LogoRect.h + 2.0f*MAIN_MENU_LOGO_BORDER;
	m_Logo.m_BaseColor = MAIN_MENU_LOGO_COLOR;
	m_Logo.reset();
	m_Logo.a = ALPHA_TRANSPARENT;	//zacina neviditelne

	m_LogoFast.m_fStaticX = m_LogoRect.x - MAIN_MENU_LOGO_BORDER;
	m_LogoFast.m_fStaticY = m_LogoRect.y - MAIN_MENU_LOGO_BORDER;
	m_LogoFast.m_fStaticWidth = m_LogoRect.w + 2.0f*MAIN_MENU_LOGO_BORDER;
	m_LogoFast.m_fStaticHeight = m_LogoRect.h + 2.0f*MAIN_MENU_LOGO_BORDER;
	m_LogoFast.m_BaseColor = MAIN_MENU_LOGO_COLOR;
	m_LogoFast.reset();
	m_LogoFast.a = ALPHA_TRANSPARENT;	//zacina neviditelne
	

	m_pPlayWindow = createPlayWindow();
	addComponent( m_pPlayWindow );

	m_pOptionWindow = createOptionWindow();
	addComponent( m_pOptionWindow );

	m_pPlayerSetWindow = createPlayerSetWindow();
	addComponent( m_pPlayerSetWindow );

	//promenna je text, ktery se zobrazuje pri cekani na cilovou klavesu 
	//ci tlacitko mysi pri zmene nastaveni klavesnice
	m_dsKeySetModeInfo.create( textLibrary::getText( TXT_PUSH_CHOSEN_KEY ), FONT_DEFAULT, FONT_ALIGN_CENTER );

	//vytvorime si message boxy
	m_pMsgQuit = GFG_MessageBox_2Buttons( this, GFG_MSGBOX_QUESTION, textLibrary::getText(TXT_REALLY_EXIT), textLibrary::getText(TXT_BACK), BUTTON_MSGBOX_CANCEL, textLibrary::getText(TXT_EXIT), BUTTON_MSGBOX_QUIT );
	m_pMsgLostChanges = GFG_MessageBox_2Buttons( this, GFG_MSGBOX_QUESTION, textLibrary::getText(28), textLibrary::getText(30), BUTTON_MSGBOX_CANCEL, textLibrary::getText(29), OPTION_DEFAULT_MSGBOX_YES );


	console << "done" << endline;
}




void MainMenu::user_run()
{
	if( m_uiResetTime + MAIN_MENU_LOGO_ANIMATION_RESET_TIME < SDL_GetTicks() )
	{
		m_fTargetAlphaLogoAnim = (float)(rand() % 1000) / 1000.0f;	//vygeneruje nahodne cislo mezi 0-1
		m_uiResetTime = SDL_GetTicks();
	}

	if( m_uiResetTime2 + MAIN_MENU_LOGO_ANIMATION_TRANSLATE_RESET_TIME < SDL_GetTicks() )
	{
		m_fTranslateXAnim = ((float)(rand() % 10) ) - 10.0f + m_Logo.m_fStaticX;
		m_fTranslateYAnim = ((float)(rand() % 10) ) - 10.0f + m_Logo.m_fStaticY;
		m_uiResetTime2 = SDL_GetTicks();
	}

	if( m_uiResetTime3 + MAIN_MENU_LOGO_ANIMATION_FAST_RESET_TIME < SDL_GetTicks() )
	{
		m_LogoFast.reset();
		m_LogoFast.a = ALPHA_OPAQUE;
		m_uiResetTime3 = SDL_GetTicks();
	}
	
	if( m_Logo.x < m_fTranslateXAnim )
		m_Logo.x += MAIN_MENU_SLOW_ANIM_POSITION_STEP;
	else
		m_Logo.x -= MAIN_MENU_SLOW_ANIM_POSITION_STEP;

	if( m_Logo.y < m_fTranslateYAnim )
		m_Logo.y += MAIN_MENU_SLOW_ANIM_POSITION_STEP;
	else
		m_Logo.y -= MAIN_MENU_SLOW_ANIM_POSITION_STEP;


	if( m_Logo.a < m_fTargetAlphaLogoAnim )
	{
		m_Logo.a += MAIN_MENU_SLOW_ANIM_SIZE_CHANGE_ALPHA_STEP;
		m_Logo.x -= MAIN_MENU_SLOW_ANIM_SIZE_CHANGE_STEP;
		m_Logo.y -= MAIN_MENU_SLOW_ANIM_SIZE_CHANGE_STEP;
		m_Logo.w += 2.0f * MAIN_MENU_SLOW_ANIM_SIZE_CHANGE_STEP;
		m_Logo.h += 2.0f * MAIN_MENU_SLOW_ANIM_SIZE_CHANGE_STEP;
	}
	else
	{
		m_Logo.a -= MAIN_MENU_SLOW_ANIM_SIZE_CHANGE_ALPHA_STEP;
		m_Logo.x += MAIN_MENU_SLOW_ANIM_SIZE_CHANGE_STEP;
		m_Logo.y += MAIN_MENU_SLOW_ANIM_SIZE_CHANGE_STEP;
		m_Logo.w -= 2.0f * MAIN_MENU_SLOW_ANIM_SIZE_CHANGE_STEP;
		m_Logo.h -= 2.0f * MAIN_MENU_SLOW_ANIM_SIZE_CHANGE_STEP;
	}

	if( m_LogoFast.a > ALPHA_TRANSPARENT )
	{
		m_LogoFast.a -= MAIN_MENU_FAST_ANIM_SIZE_CHANGE_ALPHA_STEP;	
		m_LogoFast.x -= MAIN_MENU_FAST_ANIM_SIZE_CHANGE_STEP_X;
		m_LogoFast.y -= MAIN_MENU_FAST_ANIM_SIZE_CHANGE_STEP_Y;
		m_LogoFast.w += 2.0f * MAIN_MENU_FAST_ANIM_SIZE_CHANGE_STEP_X;
		m_LogoFast.h += 2.0f * MAIN_MENU_FAST_ANIM_SIZE_CHANGE_STEP_Y;
	}

	//animace okna indikujiciho cekani na vstup z klavesnice nebo mysi
	if( m_bKeySetMode && m_fKeySetAlphaMultiplier < MAIN_MENU_KEYSETMODE_MAX_ALPHA )
		m_fKeySetAlphaMultiplier += getFromRange( MAIN_MENU_KEYSETMODE_ALPHA_STEP, ALPHA_TRANSPARENT, MAIN_MENU_KEYSETMODE_MAX_ALPHA - m_fKeySetAlphaMultiplier );
	else if( !m_bKeySetMode && m_fKeySetAlphaMultiplier > 0.0f )
		m_fKeySetAlphaMultiplier -= getFromRange( MAIN_MENU_KEYSETMODE_ALPHA_STEP, ALPHA_TRANSPARENT, m_fKeySetAlphaMultiplier );
}


//pri ukonceni se krome vymazani vsech komponent ulozi seznam jmen hracu
void MainMenu::destroy()
{
	glDeleteTextures( 1, &m_LogoTexture.texture_id );
	saveNameList();
	deleteAll();
	delete m_pMsgQuit;
	delete m_pMsgLostChanges;

}

void MainMenu::SDL_controller( SDL_Event &event )
{
	if( m_bKeySetMode )
	{
		switch( event.type )
		{
			case SDL_KEYDOWN:
				return newKeyboardSet( event.key.keysym.sym );
			case SDL_MOUSEBUTTONDOWN:
				return newKeyboardSet( event.button.button + binding::MAX_KEYBOARD_KEYS );
		}
		return;
	}


	switch( event.type )
	{
		case SDL_KEYDOWN:
			if( event.key.keysym.sym == key_database::DEFAULT_CANCEL_KEY )
			{
				//resume or what
				//systemController::setLastRunningLevel();
			}
			else if( event.key.keysym.sym == key_database::DEFAULT_CONSOLE_KEY )
			{
				return systemController::setRunningLevel( systemController::CONSOLE );
			}

	
	}


	conv::input( event, this );
}

void MainMenu::use_this_run()
{
	if(  m_fMyAlpha > 0.0f || m_fTargetAlpha > 0.0f  )
	{
		run();
	}
}

//vstupni vykreslovaci funkce
void MainMenu::use_this_draw()
{	
	if( m_fMyAlpha > 0.0f )
	{
		glPushAttrib( GL_CURRENT_BIT | GL_ENABLE_BIT );
		
		glDisable(GL_DEPTH_TEST);
		glMatrixMode(GL_PROJECTION);
		glLoadIdentity();
		glOrtho(0, m_fWidth, 0, m_fHeight, -1, 1);
		glMatrixMode(GL_MODELVIEW);
		glLoadIdentity();
		
		draw();

		if( m_bKeySetMode )
		{
			glEnable( GL_BLEND );
			glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );
			glDisable( GL_TEXTURE_2D );
			glColor4f( 0,0,0, m_fKeySetAlphaMultiplier );
			glBegin( GL_QUADS );
				glVertex2f( 0, 0 );
				glVertex2f( 0 + m_fWidth, 0 );
				glVertex2f( 0 + m_fWidth, 0 + m_fHeight );
				glVertex2f( 0, 0 + m_fHeight );
			glEnd();
			glColor4fv( MAIN_MENU_KEYSET_TEXT_COLOR.values );
			m_dsKeySetModeInfo.draw( m_fWidth / 2.0f, m_fHeight / 2.0f );
		}
		glPopAttrib();
	}
}

void MainMenu::refresh()
{
	//znovunacteni mapy bindu
	binding::copyMapTo( m_OptionKeyMap );
	refreshKeyMapListBoxPanels();

	refreshMouseTabComponents();	//aktualni nastaveni mysi
	refreshVideoSettings();			//aktualni nastaveni videa
	refreshGeneralSettings();		//aktualni obecne nastaveni
	refreshPlayerWindow();
	refreshPlayWindowComponents();

	m_pResumeButton->setVisible( systemconf::getSystemInfo().m_bResumeAllowed );

}


void MainMenu::processSelectedLevel()
{
	if( m_pLevelList )
	{
		LevelPanel *pTmpPanel = reinterpret_cast<LevelPanel*>( m_pLevelList->getSelectedPanel() );
		if( pTmpPanel )
		{
			gameControl::game_control.decodeCommand("map "+pTmpPanel->m_sLevelKey );

		}
	}

}
