/*========================================================================= * * 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 { 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 { 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 { 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 { 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 { 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 m_oSoundEventList; public: SECT_SoundEventElement (CPA_SuperObject *pSector, Sector_Object *pOwnerSector); ~SECT_SoundEventElement (void); CPA_List * 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, 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, 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, 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, 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, public SECT_ListBase { protected: CPA_List 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__