//**************************************
// This is the base class of your DLL interface
// All methods of CPA_ToolDLLBase are 
// present in that class.
//**************************************

#ifndef __SNDEDITINTERF_HPP__
#define __SNDEDITINTERF_HPP__

#ifdef USE_IPT_DX5
#include "IPT_DX5.h" /* InPuT (absolutely before GAM.h)*/
#else /* USE_IPT_WIN */
#include "IPT.h" /* InPuT (absolutely before GAM.h)*/
#endif /* USE_IPT_WIN */
#include "soundeditor.h"
#include "SND.h"
#include "SNDres.h"
#include "TSNEvent.h"

class TSN_Res
{
public:
	CString m_csName;
	short m_wId;
};

class TSN_ResList
{
public:
	CString m_csName;
	short m_wId;
    CPA_List<TSN_Res> m_ResList;
};


//----------------------------------------------------------
// Tool DLL interface class
//----------------------------------------------------------
class SNDEDIT_Interface : public CPA_ToolDLLBase
{
private:

public:
	void fn_vDestroyResList(void);
	void fn_vFillResList(void);
	static const char * fn_czGetResNameFromEdId(unsigned long _ulId);
    CPA_List<tdstBlockResourceMem> m_ModifiedResList;
    CPA_List<TSN_Event> m_EdiEventList;
    CPA_List<TSN_ResList> m_ResListList;

	
	ISoundEditor m_IEditor;
	
	SNDEDIT_Interface(void);
	~SNDEDIT_Interface(void);

	// ACP Messages Functions overload:
	static void CALLBACK EXPORT m_fn_vTimerProc(UINT uID,UINT,DWORD dwUser,DWORD,DWORD);
	static void mfn_vNotificationCallback(SCR_tdst_File_Description *_p_stFile, char *_p_szSectionName, void *_pvData, SCR_tde_Ntfy_Action _eAction);

	BOOL m_bEditorEnabled;
	UINT m_uiTimerId;

	// *** Sound resource mixing keys //
	IPT_tdxHandleToEntryElement m_hSoundResourceVolumeUp;
	IPT_tdxHandleToEntryElement m_hSoundResourceVolumeDown;
	IPT_tdxHandleToEntryElement m_hSoundResourceVolumeUpFast;
	IPT_tdxHandleToEntryElement m_hSoundResourceVolumeDownFast;

	void    fn_vBeforeEngine(void);
	void    fn_vBeforeEditor(void);

	void _OnSubMenuCommand(EDT_SubMenu *_pSubMenu,UINT uiMsgId);
    BOOL fn_bDefineSubMenu  (EDT_SubMenu *_p_oEDTSubMenu);

/*
    void    fn_vOnCloseEditor(void);
    void    fn_vOnActivateEditor(CPA_List<CPA_BaseObject> *_pParams,BOOL _bBackActivated);

*/
	void    fn_vJustAfterRegistered(void);
	void    fn_vConstruct(void);
	// Called when engine level has changed, before editor level changes
	virtual void fn_vLevelChanges (void);
	virtual BOOL fn_bLoadBaseObject	(CPA_BaseObject *p_oObject);
//	long	  OnQueryAction(CPA_EditorBase*, WPARAM, LPARAM);


};

extern SNDEDIT_Interface* g_poSNDEDITInterface;
extern tdstDLLIdentity g_stSNDEDITIdentity;

SCR_tde_Anl_ReturnValue TSN_fn_eLoadEventGroup(SCR_tdst_File_Description *p_fFile, char *szAction, char *szParams[], SCR_tde_Anl_Action cType);
BOOL TSN_fn_bInitSoundInfos(const char* _szFileName);
BOOL TSN_fn_bDesInitSoundInfos(void);


#endif // __SNDEDITINTERF_HPP__





