reman3/Rayman_X/cpa/tempgrp/OSC/Inc/SECTlist.hpp

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__