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

#ifndef __TAnimINTERF_HPP__
#define __TAnimINTERF_HPP__

#ifdef ACTIVE_EDITOR

#include "ITF.h"
#include "TAN.h"

//class CPA_Animation;
class CPA_Family;
class CAnimationView;

// if you want only one instance of your DLL activate the next line
#define DLL_ONLY_ONE_INSTANCE

/*=============================================================================
* define : action type used for OnQueryAction function
=============================================================================*/
/*
#define C_cLoadAllAnimsAction			1
#define C_cGetEditorAnimFromEngineAnim	2
#define C_cIsEngineAnimLoaded			3
#define C_cReallyLoadEngineAnimation	4
*/
/*=============================================================================
* Tool DLL interface class
=============================================================================*/
class TAnim_Interface : public CPA_ToolDLLBase
{
private:
	BOOL m_bCompleteLoad;
  public:
    TAnim_Interface(void);

  //====================================================================================
  //========================= COMMON DLL FUNCTIONS OVERLOAD ============================
  //====================================================================================

	// ACP MEssages Functions overload

	// Windows MEssages Functions overload

	// to update lists of reachable objects

	// for changes

	// editor Modifs

	// insert

	// moves

	// Dialog List

	//Menus
    BOOL fn_bDefineSubMenu  (EDT_SubMenu *_p_oEDTSubMenu);
    void _OnSubMenuCommand  (EDT_SubMenu *_p_oEDTSubMenu,UINT uiMsgID);

    // CPA_ReachableObject
    BOOL fn_bLoadBaseObject    (CPA_BaseObject *p_oObject);

	// Current Editor

  //====================================================================================
  //=========================== TOOL DLL FUNCTIONS OVERLOAD ============================
  //====================================================================================

    // Called just after editor has been inserted in list of all editors
    void fn_vJustAfterRegistered(void);
	// To communicate with that editor
	long OnQueryAction	(CPA_EditorBase *p_oSender, WPARAM, LPARAM);
	long OnQueryInfos	(CPA_EditorBase *p_oSender, WPARAM, LPARAM);

  //====================================================================================
  //=========================== TOOL DLL SPECIFIC FUNCTIONS ============================
  //====================================================================================
  private:
	void mfn_vLoadAllAnimations();
	// load all loaded animations of game using link table
	void mfn_vCreateAllLoadedAnimations();
  	// load all animations of a family (loaded or not)
	void mfn_vLoadAnims( CPA_Family *_p_oFamily );
    // load preferences from .ini
    void mfn_vLoadPreferences();
	// save preferences on .ini
    void mfn_vSavePreferences();
};

extern tdstDLLIdentity g_stTAnimIdentity;

#endif // ACTIVE_EDITOR
#endif // __TAnimINTERF_HPP__