reman3/Rayman_X/cpa/tempgrp/TAc/inc/ACinterf.hpp

256 lines
10 KiB
C++

/*=============================================================================
*
* Filename: ACInterf.hpp
* Version: 1.0
* Date: 30/12/96
* Author: Marc Trabucato
*
* Description: description of TAction_Interface class, which is the
* base class of action DLL (inherit CPA_ToolDLLBase
*
*===========================================================================*/
#ifndef __TActionINTERF_HPP__
#define __TActionINTERF_HPP__
/******************************************/
#if _MSC_VER >= 1000
#pragma once
#endif
/******************************************/
#ifdef ACTIVE_EDITOR
//3dos
//ACP
#include "TAC.h"
class CPA_DialogList;
class CPA_Family;
class CPA_Action;
class CPA_State;
class CDlgActionContents;
class CDlgActionList;
class CDlgState;
class CDlgAction;
class CDlgAnimList;
class CDlgNameList;
class CDlgZonesActivation;
class CDlgZAList;
class CDlgZAL;
class CPA_ZonesActivating;
class CPA_ZonesActivatingList;
class CPA_tdoNameList;
// if you want only one instance of your DLL
// activate the next line
#define DLL_ONLY_ONE_INSTANCE
//----------------------------------------------------------
// Tool DLL interface class
//----------------------------------------------------------
class TAction_Interface : public CPA_ToolDLLBase
{
protected:
BOOL m_bStateMode;
//
CSplitFrame *m_p_oSplitterLeftSTM;
CPA_DialogList *m_p_oDialogListSTM;
CDlgActionList *m_p_oDlgActionList;
CDlgActionContents *m_p_oDlgActionContents;
//
CSplitFrame *m_p_oSplitterBottomSTM;
CDlgState *m_p_oDlgState;
CDlgAnimList *m_p_oDlgAnimList;
//
CSplitFrame *m_p_oSplitterLeftZAM;
CPA_DialogList *m_p_oDialogListZAM;
CDlgNameList *m_p_oDlgNameList;
CDlgZAL *m_p_oDlgZAList;
CDlgAction *m_p_oDlgActions;
//
CSplitFrame *m_p_oSplitterBottomZAM;
CDlgZAList *m_p_oDlgZAListContent;
CDlgZonesActivation *m_p_oDlgZA;
//
long m_lEditorState;
// current values
CPA_Family *m_p_oCurrentFamily;
CPA_Action *m_p_oCurrentAction;
CPA_State *m_p_oCurrentState;
CPA_tdoNameList *m_p_oCurrentNameList;
CPA_ZonesActivatingList *m_p_oCurrentZAList;
CPA_ZonesActivating *m_p_oCurrentZA;
//
BOOL m_bAllFamilies;
CPA_Family *m_p_oCurrentAnimFamily;
// CPA_Ed_1 Mihaela Tancu begin
int m_iIndexListBox; //the index in the list box used for drag&drop of animations in the list box with states
HWND m_hDlgActionContentsHwnd; //the HWND of the action contents
// CPA_Ed_1 Mihaela Tancu end
private:
public:
TAction_Interface(void);
//~TAction_Interface(void);
// CPA_Ed_1 Mihaela Tancu begin
int mfn_iGetIndexListBox ( void) { return m_iIndexListBox; }
void mfn_iSetIndexListBox ( int iIndex) { m_iIndexListBox = iIndex; }
HWND mfn_hGetDlgActionContentsHwnd ( void) { return m_hDlgActionContentsHwnd; }
void mfn_hSetDlgActionContentsHwnd ( HWND hDlgActionContentsHwnd){ m_hDlgActionContentsHwnd = hDlgActionContentsHwnd; }
// CPA_Ed_1 Mihaela Tancu end
// get functions
CPA_Family *mfn_p_oGetCurrentFamily ( void ) { return m_p_oCurrentFamily; }
CPA_Action *mfn_p_oGetCurrentAction ( void ) { return m_p_oCurrentAction; }
CPA_State *mfn_p_oGetCurrentState ( void ) { return m_p_oCurrentState; }
CPA_tdoNameList *mfn_p_oGetCurrentNamesList ( void ) { return m_p_oCurrentNameList; }
CPA_ZonesActivatingList *mfn_p_oGetCurrentZAList ( void ) { return m_p_oCurrentZAList; }
CPA_ZonesActivating *mfn_p_oGetCurrentZA ( void ) { return m_p_oCurrentZA; }
void mfn_vSetEditMode ( BOOL _bStateMode = TRUE, BOOL _bActive = TRUE );
// select functions
void mfn_vChangeFamily ( CPA_Family *_p_oNewFamily );
void mfn_vChangeAction ( CPA_Action *_p_oAction );
void mfn_vChangeState ( CPA_State *_p_oState );
void mfn_vChangeNameList( CPA_tdoNameList *_p_oNameList );
// new functions for modif
// update display
void mfn_vSetCurrentFamily ( CPA_Family *_p_oNewFamily );
void mfn_vSetCurrentAction ( CPA_Action *_p_oAction );
void mfn_vSetCurrentState ( CPA_State *_p_oState );
void mfn_vSetCurrentNameList ( CPA_tdoNameList *_p_oList );
void mfn_vSetCurrentActionList ( int *_a_ItemList, long _lNumberOfItems );
void mfn_vSetCurrentZAList ( CPA_ZonesActivatingList *_p_oZAList );
void mfn_vSetCurrentZA ( CPA_ZonesActivating *_p_oZA );
void mfn_vAllActionsDeleted ( CPA_Family *_p_oFamily ) ;
void mfn_vActionCreated ( CPA_Family *_p_oFamily , CPA_Action *_p_oAction );
void mfn_vActionDeleted ( CPA_Family *_p_oFamily );
void mfn_vStateCreated ( CPA_Action *_p_oAction , CPA_State *_p_oState );
void mfn_vStateDeleted ( CPA_Action *_p_oAction );
void mfn_vStateChanged ( CPA_State *_p_oState , tdeChangingState _eChange) ;
void mfn_vZAListCreated ( CPA_ZonesActivatingList *_p_oZAList );
void mfn_vZAListDeleted ( CPA_tdoNameList *_p_oNameList );
void mfn_vZAToStateChanged ( CPA_List<CPA_State> *_p_oListOfStates );
void mfn_vZACreated ( CPA_ZonesActivating *_p_oZA );
void mfn_vZAChanged ( CPA_ZonesActivating *_p_oZA, int _iIndex );
void mfn_vZADeleted ( CPA_ZonesActivating *_p_oZA );
void mfn_vNotifyAllZAList ( CPA_Family *_p_oFamily, BOOL _bUpdateList = TRUE );
//====================================================================================
//========================= COMMON DLL FUNCTIONS OVERLOAD ============================
//====================================================================================
//void fn_vOnModifDrawFlag(class CPA_SuperObject *) {};
// ACP MEssages Functions overload
void fn_vJustAfterRegistered (void);
void fn_vConstruct (void);
void fn_vBeforeEngine (void);
void fn_vBeforeEditor (void);
BOOL fn_bAcceptToRunEngine (void);
BOOL fn_bAcceptToSave (void);
// Windows MEssages Functions overload
// to update lists of reachable objects
// for changes
// editor Modifs
void fn_vOnSelect (CPA_SuperObject *pEdObj, tdeTypeModif eType, tdeStatus eStatus);
// insert
// moves
// Dialog List
CPA_BaseObject *GetDialogSelection (CPA_DialogList *pDialog, CString csTypeName, tdeListDrawMode eDrawMode);
void GetListsForDialog (CPA_DialogList *pDialog);
BOOL fn_bOnSelChangeListObjects (CPA_DialogList *pDialog, CString csTypeName, CPA_BaseObject *pSelectedObject, BOOL _bUnselect);
BOOL fn_bOnDblClkListObjects (CPA_DialogList *pDialog, CString csListName, CPA_BaseObject *pSelectedObject);
void fn_vInitDefaultParameters (CPA_DialogList *pDialog);
BOOL fn_bAddEntriesToListPopup (CPA_DialogList *pDialog, CString csListName, CMenu *pMenu, UINT uiCustomEntriesStart);
void fn_vOnCommandInListPopup (CPA_DialogList *pDialog, CString csListName, UINT uiCustomEntry);
/*===========================================================================
Dialog Bar - Mircea Dunka 31 Aug. 1998
=========================================================================*/
void fn_vDefineDlgBarBtnIcon (tde_DlgBarCategory wCategory, tds_DlgBarBtn *_pDlgBarBtn);
//Menus
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);
// Current Editor
tdePermission fn_eAcceptNewEditor (CPA_EditorBase *pNewEditor) { return C_CloseBefore; }
BOOL fn_bCanActivateEditor (CPA_List<CPA_BaseObject> *pParams);
BOOL fn_bCanCloseEditor (void);
void fn_vOnActivateEditor (CPA_List<CPA_BaseObject> *pParams, BOOL bBackActivated = FALSE);
void fn_vOnCloseEditor (void);
// To communicate with that editor
long OnQueryAction (CPA_EditorBase *p_oSender, WPARAM, LPARAM);
long OnQueryOpen (CPA_EditorBase *p_oSender, WPARAM, LPARAM);
long OnQueryClose (CPA_EditorBase *p_oSender, WPARAM, LPARAM) { return 0; }
protected:
//Check functions
BOOL mfn_bCheckStatesTransitions( CPA_Family *_p_oFamily );
BOOL mfn_bCheckFamiliesZA ( void );
BOOL mfn_bCheckFamiliesZAList ( void );
//load functions
BOOL mfn_bLoadStatesMechanics ( CPA_Family *_p_oFamily );
BOOL mfn_bLoadStatesAnimations ( CPA_Family *_p_oFamily );
// test functions
BOOL mfn_bUpdateStateBeforeRunningEngine ( CPA_Family *_p_oFamily );
BOOL mfn_bUpdateStateBeforeSaving ( CPA_Family *_p_oFamily );
BOOL mfn_bUpdateCsaListBeforeRunningEngine ( void );
BOOL mfn_bUpdateCsaListBeforeSaving ( void );
void mfn_vWriteErrorOnFile (long _lErrorType,void *_p_void);
//load function
void mfn_vLoadActions ( CPA_Family *_p_oFamily );
void mfn_vInitStateAfterLoading ( CPA_Family *_p_oFamily );
// new load functions
void mfn_vCreateEditorObjects ( CPA_Family *_p_oFamily );
void mfn_vLoadAllActions ( CPA_Family *_p_oFamily );
void mfn_vUpdateMechanics ( void );
void mfn_vUpdateAllStates ( CPA_Family *_p_oFamily );
// Shaitan => state list in the level
// update list of used actions
void mfn_vUpdateListOfUsedActions ( CPA_Family *_p_oFamily);
static SCR_tde_Anl_ReturnValue m_fn_tdeCallBackLoadUsedActions(SCR_tdst_File_Description *pfFile, char *szAction, char *szPars[], SCR_tde_Anl_Action eType);
// End Shaitan => state list in the level
// ZA changes NOTIFICATION
void mfn_vRemoveZoneFromNamesList ( CPA_tdoNameList *_p_oNameList, unsigned short _usIndex );
void mfn_vInsertZoneToNamesList ( CPA_tdoNameList *_p_oNameList, unsigned short _usIndex );
//
CPA_BaseObject *mfn_p_oCreateNewZA ( CPA_tdoNameList *_p_oName, char *_szName );
CPA_BaseObject *mfn_p_oCreateNewZAList ( CPA_tdoNameList *_p_oName, char *_szName );
void mfn_vSavePreferences ( void );
void mfn_vRestorePreferences ( void );
};
#undef extern
extern tdstDLLIdentity g_stTActionIdentity;
#endif // ACTIVE_EDITOR
#endif // __TActionINTERF_HPP__