/*=========================================================================
* 
* SECmodif.hpp :  Definition of Editor Modifications
* 
*
* Version			1.0
* Creation date		
* Revision date
*
* Shaitan
*=======================================================================*/
#ifndef __SECT_MODIF_HPP__
#define __SECT_MODIF_HPP__

#include "incITF.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
//**************************************

#include "SECTint.hpp"

#define TYPE_SECTORLINKS		1
#define TYPE_SECTORPARAMS		2
//Shaitan Clean Env
/*
#define TYPE_ENVANDSRF			3
#define TYPE_MODIFENV			4
#define TYPE_MODIFSRF			5
#define TYPE_SRFPARAMS			6
#define TYPE_ENVPARAMS			7
#define TYPE_MECENV				8
#define TYPE_APPLY				9
*/
#define TYPE_SYMETRICLINKS	   10
#define TYPE_SYMETRICSELECT	   11
#define TYPE_VIRTUALSTATUS	   12
#define TYPE_FULLLINK		   13
//Shaitan Clean Env
//#define TYPE_REPLACE		   14
#define TYPE_COPYLIST		   15


typedef enum 
{
// sector links
	E_mt_AddSectorInList,
	E_mt_DelSectorInList, 
	E_mt_AddFullLink, 
	E_mt_DelFullLink, 
// sector params
	E_mt_ChangeLevelOfDetail,
	E_mt_ChangeGraphicMode,
	E_mt_ChangeSoundVolume,
	E_mt_AddSoundEvent,
	E_mt_DelSoundEvent,
//Shaitan Clean Env
/*
// env and srf	
	E_mt_AddEnvAndSrf,
	E_mt_DelEnvAndSrf,
	E_mt_ChangeEnv,
	E_mt_ChangeSrf,
// srf params
	E_mt_ChangeSrfHeight,
// env params
	E_mt_ChangeMecEnv,
	E_mt_ChangeVisEnv,	
	E_mt_ChangeSndEnv,
// mec env
	E_tm_ModifMecEnv,
// vis env
	E_tm_ModifVisEnv,
// apply to sector
	E_tm_ApplyToSectors,
*/
// symetric links
	E_tm_SymetricLinks,
	E_tm_SymetricSelect,
// virtual status
	E_tm_VirtualStatus,
//Shaitan Clean Env
// replace env
//	E_tm_Replace,
	E_tm_CopyList,
// unknown
	E_tm_Unknown
}
tdeSectModifType;

//#################################################################################
// SECTORS LINK
//#################################################################################
/*===========================================================================
*		Description:	save sector links
*		Creation date:	
*		Author:			Shaitan
*---------------------------------------------------------------------------
*		Revision date:                                      Author:         
*=========================================================================*/
class SECT_SaveSectorLinks : public CObject
{
public:
	Sector_Object		*m_pSector;
	SECT_ElementBase	*m_pNewElement;
	SECT_ElementBase	*m_pOldElement;
	int					m_iNewParam;
	int					m_iOldParam;
	int					m_iNewMode;
	int					m_iOldMode;

	SECT_SaveSectorLinks (CPA_SuperObject *pSector, CPA_SuperObject *pModel, tdeTypeList eList);
	~SECT_SaveSectorLinks ();

};

/*===========================================================================
*		Description:	Add or remove sector in sector links
*		Creation date:	
*		Author:			Shaitan
*---------------------------------------------------------------------------
*		Revision date:                                      Author:         
*=========================================================================*/
class SECT_ModifSectorLinks : public CPA_Modif
{
protected:
	Sector_Interface	*m_pSectorInterface;
	SECT_ElementBase *	m_aElements[C_NumberOfLists];
	SECT_ElementBase *	m_aSymElems[C_NumberOfLists];
	CPA_SuperObject		*m_pEditedSector;
	CPA_SuperObject		*m_pSectorToAdd;
	tdeSectModifType	m_eModifType;
	tdeEditMode			m_eCurrentEditMode;
	BOOL				m_bSymetric;
	BOOL				m_aHadSymElem[C_NumberOfLists];
	BOOL				m_bFirstTime;
	BOOL				m_bAdded;
	BOOL				m_bDone;

public:
// constructors
	SECT_ModifSectorLinks  (Sector_Interface *pInterface, tdeSectModifType eModifType,
							 CPA_SuperObject *pEditedSector, CPA_SuperObject *pSectorToAdd,
							 tdeTypeList eTypeList);
	~SECT_ModifSectorLinks (void);

// actions
	BOOL Do		(void);
	BOOL Undo	(void);

// functions
	void fn_vInitSymetricLinks		(void);
	void fn_vUpdateSymetricLinks	(BOOL bDo);

