// ------------------------------------------------------------------------------------ //
//																						//
//	File: Asura_GUIMenu_Audio.h															//
//																						//
//	Description: Header file for the Audio Implementation for GUIMenu					//
//																						//
//	Created: Steve Keen - 12/04/07														//
//																						//
//	Copyright (C) 2007 Rebellion (Derby), All Rights Reserved.							//
// ------------------------------------------------------------------------------------ //

#ifdef ASURA_USE_PRAGMA_ONCE
#pragma once
#endif

#ifndef __ASURA_GUIMENU_AUDIO_H__
#define __ASURA_GUIMENU_AUDIO_H__

#ifdef ASURA_USE_GUI_MENU_SYSTEM
#include "Core/Asura_Hash.h"

// -- Includes ------------------------------------------------------------------------

// -- Typedef -------------------------------------------------------------------------

// -- Enums ---------------------------------------------------------------------------
enum Asura_GUIMenu_Audio_Type
{
	ASURA_GUIMENU_AUDIO_TYPE_ON_NAVIGATE = 0,
	ASURA_GUIMENU_AUDIO_TYPE_ON_ACCEPT = 1,
	ASURA_GUIMENU_AUDIO_TYPE_ON_CANCEL = 2,
	ASURA_GUIMENU_AUDIO_TYPE_ON_VALUE_CHANGE = 3,
	ASURA_GUIMENU_AUDIO_TYPE_FAILURE = 4,
	ASURA_GUIMENU_AUDIO_TYPE_ON_CURSOR_NAVIGATE = 5,
	ASURA_GUIMENU_AUDIO_TYPE_END_OF_LIST
};

// -- Defines -------------------------------------------------------------------------
#define ASURA_CHUNK_GUIMENU_AUDIO_VERSION 0
// -- Structures ----------------------------------------------------------------------

// -- Class ---------------------------------------------------------------------------
class Asura_Chunk_Stream;

class Asura_GUIMenu_Audio
{
public:
	static void				Initialise(void);
	static void				Reset( void);
	static void				Shutdown(void);	

	static void				SetAudioType( Asura_GUIMenu_Audio_Type eType, Asura_Hash_ID uSoundEventHash);
	static Asura_Hash_ID	GetAudioHash( Asura_GUIMenu_Audio_Type eType);

	static void				Play( Asura_GUIMenu_Audio_Type eType);

	static void				ReadFromChunkStream( Asura_Chunk_Stream& xStream);

#ifdef ASURA_TOOLS
	static void				WriteToChunkStream(Asura_Chunk_Stream& xStream);
	static void				AddFilesToExportList(void);
#endif

protected:
	static void				ClearLocalVariables( void);

public:

protected:

private:
	static	Asura_Hash_ID	s_uSoundEventHash[ASURA_GUIMENU_AUDIO_TYPE_END_OF_LIST];

	static	bool			s_bDataChanged;
};
#endif // ASURA_USE_GUI_MENU_SYSTEM
#endif // __ASURA_GUIMENU_AUDIO_H__
