256 lines
10 KiB
C++
256 lines
10 KiB
C++
/*=========================================================================
|
|
*
|
|
* SECTlist.hpp : Definition of Editor Lists
|
|
*
|
|
*
|
|
* Version 1.0
|
|
* Creation date
|
|
* Revision date
|
|
*
|
|
* Shaitan
|
|
*=======================================================================*/
|
|
#ifndef __SECT_LIST_HPP__
|
|
#define __SECT_LIST_HPP__
|
|
|
|
#include "incGLI.h"
|
|
#include "incSPO.h"
|
|
|
|
/*
|
|
#define ENV_FRIEND
|
|
#include "incENV.h"
|
|
#undef ENV_FRIEND
|
|
*/
|
|
#define SCTFriend
|
|
#include "incSCT.h"
|
|
#undef SCTFriend
|
|
#include "incITF.h"
|
|
#include "incGAM.h"
|
|
|
|
#include "SECTelem.hpp"
|
|
|
|
class Sector_Interface;
|
|
|
|
typedef CPA_SaveObject SECT_SoundEvent;
|
|
|
|
//#################################################################################
|
|
// Elements
|
|
//#################################################################################
|
|
|
|
/*===========================================================================
|
|
Graphic Element
|
|
===========================================================================*/
|
|
class SECT_GraphicElement : public SECT_ElementBase,
|
|
public CPA_EdElement<SECT_GraphicElement, SECT_tdxHandleOfElementLstGraphicInteraction, LST2_M_StaticAnchorTo(SECT_tdxHandleOfElementLstGraphicInteraction)*>
|
|
{
|
|
public:
|
|
SECT_GraphicElement (SECT_tdxHandleOfElementLstGraphicInteraction hGraphicElement, Sector_Object *pOwnerSector);
|
|
SECT_GraphicElement (CPA_SuperObject *pSector, Sector_Object *pOwnerSector);
|
|
~SECT_GraphicElement (void);
|
|
|
|
void *GetEngineStruct() { return GetStruct(); }
|
|
|
|
int GetGraphicLevel (void);
|
|
void SetGraphicLevel (int iNewLevel, BOOL bNotify = TRUE);
|
|
|
|
char GetGraphicMode (void);
|
|
void SetGraphicMode (char cNewMode, BOOL bNotify = TRUE);
|
|
};
|
|
|
|
/*===========================================================================
|
|
Collision Element
|
|
===========================================================================*/
|
|
class SECT_CollisionElement : public SECT_ElementBase,
|
|
public CPA_EdElement<SECT_CollisionElement, SECT_tdxHandleOfElementLstCollisionInteraction, LST2_M_StaticAnchorTo(SECT_tdxHandleOfElementLstCollisionInteraction)*>
|
|
{
|
|
public:
|
|
SECT_CollisionElement (SECT_tdxHandleOfElementLstCollisionInteraction hCollisionElement, Sector_Object *pOwnerSector);
|
|
SECT_CollisionElement (CPA_SuperObject *pSector, Sector_Object *pOwnerSector);
|
|
~SECT_CollisionElement (void);
|
|
|
|
void *GetEngineStruct() { return GetStruct(); }
|
|
};
|
|
|
|
/*===========================================================================
|
|
Activity Element
|
|
===========================================================================*/
|
|
class SECT_ActivityElement : public SECT_ElementBase,
|
|
public CPA_EdElement<SECT_ActivityElement, SECT_tdxHandleOfElementLstActivityInteraction, LST2_M_StaticAnchorTo(SECT_tdxHandleOfElementLstActivityInteraction)*>
|
|
{
|
|
public:
|
|
SECT_ActivityElement (SECT_tdxHandleOfElementLstActivityInteraction hActivityElement, Sector_Object *pOwnerSector);
|
|
SECT_ActivityElement (CPA_SuperObject *pSector, Sector_Object *pOwnerSector);
|
|
~SECT_ActivityElement (void);
|
|
|
|
void *GetEngineStruct() { return GetStruct(); }
|
|
};
|
|
|
|
/*===========================================================================
|
|
Sound Element
|
|
===========================================================================*/
|
|
class SECT_SoundElement : public SECT_ElementBase,
|
|
public CPA_EdElement<SECT_SoundElement, SECT_tdxHandleOfElementLstSoundInteraction, LST2_M_StaticAnchorTo(SECT_tdxHandleOfElementLstSoundInteraction)*>
|
|
{
|
|
public:
|
|
SECT_SoundElement (SECT_tdxHandleOfElementLstSoundInteraction hSoundElement, Sector_Object *pOwnerSector);
|
|
SECT_SoundElement (CPA_SuperObject *pSector, Sector_Object *pOwnerSector);
|
|
~SECT_SoundElement (void);
|
|
|
|
void *GetEngineStruct() { return GetStruct(); }
|
|
|
|
int GetSoundLevel (void);
|
|
void SetSoundLevel (int iNewLevel, BOOL bNotify = TRUE);
|
|
};
|
|
|
|
/*===========================================================================
|
|
SoundEvent Engine Element
|
|
===========================================================================*/
|
|
class SECT_SndEvtEngineElem : public CPA_EdElement<SECT_SndEvtEngineElem, SCT_tdxHandleOfLstSoundEvent , LST2_M_StaticAnchorTo(SCT_tdxHandleOfLstSoundEvent)*>
|
|
{
|
|
protected:
|
|
Sector_Object *m_pOwnerSector;
|
|
CPA_SuperObject *m_pSector;
|
|
SECT_SoundEvent *m_pSoundEvent;
|
|
|
|
public:
|
|
SECT_SndEvtEngineElem (SCT_tdxHandleOfLstSoundEvent hSoundEventElement, Sector_Object *pOwnerSector);
|
|
SECT_SndEvtEngineElem (CPA_SuperObject *pSector, SECT_SoundEvent *pSoundEvent, Sector_Object *pOwnerSector);
|
|
~SECT_SndEvtEngineElem (void);
|
|
|
|
void *GetEngineStruct() { return GetStruct(); }
|
|
|
|
Sector_Object * GetOwnerSector (void) { return m_pOwnerSector; }
|
|
CPA_SuperObject * GetSector (void) { return m_pSector; }
|
|
SECT_SoundEvent * GetSoundEvent (void) { return m_pSoundEvent; }
|
|
|
|
CString GetSoundEventReference (void);
|
|
|
|
void fn_vInitSoundEvent (void);
|
|
};
|
|
|
|
/*===========================================================================
|
|
SoundEvent Element
|
|
===========================================================================*/
|
|
class SECT_SoundEventElement : public SECT_ElementBase
|
|
{
|
|
protected:
|
|
CPA_List<SECT_SndEvtEngineElem> m_oSoundEventList;
|
|
|
|
public:
|
|
SECT_SoundEventElement (CPA_SuperObject *pSector, Sector_Object *pOwnerSector);
|
|
~SECT_SoundEventElement (void);
|
|
|
|
CPA_List<SECT_SndEvtEngineElem> * GetSndEvtList (void) { return &m_oSoundEventList; }
|
|
|
|
void fn_vAddSoundEvent (SECT_SndEvtEngineElem *pSoundEventElement, BOOL bNotify = TRUE);
|
|
void fn_vRemoveSoundEvent (SECT_SndEvtEngineElem *pSoundEventElement, BOOL bNotify = TRUE);
|
|
void fn_vRemoveAllSoundEvents (BOOL bNotify = TRUE);
|
|
|
|
void fn_vCopyMissingSoundEvents (SECT_SoundEventElement *pModel, BOOL bNotify = TRUE);
|
|
|
|
SECT_SndEvtEngineElem * GetElementWithSoundEvent (SECT_SoundEvent *pSoundEvent);
|
|
};
|
|
|
|
//#################################################################################
|
|
// Lists
|
|
//#################################################################################
|
|
|
|
/*===========================================================================
|
|
Graphic List
|
|
===========================================================================*/
|
|
class SECT_GraphicList : public CPA_EdList<SECT_GraphicElement, SECT_tdxHandleOfElementLstGraphicInteraction, LST2_M_StaticAnchorTo(SECT_tdxHandleOfElementLstGraphicInteraction)*>,
|
|
public SECT_ListBase
|
|
{
|
|
public:
|
|
SECT_GraphicList (void) { };
|
|
~SECT_GraphicList (void) { };
|
|
|
|
BOOL fn_bAddAnElement (SECT_ElementBase *pNewElem, BOOL bUpdateEngine = TRUE);
|
|
void fn_vRemoveAnElement (SECT_ElementBase *pOldElem, BOOL bUpdateEngine = TRUE);
|
|
void fn_vRemoveAllElements (BOOL bUpdateEngine = TRUE);
|
|
|
|
SECT_ElementBase * GetHeadElementBase (POSITION& rPosition);
|
|
SECT_ElementBase * GetNextElementBase (POSITION& rPosition);
|
|
};
|
|
|
|
/*===========================================================================
|
|
Collision List
|
|
===========================================================================*/
|
|
class SECT_CollisionList : public CPA_EdList<SECT_CollisionElement, SECT_tdxHandleOfElementLstCollisionInteraction, LST2_M_StaticAnchorTo(SECT_tdxHandleOfElementLstCollisionInteraction)*>,
|
|
public SECT_ListBase
|
|
{
|
|
public:
|
|
SECT_CollisionList (void) { };
|
|
~SECT_CollisionList (void) { };
|
|
|
|
BOOL fn_bAddAnElement (SECT_ElementBase *pNewElem, BOOL bUpdateEngine = TRUE);
|
|
void fn_vRemoveAnElement (SECT_ElementBase *pOldElem, BOOL bUpdateEngine = TRUE);
|
|
void fn_vRemoveAllElements (BOOL bUpdateEngine = TRUE);
|
|
|
|
SECT_ElementBase * GetHeadElementBase (POSITION& rPosition);
|
|
SECT_ElementBase * GetNextElementBase (POSITION& rPosition);
|
|
};
|
|
|
|
/*===========================================================================
|
|
Activity List
|
|
===========================================================================*/
|
|
class SECT_ActivityList : public CPA_EdList<SECT_ActivityElement, SECT_tdxHandleOfElementLstActivityInteraction, LST2_M_StaticAnchorTo(SECT_tdxHandleOfElementLstActivityInteraction)*>,
|
|
public SECT_ListBase
|
|
{
|
|
public:
|
|
SECT_ActivityList (void) { };
|
|
~SECT_ActivityList (void) { };
|
|
|
|
BOOL fn_bAddAnElement (SECT_ElementBase *pNewElem, BOOL bUpdateEngine = TRUE);
|
|
void fn_vRemoveAnElement (SECT_ElementBase *pOldElem, BOOL bUpdateEngine = TRUE);
|
|
void fn_vRemoveAllElements (BOOL bUpdateEngine = TRUE);
|
|
|
|
SECT_ElementBase * GetHeadElementBase (POSITION& rPosition);
|
|
SECT_ElementBase * GetNextElementBase (POSITION& rPosition);
|
|
};
|
|
|
|
/*===========================================================================
|
|
Sound List
|
|
===========================================================================*/
|
|
class SECT_SoundList : public CPA_EdList<SECT_SoundElement, SECT_tdxHandleOfElementLstSoundInteraction, LST2_M_StaticAnchorTo(SECT_tdxHandleOfElementLstSoundInteraction)*>,
|
|
public SECT_ListBase
|
|
{
|
|
public:
|
|
SECT_SoundList (void) { };
|
|
~SECT_SoundList (void) { };
|
|
|
|
BOOL fn_bAddAnElement (SECT_ElementBase *pNewElem, BOOL bUpdateEngine = TRUE);
|
|
void fn_vRemoveAnElement (SECT_ElementBase *pOldElem, BOOL bUpdateEngine = TRUE);
|
|
void fn_vRemoveAllElements (BOOL bUpdateEngine = TRUE);
|
|
|
|
SECT_ElementBase * GetHeadElementBase (POSITION& rPosition);
|
|
SECT_ElementBase * GetNextElementBase (POSITION& rPosition);
|
|
};
|
|
|
|
/*===========================================================================
|
|
SoundEvent List
|
|
===========================================================================*/
|
|
class SECT_SoundEventList : public CPA_EdList<SECT_SndEvtEngineElem, SCT_tdxHandleOfLstSoundEvent, LST2_M_StaticAnchorTo(SCT_tdxHandleOfLstSoundEvent)*>,
|
|
public SECT_ListBase
|
|
{
|
|
protected:
|
|
CPA_List<SECT_SoundEventElement> m_oElementList;
|
|
|
|
public:
|
|
SECT_SoundEventList (void) { };
|
|
~SECT_SoundEventList (void) { };
|
|
|
|
BOOL fn_bAddAnElement (SECT_SndEvtEngineElem *pEngineElem);
|
|
BOOL fn_bAddAnElement (CPA_SuperObject *pSector, SECT_SoundEvent *pSoundEvent);
|
|
BOOL fn_bRemoveAnElement (CPA_SuperObject *pSector, SECT_SoundEvent *pSoundEvent);
|
|
|
|
BOOL fn_bAddAnElement (SECT_ElementBase *pNewElem, BOOL bUpdateEngine = TRUE);
|
|
void fn_vRemoveAnElement (SECT_ElementBase *pOldElem, BOOL bUpdateEngine = TRUE);
|
|
void fn_vRemoveAllElements (BOOL bUpdateEngine = TRUE);
|
|
|
|
SECT_ElementBase * GetHeadElementBase (POSITION& rPosition);
|
|
SECT_ElementBase * GetNextElementBase (POSITION& rPosition);
|
|
};
|
|
|
|
|
|
#endif //__SECT_LIST_HPP__
|