	void fn_vReinitEditorState (void);
	void fn_vUpdateEditorState (void);
};

/*===========================================================================
*		Description:	save sector links
*		Creation date:	
*		Author:			Shaitan
*---------------------------------------------------------------------------
*		Revision date:                                      Author:         
*=========================================================================*/
class SECT_SaveFullLink : public CObject
{
public:
	Sector_Object		*m_pSector;
	SECT_ElementBase	*m_pElement;
	tdeTypeList			m_eListToUpdate;

	SECT_SaveFullLink (Sector_Object *pSector, SECT_ElementBase *pElement, tdeTypeList eList);
	~SECT_SaveFullLink ();
};

/*===========================================================================
*		Description:	Add or remove sector in sector links
*		Creation date:	
*		Author:			Shaitan
*---------------------------------------------------------------------------
*		Revision date:                                      Author:         
*=========================================================================*/
class SECT_ModifFullLink : public CPA_Modif
{
protected:
	Sector_Interface	*m_pSectorInterface;
	CPA_SuperObject		*m_pEditedSector;
	tdeTypeList			m_eListToUpdate;
	tdeSectModifType	m_eModifType;
	BOOL				m_bSymetric;
	BOOL				m_bFirstTime;
	BOOL				m_bAdded;
	BOOL				m_bDone;

	CPA_List<SECT_ElementBase>	m_oListOfSectors;
	CPA_List<SECT_SaveFullLink>	m_oListOfSymetrics;

public:
// constructors
	SECT_ModifFullLink  (Sector_Interface *pInterface, tdeSectModifType eModifType,
						 CPA_SuperObject *pEditedSector, tdeTypeList eTypeList);
	~SECT_ModifFullLink (void);

// actions
	BOOL Do		(void);
	BOOL Undo	(void);

// functions
	void fn_vInitSymetricLinks		(void);
	void fn_vUpdateSymetricLinks	(BOOL bDo);

	void fn_vReinitEditorState (void);
	void fn_vUpdateEditorState (void);
};
/*===========================================================================
*		Description:	modify parameter in sector links
*		Creation date:	
*		Author:			Shaitan
*---------------------------------------------------------------------------
*		Revision date:                                      Author:         
*=========================================================================*/
class SECT_ModifSectorParams : public CPA_Modif
{
protected:
	Sector_Interface	*m_pSectorInterface;
	SECT_ElementBase	*m_pElementToUpdate;
	CPA_SuperObject		*m_pEditedSector, *m_pSelectedSector;
	SECT_SoundEvent		*m_pSoundEvent;
	tdeSectModifType	m_eModifType;
	tdeTypeList			m_eListToUpdate;
	int					m_iNewValue, m_iOldValue, m_iOldSymetric;
	BOOL				m_bSymetricLink;
	BOOL				m_bFirstTime;
	BOOL				m_bDone;

public:
// constructors
	SECT_ModifSectorParams  (Sector_Interface *pInterface, tdeSectModifType eModifType,
							 tdeTypeList eListToUpdate, SECT_ElementBase *pElem, 
							 int iNewValue, SECT_SoundEvent *pSoundEvent);
	~SECT_ModifSectorParams (void);

// actions
	BOOL Do		(void);
	BOOL Undo	(void);

// functions
	void fn_vReinitEditorState (void);
	void fn_vUpdateEditorState (void);

};

//#################################################################################
// ENV AND SRF
//#################################################################################
/*===========================================================================
*		Description:	add or remove environment element
*		Creation date:	
*		Author:			Shaitan
*---------------------------------------------------------------------------
*		Revision date:                                      Author:         
*=========================================================================*/
/*
class SECT_ModifEnvAndSrf : public CPA_Modif
{
protected:
	Sector_Interface *m_pSectorInterface;
	CPA_SuperObject  *m_pEditedSector;
	SECT_SurfElem	 *m_pNewSurfElem, *m_pOldSurfElem;
	SECT_EnvElem	 *m_pNewEnvElem, *m_pOldEnvElem;
	tdeSectModifType m_eModifType;
	BOOL			 m_bFirstTime;
	BOOL			 m_bDone;

public:
// constructors
	SECT_ModifEnvAndSrf  (Sector_Interface *pInterface, tdeSectModifType eModifType,
						  CPA_SuperObject *pEditedSector, long lNumEnvElem,
						  SECT_Environment	*pNewEnv, SECT_Surface *pNewSurf);
	~SECT_ModifEnvAndSrf (void);
// actions
	BOOL Do		(void);
	BOOL Undo	(void);

// functions
	void fn_vReinitEditorState (void);
	void fn_vUpdateEditorState (void);
};
*/

