// ai_intf.hpp : header file
//

#ifndef _AI_INTF_HPP_
#define _AI_INTF_HPP_

#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000

#define DLL_ONLY_ONE_INSTANCE

#include "ACP_Base.h"
#include "ITF.h"

class CPA_EdIR_Frame;

//////////////////////////////////////////////////////////////////
// For Actors IA communication
//////////////////////////////////////////////////////////////////

typedef struct stActorsIACom
{
	void		*pvThis;
	void		*pvData;
	long		lData;
	CString	csData;
}tdstActorsIACom;

//////////////////////////////////////////////////////////////////
// class CPA_EdIR_Interface
//////////////////////////////////////////////////////////////////

class CPA_EdIR_Interface : public CPA_ToolDLLBase
{
	//Attributes
	public:
		BOOL				m_bIsOpened;
		BOOL				m_bIsSaving;
		BOOL				m_bIsProcessing;

	public:
		CPA_EdIR_Frame		*m_pclIRMainFrame;
		CString				m_csBrainHelpFileNameAndPath;

	// Operations
  public:
		// Constructor
    CPA_EdIR_Interface();

		// ACP Messages Functions overload
		void	fn_vJustAfterRegistered();
		void	fn_vConstruct();

		void	fn_vLevelChanges();
		BOOL	fn_bAcceptToRunEngine();
		BOOL	fn_bAcceptToSave();
		void	fn_vBeforeSaveAll();
		void	fn_vAfterSaveAll();
		void	fn_vBeforeEngine();
		void	fn_vBeforeEditor();
		BOOL  fn_bOnInvalidateLink(CPA_BaseObject *,CPA_BaseObject *,BOOL);

		BOOL	fn_bCanActivateEditor(CPA_List<CPA_BaseObject> *);
		void	fn_vOnActivateEditor(CPA_List<CPA_BaseObject> *,BOOL bBackActivated=FALSE);
		BOOL	fn_bCanCloseEditor(void);
		void	fn_vOnCloseEditor(void);

		BOOL	fn_bDefineSubMenu(EDT_SubMenu *);
		void	_OnSubMenuCommand(EDT_SubMenu *,UINT);

		
		void	m_fn_vShowEditor();
		void	m_fn_vHideEditor();

		// To communicate with ai editor
		long OnQueryAction(CPA_EditorBase *,WPARAM,LPARAM);

		static SCR_tde_Anl_ReturnValue m_fn_tdeCallBackReloadInitValues(SCR_tdst_File_Description *pfFile,  char *szAction, char *szPars[], SCR_tde_Anl_Action eType);
};

/*
 *=======================================================================================
 * DLL identity structure
 *=======================================================================================
 */
#undef extern
extern tdstDLLIdentity		g_stAIIdentity;
extern CPA_EdIR_Interface	*g_pclAIInterface;

#endif //_AI_INTF_HPP_