/*=========================================================================
* 
* edit_ot.hpp :  EditorObjectTable class - definition
* 
* Version			2.0
* Creation date		05/06/97	Author : Vincent Lhullier	
* Revision date		18/08/97	Author : Shaitan	
*
* Shaitan
*=======================================================================*/
 
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
 
#ifndef __EDIT_OT_HPP__
#define __EDIT_OT_HPP__
 
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
 
#include "ITF.h"
#include "incGAM.h"
 
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
#ifndef CPA_EXPORT
#if defined(CPA_WANTS_IMPORT)
#define CPA_EXPORT __declspec(dllimport)
#elif defined(CPA_WANTS_EXPORT)
#define CPA_EXPORT __declspec(dllexport)
#else
#define CPA_EXPORT
#endif
#endif
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
 
/*===========================================================================
*		Description:	class EditorObjectTable
*		Creation date:	05/06/97
*		Author:			Vincent Lhullier
*---------------------------------------------------------------------------
*		Revision date:  18/08/97		Author: Shaitan       
*=========================================================================*/
 
class EditorObjectTable : public CPA_SaveObject, 
						  public CPA_EdMot<tdxHandleToObjectsTablesList>
{
public:
	/*==> Constructor*/
	EditorObjectTable ( CPA_EditorBase					*p_oDLL,
						tdxHandleToObjectsTablesList	hObjTable, 
						CPA_SaveObject					*p_oOwner	= NULL,
						CString							csFileName	= "" );
 
	/*==> Destructor*/
	~EditorObjectTable (void);
 
	/*==> Inits for scritps and engine struct*/
	static void StaticInit();
 
	/*==> Base Object overlapped*/
	void *	GetData		(void) { return GetStruct(); }
	long	GetDataType (void) { return 0; }
 
	CString	GetNameToDraw (void);
 
	/*==> Save Object overlapped*/
	BOOL fn_bCanBeNotified (void) { return FALSE; }
 
	void fn_vNotifySave		(void) { };
	void fn_vNotifyUnSave	(void) { };
	void fn_vNotifyRestore	(void) { };
	void fn_vNotifyRename	(void) { };
	
	void fn_vUpdateSectionName (void);
 
	CString fn_csComputeReferencedSectionName (const CString csNewName)
	{
		return GetReferencedSectionName(); 
	}
 
	tdeMissingCriteria fn_eCheckValidity (const CString csNewName)
	{
		return fn_eCheckUnicity(csNewName);
	}
 
	/*==> Load engine object table associated with Editor object table*/
	void fn_vLoadEngineObjectTable (void);
 
private:
	/*==> creation of editor PO that are in Object table*/
	void fn_vCreateEditorPhysicalObjects (void);
// Shaitan => module list in the level
	/*==> load of unused POs that are in Object table*/
	void fn_vLoadUnusedPOsInObjectTable (void);
	static SCR_tde_Anl_ReturnValue m_fn_tdeCallBackLoadUnusedPOs(SCR_tdst_File_Description *pfFile,  char *szAction, char *szPars[], SCR_tde_Anl_Action eType);
	static SCR_tde_Anl_ReturnValue m_fn_tdeEmtpyCallBack(SCR_tdst_File_Description *pfFile,  char *szAction, char *szPars[], SCR_tde_Anl_Action eType);
// End Shaitan => module list in the level	
};
 
#endif /*__EDIT_OT_HPP__*/