/*===========================================================================
*		Description:	change environment element
*		Creation date:	
*		Author:			Shaitan
*---------------------------------------------------------------------------
*		Revision date:                                      Author:         
*=========================================================================*/
/*
{
protected:
	Sector_Interface *m_pSectorInterface;
	SECT_Environment *m_pNewEnv, *m_pOldEnv;
	CPA_SuperObject  *m_pEditedSector;
	SECT_EnvElem	 *m_pEnvElem;
	tdeSectModifType m_eModifType;
	BOOL			 m_bFirstTime;
	BOOL			 m_bDone;
	long			 m_lNumEnvElem;

public:
// constructors
	SECT_ModifEnvElem  (Sector_Interface *pInterface, tdeSectModifType eModifType,
						SECT_EnvElem *pEnvElem, SECT_Environment *pNewEnv, long lNumEnvElem);
	~SECT_ModifEnvElem (void);
// actions
	BOOL Do		(void);
	BOOL Undo	(void);

// functions
	void fn_vReinitEditorState (void);
	void fn_vUpdateEditorState (void);
};
*/

/*===========================================================================
*		Description:	change surface element
*		Creation date:	
*		Author:			Shaitan
*---------------------------------------------------------------------------
*		Revision date:                                      Author:         
*=========================================================================*/
/*
class SECT_ModifSurfElem : public CPA_Modif
{
protected:
	Sector_Interface *m_pSectorInterface;
	CPA_SuperObject  *m_pEditedSector;
	SECT_SurfElem	 *m_pSurfElem;
	SECT_Surface	 *m_pNewSurf, *m_pOldSurf;
	tdeSectModifType m_eModifType;
	BOOL			 m_bFirstTime;
	BOOL			 m_bDone;
	long			 m_lOldNum, m_lNewNum;

public:
// constructors
	SECT_ModifSurfElem  (Sector_Interface *pInterface, tdeSectModifType eModifType,
						SECT_SurfElem *pSurfElem, SECT_Surface *pNewSurf, long lNumEnvElem);
	~SECT_ModifSurfElem (void);
// actions
	BOOL Do		(void);
	BOOL Undo	(void);

// functions
	void fn_vReinitEditorState (void);
	void fn_vUpdateEditorState (void);
};
*/


//#################################################################################
// SURFACE
//#################################################################################
/*===========================================================================
*		Description:	modify surface parameters
*		Creation date:	
*		Author:			Shaitan
*---------------------------------------------------------------------------
*		Revision date:                                      Author:         
*=========================================================================*/
/*
class SECT_ModifSrfParams : public CPA_Modif
{
protected:
	Sector_Interface	*m_pSectorInterface;
	tdeSectModifType	m_eModifType;
	SECT_Surface		*m_pSurface;
	MTH_tdxReal			m_xNewHeight, m_xOldHeight;
	BOOL				m_bFirstTime;
	BOOL				m_bDone;

public:
// constructors
	SECT_ModifSrfParams  (Sector_Interface *pInterface, tdeSectModifType eModifType,
						  SECT_Surface *pSurface, MTH_tdxReal xNewHeight);
	~SECT_ModifSrfParams (void);
// actions
	BOOL Do		(void);
	BOOL Undo	(void);

// functions
	void fn_vReinitEditorState (void);
	void fn_vUpdateEditorState (void);
};
*/

