/**
* vim: set ts=4 :
* ===============================================================
* SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
* ===============================================================
*
* This file is not open source and may not be copied without explicit
* written permission of AlliedModders LLC.  This file may not be redistributed 
* in whole or significant part.
* For information, see LICENSE.txt or http://www.sourcemod.net/license.php
*
* Version: $Id$
*/

#ifndef _INCLUDE_SOURCEMOD_CMSGLISTENERWRAPPER_H_
#define _INCLUDE_SOURCEMOD_CMSGLISTENERWRAPPER_H_

extern int g_MsgPlayers[256];

class MsgListenerWrapper : public IUserMessageListener
{
public:
	void Initialize(int msgid, IPluginFunction *hook, IPluginFunction *notify, bool intercept);
	bool IsInterceptHook() const;
	int GetMessageId() const;
	IPluginFunction *GetHookedFunction() const;
	IPluginFunction *GetNotifyFunction() const;
public: //IUserMessageListener
	void OnUserMessage(int msg_id, bf_write *bf, IRecipientFilter *pFilter);
	ResultType InterceptUserMessage(int msg_id, bf_write *bf, IRecipientFilter *pFilter);
	void OnUserMessageSent(int msg_id);
private:
	size_t _FillInPlayers(int *pl_array, IRecipientFilter *pFilter);
private:
	IPluginFunction *m_Hook;
	IPluginFunction *m_Intercept;
	IPluginFunction *m_Notify;
	bool m_IsInterceptHook;
	int m_MsgId;
};

#endif //_INCLUDE_SOURCEMOD_CMSGLISTENERWRAPPER_H_