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

498 lines
17 KiB
C++

/*=========================================================================
*
* SECTint.hpp : Sector DLL Interface - definition
*
*
* Version 1.0
* Creation date
* Revision date
*
* Shaitan
*=======================================================================*/
#ifndef __SECT_INT_HPP__
#define __SECT_INT_HPP__
#include "incSND.h"
#include "incITF.h"
#include "SECTobj.hpp"
// if you want only one instance of your DLL
// activate the next line
#define DLL_ONLY_ONE_INSTANCE
// mode
typedef enum
{
E_em_EditSector,
E_em_EditList
//Shaitan Clean Env
// E_em_EditEnv
}
tdeEditMode;
// colors
#define C_ColorEdited E_lc_Red
#define C_ColorSelected E_lc_Blue
#define C_ColorShow E_lc_Green
#define C_ColorSurf E_lc_LightBlue
#define C_NoColor E_lc_NoColor
// dialogs
class SECT_DialogList;
class SECT_DialogMode;
class SECT_DialogEdit;
class SECT_DialogSel;
class SECT_DialogBase;
class SECT_DialogActiv;
class SECT_DialogColls;
class SECT_DialogGraph;
class SECT_DialogSound;
class SECT_DialogSoundEvent;
class SECT_DialogDistance;
//Shaitan Clean Env
/*
class SECT_DialogEnvList;
class SECT_DialogEnvs;
class SECT_DialogSrf;
class SECT_DialogEnv;
class SECT_DialogMec;
class SECT_DialogVis;
*/
extern BOOL g_bCanSave;
/*===========================================================================
* Description: class Sector_Interface
* Creation date:
* Author: Shaitan
*---------------------------------------------------------------------------
* Revision date: Author:
*=========================================================================*/
class Sector_Interface : public CPA_ObjectDLLBase
{
private:
// edited sector
CPA_SuperObject *m_pEditedSector;
CPA_SuperObject *m_pSelectedSector;
// KeyBoard
CPA_KeyActionConfiguration * m_pKeyboard;
// ImageList
CImageList m_oStateIconList;
// Frames
CSplitFrame * m_pSectorLeftFrame;
CSplitFrame * m_pSectorBottomFrame;
//Shaitan Clean Env
/*
CSplitFrame * m_pEnvLeftFrame;
CSplitFrame * m_pEnvBottomFrame;
*/
CSplitFrame * m_pCurrentLeftFrame;
CSplitFrame * m_pCurrentBottomFrame;
// Dialogs (Sector)
CPA_DialogList * m_pSectorDialogList;
SECT_DialogEdit * m_pSectorDialogEdit;
SECT_DialogMode * m_pSectorDialogMode;
SECT_DialogSel * m_pDialogSel;
SECT_DialogActiv * m_pDialogActiv;
SECT_DialogColls * m_pDialogColls;
SECT_DialogGraph * m_pDialogGraph;
SECT_DialogSound * m_pDialogSound;
SECT_DialogSoundEvent * m_pDialogSoundEvent;
SECT_DialogDistance * m_pDialogDistance;
//Shaitan Clean Env
/*
// Dialogs (Env)
CPA_DialogList * m_pEnvDialogList;
SECT_DialogEdit * m_pEnvDialogEdit;
SECT_DialogMode * m_pEnvDialogMode;
SECT_DialogEnvList * m_pDialogEnvList;
SECT_DialogEnvs * m_pDialogEnvs;
SECT_DialogSrf * m_pDialogSrf;
SECT_DialogEnv * m_pDialogEnv;
SECT_DialogMec * m_pDialogMec;
SECT_DialogVis * m_pDialogVis;
*/
// Dialogs (Current)
CPA_DialogList * m_pCurrentDialogList;
SECT_DialogEdit * m_pCurrentDialogEdit;
SECT_DialogMode * m_pCurrentDialogMode;
// Modes
tdeEditMode m_eEditMode;
int m_aListActivity[C_NumberOfLists];
//Shaitan Clean Env
/*
// Environment
CString m_csEnvFileName;
CString m_csMecEnvFileName;
CString m_csVisEnvFileName;
*/
// Reference Path
CString m_csSECTRefPath;
//Shaitan Clean Env
/*
CString m_csSURFRefPath;
CString m_csENVRefPath;
CString m_csMECRefPath;
CString m_csVISRefPath;
*/
// Select Mode
CString m_csSaveSelectMode;
BOOL m_bPreviousState;
BOOL m_bPreviousLinkMode;
// Sound
CPA_BaseObjectList * m_pSoundEventList;
//Shaitan Clean Env
/*
CPA_BaseObjectList * m_pSoundEnvList;
// Surface
CPA_SuperObject * m_pCurrentVisual;
SECT_Surface * m_pSurfaceToDraw;
*/
// Init
BOOL m_bAllInitialised;
//Shaitan Clean Env
// Environments
// CPA_List<CPA_SuperObject> m_oSelectList;
// Symetric Mode
BOOL m_bSymetricMode;
// Borders
BOOL m_bDisplayBorders;
// Copy / Paste
CPA_List<CPA_SuperObject> m_oCopyOfSectorList;
public:
Sector_Interface(void);
~Sector_Interface(void);
/*===========================================================================
Get functions
=========================================================================*/
// current dialog
CPA_DialogList * GetDialogList (void) { return m_pCurrentDialogList; }
SECT_DialogEdit * GetDialogEdit (void) { return m_pCurrentDialogEdit; }
SECT_DialogMode * GetDialogMode (void) { return m_pCurrentDialogMode; }
// sector dialogs
SECT_DialogSel * GetDialogSel (void) { return m_pDialogSel; }
SECT_DialogBase * GetSingleList (tdeTypeList eType);
//Shaitan Clean Env
/*
// env dialogs
SECT_DialogEnvList * GetDialogEnvList (void) { return m_pDialogEnvList; }
SECT_DialogEnvs * GetDialogEnvs (void) { return m_pDialogEnvs; }
SECT_DialogSrf * GetDialogSrf (void) { return m_pDialogSrf; }
SECT_DialogEnv * GetDialogEnv (void) { return m_pDialogEnv; }
SECT_DialogMec * GetDialogMec (void) { return m_pDialogMec; }
SECT_DialogVis * GetDialogVis (void) { return m_pDialogVis; }
*/
CPA_SuperObject * GetEditedSector (void) { return m_pEditedSector; }
CPA_SuperObject * GetSectorToEdit (CPA_List<CPA_BaseObject> *pParam);
tdeEditMode GetEditMode (void) { return m_eEditMode; }
int GetListActivity (tdeTypeList eList) { return m_aListActivity[eList]; }
CString GetSECTRefPath (void) { return m_csSECTRefPath; }
//Shaitan Clean Env
/*
CString GetSURFRefPath (void) { return m_csSURFRefPath; }
CString GetENVRefPath (void) { return m_csENVRefPath; }
CString GetMECRefPath (void) { return m_csMECRefPath; }
CString GetVISRefPath (void) { return m_csVISRefPath; }
SECT_Surface * GetSurfaceToDraw (void) { return m_pSurfaceToDraw; }
*/
CPA_SuperObject * GetSectorWithName (CString csName);
//Shaitan Clean Env
// CPA_BaseObjectList * GetSoundEnvList (void) { return m_pSoundEnvList; }
CPA_BaseObjectList * GetSoundEventList (void) { return m_pSoundEventList; }
//Shaitan Clean Env
// CPA_List<CPA_SuperObject> * GetSelectList (void) { return &m_oSelectList; }
CPA_List<CPA_SuperObject> * GetCopyOfSectorList (void) { return &m_oCopyOfSectorList; }
BOOL fn_bSymetricMode (void) { return m_bSymetricMode; }
BOOL fn_bDisplayBorders (void) { return m_bDisplayBorders; }
/*===========================================================================
Set functions
=========================================================================*/
void SetEditMode (tdeEditMode eNewMode, BOOL bRedraw = TRUE);
void SetListActivity (tdeTypeList eType, BOOL bActive, BOOL bRedraw = TRUE);
void SetCurrentFrame (tdeEditMode eNewMode);
void SetSymetricMode (BOOL bSymetricMode) { m_bSymetricMode = bSymetricMode; }
void fn_vUpdateEditMode (BOOL bReinit = FALSE);
/*===========================================================================
Dialogs
=========================================================================*/
void fn_vCreateSectorDialogs (CString csFileName);
//Shaitan Clean Env
// void fn_vCreateEnvironmentDialogs (CString csFileName);
void fn_vOnKeyDownInSectorList (SECT_DialogBase *pDialog, UINT nChar);
//Shaitan Clean Env
// void fn_vOnKeyDownInEnvList (CPA_SuperObject *pSector, long lNumEnvElem, UINT nKey);
/*===========================================================================
Others
=========================================================================*/
// inits
void fn_vReinitEditor (CPA_SuperObject *pSectorToEdit);
// permissions & modifs
BOOL fn_bAcceptModifHierarchy (tdeStatus eStatus);
void fn_vOnModifHierarchy (tdeStatus eStatus);
// colors
void fn_vShowEditedSector (BOOL bUpdateDrawing, BOOL bAlone = TRUE);
void fn_vShowAllSectors (BOOL bUpdateDrawing = TRUE);
void fn_vShowSelection (BOOL bUpdateDrawing = TRUE);
void fn_vSetRecursiveColor (CPA_SuperObject *pEdObj, tdeLocalColor eColor);
// selection
void fn_vSelectNewSector (CPA_SuperObject *pSector, BOOL bCenterOnSector = FALSE, BOOL bUpdateDrawing = TRUE);
// lists
void fn_vUpdateActiveLists (CPA_SuperObject *pSector);
// select for environment
void fn_vUpdateSelectList (CPA_SuperObject *pSector);
// preferences
void fn_vSaveDialogsPreferences (void);
// copy / paste
void fn_vCopySectorList (CPA_SuperObject *pSector, tdeTypeList eList);
void fn_vPasteSectorList (CPA_SuperObject *pSector, tdeTypeList eList);
/*===========================================================================
Environments
=========================================================================*/
//Shaitan Clean Env
/*
void fn_vInitEnvironmentFiles (void);
void fn_vLoadEnvironments (void);
void fn_vLoadMecEnvironments (void);
void fn_vLoadVisEnvironments (void);
CString GetEnvFileName (void) { return m_csEnvFileName; }
CString GetMecEnvFileName (void) { return m_csMecEnvFileName; }
CString GetVisEnvFileName (void) { return m_csVisEnvFileName; }
SECT_Environment * GetOrBuildEnvironment (ENV_tdxHandleToEnvironment hEnvironment);
SECT_Environment * GetEnvironmentWithName (CString csName);
SECT_Environment * GetDefaultEnvironment (void);
SECT_MecEnvironment * GetOrBuildMecEnvironment (DNM_tdxHandleToMecEnvironment hMecEnv);
SECT_MecEnvironment * GetDefaultMecEnvironment (void);
SECT_VisEnvironment * GetOrBuildVisEnvironment (ACP_tdxHandleToVisualEnvironment hVisEnv);
SECT_VisEnvironment * GetDefaultVisEnvironment (void);
SECT_SndEnvironment * GetOrNullSndEnvironment (SND_tdxHandleToSoundInfo hSndEnv);
SECT_SndEnvironment * GetDefaultSndEnvironment (void);
*/
/*===========================================================================
Sounds
=========================================================================*/
void fn_vReinitSoundParameters (void);
SECT_SoundEvent * GetOrNullSoundEvent (SND_tdxHandleToSoundEvent hSoundEvent);
SECT_SoundEvent * GetDefaultSoundEvent (void);
/*===========================================================================
Surface
=========================================================================*/
//Shaitan Clean Env
/*
void fn_vLoadSurfaces (void);
void SetSurfaceToDraw (SECT_Surface *pSurface);
SECT_Surface * GetOrBuildSurface (SRF_tdxHandleToSurface hSurface);
SECT_Surface * GetDefaultSurface (Sector_Object *pSector);
long GetSurfaceHeightIndex (SECT_Surface *pSurface, long lPrevIndex);
void fn_vUpdateHeightIndex (SECT_Surface *pSurface);
void fn_vUpdateAllSurfaceList (SECT_Surface *pSurface);
*/
/*===========================================================================
Water Effect
=========================================================================*/
//Shaitan Clean Env
// void fn_vUpdateSurfaceList (BOOL bOnlyCurrentSurfaces = TRUE);
/*===========================================================================
Borders
=========================================================================*/
void fn_vDisplayBorder (Sector_Object *pSector, BOOL bDisplay, BOOL bUpdate);
void fn_vDisplayBorders (BOOL bDisplay);
/*===========================================================================
Virtual
=========================================================================*/
BOOL fn_bCanChangeVirtual (CPA_SuperObject *pSector, BOOL bVirtual);
void fn_vUpdateAllVirtuals (void);
//#################################################################################
// DLL FUNCTIONS OVERLOAD
//#################################################################################
/*===========================================================================
Inits
=========================================================================*/
void fn_vJustAfterRegistered (void);
void fn_vConstruct (void);
void fn_vInitListByType (CPA_World *pWorld);
void fn_vBeforeEngine (void);
void fn_vBeforeEditor (void);
void fn_vLevelChanges (void);
void fn_vLevelHasChanged (void);
/*===========================================================================
Hierarchy
=========================================================================*/
void fn_vBuildNewEditorInstance (CPA_SuperObject *pEditorInstance, HIE_tdxHandleToSuperObject pEngineInstance);
void fn_vUpdateEditorInstance (CPA_SuperObject *pEditorInstance, HIE_tdxHandleToSuperObject pEngineInstance);
BOOL fn_bCanHandleThisType (long lEngineType);
BOOL fn_bLoadBaseObject(CPA_BaseObject *p_oObject);
/*===========================================================================
Dialog Bar - Mircea Dunka 31 Aug. 1998
=========================================================================*/
void fn_vDefineDlgBarBtnIcon (tde_DlgBarCategory wCategory, tds_DlgBarBtn *_pDlgBarBtn);
/*===========================================================================
Editor
=========================================================================*/
BOOL fn_bDefineSubMenu (EDT_SubMenu *_p_oEDTSubMenu);
void _OnSubMenuCommand (EDT_SubMenu *_p_oEDTSubMenu, UINT uiMsgID);
BOOL fn_bDefinePopupMenu (EDT_PopUpMenu *pPopup, CPA_List<CPA_SuperObject> *pSelection, BOOL bAsCurrentEditor);
void _OnPopUpMenuCommand (UINT m_IDCmdMsg);
BOOL fn_bCanActivateEditor (CPA_List<CPA_BaseObject> *pParams);
void fn_vOnActivateEditor (CPA_List<CPA_BaseObject> *pParam, BOOL bBackActivated=FALSE);
void fn_vOnCloseEditor (void);
BOOL fn_bHasGainedFocus (void);
void fn_vHasLostFocus (void);
/*===========================================================================
Permissions
=========================================================================*/
tdeTypeAnswer fn_bAcceptSelect (CPA_SuperObject *pEdObj, ACP_tdxIndex xIndex, HIE_tdstPickInfo *pPicking, tdeStatus eStatus);
BOOL fn_bAcceptModifDelete (CPA_List<CPA_SuperObject> *pListObjects, tdeStatus eStatus);
BOOL fn_bAcceptModifParent (CPA_List<CPA_SuperObject> *pListObjects, tdeStatus eStatus);
BOOL fn_bAcceptModifCopy (CPA_List<CPA_SuperObject> *pListObjects, tdeStatus eStatus);
BOOL fn_bAcceptModifTranslate (CPA_List<CPA_SuperObject> *pListObjects, tdeStatus eStatus);
BOOL fn_bAcceptModifRotate (CPA_List<CPA_SuperObject> *pListObjects, tdeStatus eStatus);
BOOL fn_bAcceptModifScale (CPA_SuperObject *pEdObj, tdeStatus eStatus);
BOOL fn_bAcceptModifInsert (CPA_SuperObject *pEdObj, CPA_SuperObject *pParent, tdeStatus eStatus);
BOOL fn_bAcceptAsParent (CPA_BaseObject *pChild, CPA_BaseObject *pParent);
BOOL fn_bAcceptAsChild (CPA_BaseObject *pParent, CPA_BaseObject *pChild);
/*===========================================================================
Modifs
=========================================================================*/
void fn_vOnSelect (CPA_SuperObject *pEdObj, tdeTypeModif eType, tdeStatus eStatus);
void fn_vOnModifName (CPA_SuperObject *pEdObj, CString csInitalName, CString csFinalName, tdeTypeModif eType, tdeStatus eStatus);
void fn_vOnModifDelete (CPA_List<EDT_SaveParents> *pListObjects, tdeTypeModif eType, tdeStatus eStatus);
void fn_vOnModifParent (CPA_List<EDT_SaveParents> *pListObjects, tdeTypeModif eType, tdeStatus eStatus);
void fn_vOnModifCopy (CPA_List<EDT_SaveParents> *pListObjects, tdeTypeModif eType, tdeStatus eStatus);
void fn_vOnModifInsert (CPA_SuperObject *pEdObj, CPA_SuperObject *pParent, tdstPosition *p_stPosition,
tdeTypeModif eType, tdeStatus eStatus);
void fn_vOnChangeRoot (void);
void fn_vOnChangeWorld (void);
void fn_vOnChangeDevice (void);
/*===========================================================================
Messages
=========================================================================*/
BOOL _OnKeyDown (UINT nChar, UINT nRepCnt, UINT nFlags);
BOOL _OnLButtonDown (UINT nFlags, tdstMousePos *p_stPos, ACP_tdxIndex xIndex, HIE_tdstPickInfo *pPicking);
BOOL _OnRButtonDown (UINT nFlags, tdstMousePos *p_stPos, ACP_tdxIndex xIndex, HIE_tdstPickInfo *pPicking);
BOOL _OnLButtonDblClk (UINT nFlags, tdstMousePos *p_stPos, ACP_tdxIndex xIndex, HIE_tdstPickInfo *pPicking);
/*===========================================================================
for Dialog List
=========================================================================*/
void GetListsForDialog (CPA_DialogList *pDialog);
void fn_vInitDefaultParameters (CPA_DialogList *pDialog);
BOOL fn_bOnSelChangeListObjects (CPA_DialogList *pDialog, CString csListName, CPA_BaseObject *pSelectedObject, BOOL bUnselect);
BOOL fn_bOnDblClkListObjects (CPA_DialogList *pDialog, CString csListName, CPA_BaseObject *pSelectedObject);
int GetStateForListItem (CPA_DialogList *pDialog, CString csListName, CPA_BaseObject *pObject);
BOOL GetColorsForListItem (CPA_DialogList *pDialog, CString csListName, CPA_BaseObject *pObject,
COLORREF *pRectColor, COLORREF *pTextColor);
BOOL fn_bIsInActiveLists (CPA_SuperObject *pSector);
BOOL fn_bIsAvailableForList (CPA_SuperObject *pSector);
tdeTypeList GetFirstActiveList (void);
void fn_vGetSectorsToDraw (CPA_List<CPA_SuperObject> *pSectorList);
void fn_vLinkNearestSectors (void);
};
extern tdstDLLIdentity g_stSectorIdentity;
#endif // __SECT_INT_HPP__