//#################################################################################
// ENVIRONMENT
//#################################################################################
/*===========================================================================
*		Description:	modify environment parameters
*		Creation date:	
*		Author:			Shaitan
*---------------------------------------------------------------------------
*		Revision date:                                      Author:         
*=========================================================================*/
/*
class SECT_ModifEnvParams : public CPA_Modif
{
protected:
	Sector_Interface	*m_pSectorInterface;
	SECT_Environment	*m_pEnvironment;
	SECT_MecEnvironment *m_pNewMecEnv, *m_pOldMecEnv;
	SECT_VisEnvironment *m_pNewVisEnv, *m_pOldVisEnv;
	SECT_SndEnvironment	*m_pNewSndEnv, *m_pOldSndEnv;
	tdeSectModifType	m_eModifType;
	BOOL				m_bFirstTime;
	BOOL				m_bDone;

public:
// constructors
	SECT_ModifEnvParams  (Sector_Interface *pInterface, tdeSectModifType eModifType,
						  SECT_Environment *pEnvironment, SECT_MecEnvironment *pNewMecEnv, 
						  SECT_VisEnvironment *pNewVisEnv, SECT_SndEnvironment *pNewSndEnv);
	~SECT_ModifEnvParams (void);
// actions
	BOOL Do		(void);
	BOOL Undo	(void);

// functions
	void fn_vReinitEditorState (void);
	void fn_vUpdateEditorState (void);
};
*/

/*===========================================================================
*		Description:	modify mechanic environment parameters
*		Creation date:	
*		Author:			Shaitan
*---------------------------------------------------------------------------
*		Revision date:                                      Author:         
*=========================================================================*/
/*
class SECT_ModifMecEnvParams : public CPA_Modif
{
protected:
	Sector_Interface	*m_pSectorInterface;
	SECT_MecEnvironment *m_pMecEnv;
	tdeSectModifType	m_eModifType;
	BOOL				m_bFirstTime;
	BOOL				m_bDone;

	CString				m_csNewName, m_csOldName;
	MTH_tdxReal			m_xNewGravity, m_xOldGravity;
	DNM_tdstVector		m_stNewVertical, m_stOldVertical;
	MTH_tdxReal			m_xNewViscosity, m_xOldViscosity;
	MTH_tdxReal			m_xNewDensity, m_xOldDensity;
	MTH_tdxReal			m_xNewLevel, m_xOldLevel;
	DNM_tdstVector		m_stNewStream, m_stOldStream;
	CString				m_csNewVolumic, m_csOldVolumic;

public:
// constructors
	SECT_ModifMecEnvParams  (Sector_Interface *pInterface, tdeSectModifType eModifType,
							 SECT_MecEnvironment *pMecEnv, CString csName, 
							 MTH_tdxReal xGravity, DNM_tdstVector *pVertical, 
							 MTH_tdxReal xViscosity, MTH_tdxReal xDensity, 
							 MTH_tdxReal xLevel, DNM_tdstVector *pStream, 
							 CString csVolumic);
	~SECT_ModifMecEnvParams (void);

// actions
	BOOL Do		(void);
	BOOL Undo	(void);

// functions
	void fn_vReinitEditorState (void);
	void fn_vUpdateEditorState (void);
};
*/
/*===========================================================================
*		Description:	modify visual environment parameters
*		Creation date:	
*		Author:			Shaitan
*---------------------------------------------------------------------------
*		Revision date:                                      Author:         
*=========================================================================*/
/*
class SECT_ModifVisEnvParams : public CPA_Modif
{
protected:
	Sector_Interface	*m_pSectorInterface;
	SECT_VisEnvironment *m_pVisEnv;
	tdeSectModifType	m_eModifType;
	BOOL				m_bFirstTime;
	BOOL				m_bDone;

	CString				m_csNewName, m_csOldName;
	MTH_tdxReal			m_xNewNear, m_xOldNear;
	MTH_tdxReal			m_xNewFar, m_xOldFar;
	MTH_tdxReal			m_xNewBlendNear, m_xOldBlendNear;
	MTH_tdxReal			m_xNewBlendFar, m_xOldBlendFar;
	MTH_tdxReal			m_xNewInfinite, m_xOldInfinite;
	GLI_tdstColor		m_stNewColor, m_stOldColor;

public:
// constructors
	SECT_ModifVisEnvParams  (Sector_Interface *pInterface, tdeSectModifType eModifType,
							 SECT_VisEnvironment *pVisEnv, CString csName, 
							 MTH_tdxReal xNear, MTH_tdxReal xFar, 
							 MTH_tdxReal xBlendNear, MTH_tdxReal xBlendFar, 
							 MTH_tdxReal xInfinite, GLI_tdstColor *pColor);
	~SECT_ModifVisEnvParams (void);

// actions
	BOOL Do		(void);
	BOOL Undo	(void);

// functions
	void fn_vReinitEditorState (void);
	void fn_vUpdateEditorState (void);
};
*/

