/* -----------------------------------------------------------------------------
	GSFramework
	Copyright 2001-2013 Emmanuel Julien. All Rights Reserved.
----------------------------------------------------------------------------- */


#ifndef	__NUI_MESSAGE__
#define	__NUI_MESSAGE__


		#include "messaging/messaging.h"


namespace GS {
	namespace S2D {
		class Scene;

/*
	@short	UI message enum.
	@author	Emmanuel Julien (ejulien@nworks.fr)
*/
enum Message
{
	UIMsg_None						=	0,		///< No message.

	UIMsg_AddingItem,
	UIMsg_ItemAdded,
	UIMsg_DeletingItem,
	UIMsg_ItemDeleted,

	UIMsg_Deleting,
	UIMsg_Deleted,
	UIMsg_Loading,
	UIMsg_Loaded,

	UIMsg_SpriteLinkChanging,
	UIMsg_SpriteLinkChanged,

	UIMsg_LastMessage
};

/*
	@short	UI message return value.
	@author	Emmanuel Julien (ejulien@nworks.fr)
*/
enum ReturnValue
{
	UIReturn_Ok						=	0
};

/// UI listener.
struct	Listener
{
virtual	ReturnValue	ProcessMessage(Message, const Scene *, const void *) = 0;
};

extern Messaging::Broadcaster <Message, Listener, Scene *> g_ui_messenger;

	} // S2D
} // GS


#endif	// __NUI_MESSAGE__