//#################################################################################
// APPLY
//#################################################################################
/*===========================================================================
*		Description:	save env lists
*		Creation date:	
*		Author:			Shaitan
*---------------------------------------------------------------------------
*		Revision date:                                      Author:         
*=========================================================================*/
/*
class SECT_SaveEnvList : public CObject
{
public:
	Sector_Object				*m_pSector;
	CPA_List<SECT_Surface>		m_oListSrf;
	CPA_List<SECT_Environment>	m_oListEnv;

	SECT_SaveEnvList (Sector_Object *pSector);
	~SECT_SaveEnvList ();
};
*/

/*===========================================================================
*		Description:	apply envlist to sectors
*		Creation date:	
*		Author:			Shaitan
*---------------------------------------------------------------------------
*		Revision date:                                      Author:         
*=========================================================================*/
/*
class SECT_ModifApplyToSectors : public CPA_Modif
{
protected:
	Sector_Interface			*m_pSectorInterface;
	CPA_SuperObject				*m_pModel;
	CPA_List<SECT_Surface>		m_oListSrf;
	CPA_List<SECT_Environment>	m_oListEnv;
	CPA_List<SECT_SaveEnvList>  m_oListSectors;
	tdeSectModifType			m_eModifType;
	BOOL						m_bFirstTime;
	BOOL						m_bDone;

public:
// constructors
	SECT_ModifApplyToSectors   (Sector_Interface *pInterface, tdeSectModifType eModifType,
								CPA_SuperObject *pModel, CPA_List<CPA_SuperObject> *pListSectors);
	~SECT_ModifApplyToSectors  (void);

// actions
	BOOL Do		(void);
	BOOL Undo	(void);

// functions
	void fn_vReinitEditorState (void);
	void fn_vUpdateEditorState (void);
};
*/


//#################################################################################
// SYMETRIC
//#################################################################################
/*===========================================================================
*		Description:	apply symetric links to sectors
*		Creation date:	
*		Author:			Shaitan
*---------------------------------------------------------------------------
*		Revision date:                                      Author:         
*=========================================================================*/
class SECT_ModifSymetricLinks : public CPA_Modif
{
protected:
	CPA_List<SECT_SaveSectorLinks>	m_oListSectors;
	Sector_Interface				*m_pSectorInterface;
	tdeSectModifType				m_eModifType;
	CPA_SuperObject					*m_pModel;
	tdeTypeList						m_eListToUpdate;
	tdeEditMode						m_eCurrentEditMode;
	BOOL							m_bFirstTime;
	BOOL							m_bDone;

public:
// constructors
	SECT_ModifSymetricLinks   (Sector_Interface *pInterface, tdeSectModifType eModifType,
							   CPA_SuperObject *pModel, tdeTypeList eList);
	~SECT_ModifSymetricLinks  (void);

// actions
	BOOL Do		(void);
	BOOL Undo	(void);

// functions
	void fn_vReinitEditorState (void);
	void fn_vUpdateEditorState (void);
};

/*===========================================================================
*		Description:	apply symetric links to sectors
*		Creation date:	
*		Author:			Shaitan
*---------------------------------------------------------------------------
*		Revision date:                                      Author:         
*=========================================================================*/
class SECT_ModifSymetricSelect : public CPA_Modif
{
protected:
	Sector_Interface				*m_pSectorInterface;
	CPA_SuperObject					*m_pEditedSector;
	CPA_SuperObject					*m_pSelectedSector;
	tdeSectModifType				m_eModifType;
	BOOL							m_bFirstTime;
	BOOL							m_bDone;

	SECT_SoundElement				*m_pNewSoundElement;
	SECT_GraphicElement				*m_pNewGraphicElement;
	SECT_ActivityElement			*m_pNewActivityElement;
	SECT_CollisionElement			*m_pNewCollisionElement;
	SECT_SoundEventElement			*m_pNewSndEvtElement;

	SECT_SoundEventElement			*m_pOldSndEvtElement;
	int								m_iOldGraphic, m_iNewGraphic;
	int								m_iOldGMode, m_iNewGMode;
	int								m_iOldSound, m_iNewSound;


public:
// constructors
	SECT_ModifSymetricSelect   (Sector_Interface *pInterface, tdeSectModifType eModifType,
							    CPA_SuperObject *pEditedSector, CPA_SuperObject *pSelectedSector);
	~SECT_ModifSymetricSelect  (void);

// actions
	BOOL Do		(void);
	BOOL Undo	(void);

// functions
	void fn_vReinitEditorState (void);
	void fn_vUpdateEditorState (void);
};


//#################################################################################
// VIRTUAL
//#################################################################################
/*===========================================================================
*		Description:	update virtual sector
*		Creation date:	
*		Author:			Shaitan
*---------------------------------------------------------------------------
*		Revision date:                                      Author:         
*=========================================================================*/
class SECT_ModifVirtualSector : public CPA_Modif
{
protected:
	Sector_Interface	*m_pSectorInterface;
	CPA_SuperObject		*m_pEditedSector;
	CPA_SuperObject		*m_pBorder;
	tdeSectModifType	m_eModifType;
	BOOL				m_bNewStatus;
	BOOL				m_bFirstTime;
	BOOL				m_bDone;

public:
//constructors
	SECT_ModifVirtualSector (Sector_Interface *pInterface, tdeSectModifType eModifType,
							 CPA_SuperObject *pEditedSector, BOOL bNewState);

	~SECT_ModifVirtualSector  (void);

// actions
	BOOL Do		(void);
	BOOL Undo	(void);

// functions
	void fn_vReinitEditorState (void);
	void fn_vUpdateEditorState (void);
};

//#################################################################################
// REPLACE
//#################################################################################
//#define C_lMaxEnvironments 20

/*===========================================================================
*		Description:	save initial sector
*		Creation date:	
*		Author:			Shaitan
*---------------------------------------------------------------------------
*		Revision date:                                      Author:         
*=========================================================================*/
/*
class SECT_SaveInitEnv: public CObject
{
public:
	Sector_Object	*m_pSector;
	long			m_aNumEnv[C_lMaxEnvironments];
	long			m_lNbEnv;

	SECT_SaveInitEnv (Sector_Object *pSector, SECT_Environment *pInitEnv);
	~SECT_SaveInitEnv ();
};
*/

/*===========================================================================
*		Description:	apply envlist to sectors
*		Creation date:	
*		Author:			Shaitan
*---------------------------------------------------------------------------
*		Revision date:                                      Author:         
*=========================================================================*/
/*
class SECT_ModifReplaceEnvironment : public CPA_Modif
{
protected:
	Sector_Interface			*m_pSectorInterface;
	CPA_SuperObject				*m_pEditedSector;
	SECT_Environment			*m_pInitEnv;
	SECT_Environment			*m_pNewEnv;
	CPA_List<SECT_SaveInitEnv>  m_oListSectors;
	tdeSectModifType			m_eModifType;
	BOOL						m_bFirstTime;
	BOOL						m_bDone;

public:
// constructors
	SECT_ModifReplaceEnvironment   (Sector_Interface *pInterface, tdeSectModifType eModifType,
									SECT_Environment *pInitEnv, SECT_Environment *pNewEnv,
									CPA_List<CPA_SuperObject> *pListSectors);
	~SECT_ModifReplaceEnvironment  (void);

// actions
	BOOL Do		(void);
	BOOL Undo	(void);

// functions
	void fn_vReinitEditorState (void);
	void fn_vUpdateEditorState (void);
};
*/

//#################################################################################
// COPY LIST
//#################################################################################
/*===========================================================================
*		Description:	apply envlist to sectors
*		Creation date:	
*		Author:			Shaitan
*---------------------------------------------------------------------------
*		Revision date:                                      Author:         
*=========================================================================*/
class SECT_ModifCopyList : public CPA_Modif
{
protected:
	Sector_Interface			*m_pSectorInterface;
	CPA_SuperObject				*m_pEditedSector;
	tdeSectModifType			m_eModifType;
	tdeEditMode					m_eCurrentEditMode;
	BOOL						m_bSymetric;
	BOOL						m_bFirstTime;
	BOOL						m_bDone;

	CPA_List<SECT_ElementBase>	m_aListOfElements[C_NumberOfLists];
	CPA_List<SECT_ElementBase>	m_aListOfSymElems[C_NumberOfLists];

public:
// constructors
	SECT_ModifCopyList (Sector_Interface *pInterface, tdeSectModifType eModifType,
						CPA_List<CPA_SuperObject> *pCopyOfSectorList, tdeTypeList eList);
	~SECT_ModifCopyList(void);

// actions
	BOOL Do		(void);
	BOOL Undo	(void);

// functions
	void fn_vReinitEditorState (void);
	void fn_vUpdateEditorState (void);
};

#endif //__SECT_MODIF_HPP__
