/*=========================================================================*/ /* CPAProj.hpp : main header file for the ACPPROJECT application*/ /* This is a part of the CPA project.*/ /**/ /* Version 1.0*/ /* Creation date 06/06/96*/ /* Revision date*/ /**/ /* (c) Ubi Studio 1996*/ /**/ /* DO NOT MODIFY THAT FILE. IF SOMETHING NEEDS TO BE CHANGE, PLEASE CONTACT */ /* VINCENT GRECO OR CHRISTOPHE BEAUDET.*/ /*=========================================================================*/ #ifndef __CPAPROJ_HPP__ #define __CPAPROJ_HPP__ #include #include "geo.h" #include "gli.h" #include "CPAdllls.hpp" #include "CPADD.hpp" #include "CPAFrame.hpp" #include "CPAKaCnf.hpp" #include "CPAWData.hpp" #include "CPAInter.hpp" /****************************************/ #ifndef CPA_EXPORT #if defined(CPA_WANTS_IMPORT) #define CPA_EXPORT __declspec(dllimport) #elif defined(CPA_WANTS_EXPORT) #define CPA_EXPORT __declspec(dllexport) #else #define CPA_EXPORT #endif #endif /****************************************/ #ifdef ACTIVE_EDITOR class CPA_DlgAbout; /*==================================================================================*/ /**/ /* Some general macros*/ /**/ /*==================================================================================*/ #define M_FocusToDevice(pMDevice) \ { \ DEV_Device *pDevice = (pMDevice)->GetFocusDevice(); \ (pMDevice)->GetDevice(pDevice->GetNumber())->GetViewPort()->SetFocus(); \ } #define M_GetMainApp() ((CPA_ProjectApp *) AfxGetApp()) #define M_GetMainWnd() ((CPA_MainFrame *) ((M_GetMainApp())->m_pMainWnd)) #define M_GetMainWnd2() ((FRMBaseMenu*)(g_oFrameGest.ma_p_oWinArray[2][2])) #ifdef ACTIVE_EDITOR #define M_GetMainDevice() ((DEV_MultiDevice *) M_GetMainWnd()->m_oSplitter.GetPane(0, 0)) #define M_GetMainDevice2() ((DEV_MultiDevice *) M_GetMainWnd2()->m_oSplitter.GetPane(0, 0)) #else /* ACTIVE_EDITOR*/ #define M_GetMainDevice() ((DEV_MultiDevice *) M_GetMainWnd()->GetActiveView()) #endif /* ACTIVE_EDITOR*/ #define M_GetMainDeviceNum(Num) (M_GetMainDevice()->GetDevice(Num)) #define M_GetMainDevice2D() ((DEV_MultiDevice2D *) M_GetMainDevice()) #define M_GetMainDevice3D() ((DEV_MultiDevice3D *) M_GetMainDevice()) #define M_GetMainActiveViewport() ((DEV_ViewPort *) (M_GetMainDevice()->GetDevice(M_GetMainDevice()->GetFocusDevice()->GetNumber())->GetViewPort())) #define M_GetActiveViewport(p_Multi) ((DEV_ViewPort *) ((p_Multi)->GetDevice((p_Multi)->GetFocusDevice()->GetNumber())->GetViewPort())) #define M_GetMainGLDDevice(Num) (M_GetMainDeviceNum(Num)->m_hDisplayDevice) #define M_GetMainGLDViewport(Num) (M_GetMainDeviceNum(Num)->GetViewPort()->m_hDisplayViewport) #define M_GetGLDDevice(p_Multi, Num) ((p_Multi)->GetDevice(Num)->m_hDisplayDevice) #define M_GetGLDViewport(p_Multi, Num) ((p_Multi)->GetDevice(Num)->GetViewPort()->m_hDisplayViewport) #define M_vFatalError(p_szError) {M_GetMainApp()->fn_vDynaFatalError(p_szError);} #ifdef ACTIVE_EDITOR #define M_bEditorsActive() (M_GetMainApp()->m_bEditorsAreActive) #define M_GetListOfAllDLL() (&(M_GetMainApp()->m_oListOfAllDLL)) #define M_bFullScreenEditor() (M_GetMainApp()->m_bEditorsAreActive && M_GetMainApp()->m_bFullScreenInEditor) #endif /* ACTIVE_EDITOR*/ class CPA_ProjectApp; /*###########################################################################*/ /* CPA_ProjectApp:*/ /* See ACPProject.cpp for the implementation of this class*/ /**/ class CPA_MainWorld; class CPA_EXPORT CPA_ProjectApp : public CWinApp { public: CPA_ProjectApp(); ~CPA_ProjectApp(); public: CWinThread *m_p_oEngineThread; /* Thread for engine loop*/ BOOL m_bOldScreenSaveActive; /* To first actual screen save state*/ char *m_p_szMemoProfile; /* To save profile string*/ BOOL m_bBadResolution; /* Bad resolution ?*/ unsigned char m_bProjectIsClosing; /* Is project closing ?*/ HANDLE m_hDrawSem; /* For display*/ BOOL m_bWasInFullScreenBeforeLooseFocus; BOOL m_bLeavingApplication; BOOL m_bFlagTaken; #ifdef ACTIVE_EDITOR /*------------------*/ public: BOOL m_bFullScreenInEditor; /* BOOL m_bViewerOpened;*/ BOOL m_bAutoReinitTheMap; CString m_csEditorDataPath; /* Complete access to data path*/ CString m_csEngineDataPath; /* Complete access to data path*/ CPA_DLLList m_oListOfAllDLL; /* List of all DLLs*/ unsigned char m_bEngineOneStep; /* To do one step of engine*/ CPA_MainWorld *m_p_oMainWorld; /* LE monde*/ CPA_KeyActionConfiguration *mp_oAppKeyboard; /* Keyboard defs*/ CPA_KeyActionConfiguration *mp_oDevKeyboard; /* For keyboard*/ /* List of all created keyboard objets*/ CList m_lstKeyboard; /* WaldDataMgr*/ CPA_WalkDataMgr m_oAppliWalkDataMgr; /* Drag&Drop*/ int m_iNumRef; /* Number of CWnd reference*/ tdstDDRef m_a_WndRef[C_ucMaxCWndRef]; /* Array of all references*/ BOOL m_bCanDrop; /* Can we drop now ?*/ BOOL m_bCopy; /* Copy object or move it ?*/ BOOL m_bControl; /* Control key is pressed*/ HWND m_LastFocusWnd; /* Last Wnd under mouse.*/ POINT m_stMousePos; /* Current position of mouse*/ HCURSOR m_hFirstCursor; /* Initial cursor*/ /* Mouse*/ BOOL m_bCursorInFirstScreen; /* flag for second screen*/ CString m_csCurrentMapName; /* name of the current map*/ /* About Dialog*/ CString m_csApplicationName; CString m_csApplicationVersion; CPA_DlgAbout *m_p_oDlgAbout; protected: CPA_SuperObject *m_pSuperObject; public: POS_tdstCompletePosition m_stWorldBaseMatrix; /*------------------*/ #endif /* ACTIVE_EDITOR*/ public: virtual void fn_vDynaFatalError(char *){}; void fn_vTestWindowsConfig(void); void fn_vSetWindowsParameters(void); void fn_vResetWindowsParameters(void); void BeforeWindows(); void AfterWindows(); virtual BOOL InitApplication(void); virtual void ExitApplication(void); virtual BOOL InitInstance(void); virtual void fn_vWhenAppGainFocus(void) {}; virtual void fn_vWhenAppLooseFocus(void) {}; virtual void fn_vBeforeEngineStarts(void) {}; virtual void fn_vAfterEngineStops(void) {}; virtual BOOL PreTranslateMessageEngine(MSG *p_stMsg); BOOL PreTranslateMessageEditor(MSG *p_stMsg); BOOL PreTranslateMessage( MSG* pMsg ); virtual void fn_vUpdateFrameTitle(void) {}; virtual void fn_vCreateEngineThread(void) {}; virtual CString fn_csGetMainCharacterFile (void) {return "";} virtual void fn_vUpdateDynamicLights (void) {}; /* int fn_iWindowsMainLoop(void);*/ /* void fn_vSuspendEngine(void);*/ /* void fn_vResumeEngine(void);*/ int Run(void); #ifdef ACTIVE_EDITOR virtual BOOL fn_bTreatAppKeyboard(UINT) { return FALSE; } void fn_vLoadAllDLLs(void); CPA_MainWorld *fn_p_oGetMainWorld() {return m_p_oMainWorld;} void fn_vDataHasChanged(void); void fn_vSetWorldBaseMatrix(void); void fn_vSetCurrentMap(CString csMapName){ m_csCurrentMapName = csMapName;}; CString fn_csGetCurrentMap() {return m_csCurrentMapName; }; virtual void fn_vReinitCurrentMap(void) {}; void OnHelpAbout(); #endif /* ACTIVE_EDITOR*/ #ifdef ACTIVE_EDITOR CPA_Interface * GetInterface (void); #endif /* ACTIVE_EDITOR*/ /* FBF Added for new synchro with engine thread*/ public: BOOL m_bEngineIsStopped; /* set when the engine has been stoped by the appli*/ /* CANNOT be changed by engine */ BOOL m_bEditorsAreActive; /* set when the Editors are active*/ /* CANNOT be changed by engine */ BOOL m_bAppliAskedToStopEngine; /* Set when the appli asked to stop the engine*/ /* CANNOT be changed by engine */ BOOL m_bAppliPulsedOneStep; /* Set when appli ask to do one step*/ /* reset by engine after engine restart*/ BOOL m_bAppliAskedToActivateEditors; /* Set when the appli asked to activate editors*/ /* CANNOT be changed by engine */ BOOL m_bEngineAskedToForceEditors; /* Set when the appli asked to force activation of editors*/ /* MUST be set by engine and reset by appli*/ BOOL m_bAppliAskedToEndGame; /* Set when the appli asked to end the game*/ /* CANNOT be changed by engine */ BOOL m_bEngineIsOver; /* set when the engine is finished*/ /* CANNOT be changed by engine*/ BOOL m_bFinishEngine; /* when the engine is over, setting this to TRUE will close engine thread*/ /* CANNOT be changed by engine*/ /* User Message definition*/ #define USERM_STOP_ENGINE 100 #define USERM_FORCE_START_EDITORS 101 #define USERM_START_EDITORS 102 #define USERM_ENGINE_IS_DONE 103 #define USERM_ENGINE_IS_CLOSING 104 #define USERM_SWAP_FULLSCREEN 105 /* functions called by Appli*/ public: void fn_vAppliAskToStartEditors(void); void fn_vAppliAskToStopEditors(void); void fn_vAppliAskToStartEngine(void); void fn_vAppliAskToStopEngine(void); void fn_vAppliAskOneStep(void); void fn_vAppliAskToEndGame(void); void fn_vRestartEngine(); void fn_vStopEngine(); private: void fn_vStartEditors(); /* message map */ afx_msg void OnUserMsg(UINT wParam,LONG lParam); /* end FBF*/ /*{{AFX_MSG(CPA_ProjectApp)*/ /*}}AFX_MSG*/ DECLARE_MESSAGE_MAP() }; #else class CPA_DlgAbout; /*==================================================================================*/ /**/ /* Some general macros*/ /**/ /*==================================================================================*/ #define M_FocusToDevice(pMDevice) \ { \ DEV_Device *pDevice = (pMDevice)->GetFocusDevice(); \ (pMDevice)->GetDevice(pDevice->GetNumber())->GetViewPort()->SetFocus(); \ } #define M_GetMainApp() ((CPA_ProjectApp *) AfxGetApp()) #define M_GetMainWnd() ((CPA_MainFrame *) ((M_GetMainApp())->m_pMainWnd)) #define M_GetMainDevice() ((DEV_MultiDevice *) M_GetMainWnd()->GetActiveView()) #define M_GetMainDeviceNum(Num) (M_GetMainDevice()->GetDevice(Num)) #define M_GetMainDevice2D() ((DEV_MultiDevice2D *) M_GetMainDevice()) #define M_GetMainDevice3D() ((DEV_MultiDevice3D *) M_GetMainDevice()) #define M_GetMainActiveViewport() ((DEV_ViewPort *) (M_GetMainDevice()->GetDevice(M_GetMainDevice()->GetFocusDevice()->GetNumber())->GetViewPort())) #define M_GetActiveViewport(p_Multi) ((DEV_ViewPort *) ((p_Multi)->GetDevice(M_GetMainDevice()->GetFocusDevice()->GetNumber())->mpViewPort)) #define M_GetMainGLDDevice(Num) (M_GetMainDeviceNum(Num)->m_hDisplayDevice) #define M_GetMainGLDViewport(Num) (M_GetMainDeviceNum(Num)->GetViewPort()->m_hDisplayViewport) #define M_GetGLDDevice(p_Multi, Num) ((p_Multi)->GetDevice(Num)->m_hDisplayDevice) #define M_GetGLDViewport(p_Multi, Num) ((p_Multi)->GetDevice(Num)->GetViewPort()->m_hDisplayViewport) #define M_vFatalError(p_szError) {M_GetMainApp()->fn_vDynaFatalError(p_szError);} class CPA_ProjectApp; /*###########################################################################*/ /* CPA_ProjectApp:*/ /* See ACPProject.cpp for the implementation of this class*/ /**/ class CPA_MainWorld; class CPA_EXPORT CPA_ProjectApp : public CWinApp { public: CPA_ProjectApp(); ~CPA_ProjectApp(); public: CWinThread *m_p_oEngineThread; /* Thread for engine loop*/ BOOL m_bOldScreenSaveActive; /* To first actual screen save state*/ char *m_p_szMemoProfile; /* To save profile string*/ BOOL m_bBadResolution; /* Bad resolution ?*/ unsigned char m_bProjectIsClosing; /* Is project closing ?*/ HANDLE m_hDrawSem; /* For display*/ BOOL m_bWasInFullScreenBeforeLooseFocus; BOOL m_bLeavingApplication; BOOL m_bFlagTaken; public: virtual void fn_vDynaFatalError(char *){}; void fn_vTestWindowsConfig(void); void fn_vSetWindowsParameters(void); void fn_vResetWindowsParameters(void); void BeforeWindows(); void AfterWindows(); virtual BOOL InitApplication(void); virtual void ExitApplication(void); virtual BOOL InitInstance(void); virtual void fn_vWhenAppGainFocus(void) {}; virtual void fn_vWhenAppLooseFocus(void) {}; virtual void fn_vBeforeEngineStarts(void) {}; virtual void fn_vAfterEngineStops(void) {}; virtual BOOL PreTranslateMessageEngine(MSG *p_stMsg); BOOL PreTranslateMessageEditor(MSG *p_stMsg); BOOL PreTranslateMessage( MSG* pMsg ); virtual void fn_vUpdateFrameTitle(void) {}; virtual void fn_vCreateEngineThread(void) {}; virtual CString fn_csGetMainCharacterFile (void) {return "";} virtual void fn_vUpdateDynamicLights (void) {}; /* int fn_iWindowsMainLoop(void);*/ /* void fn_vSuspendEngine(void);*/ /* void fn_vResumeEngine(void);*/ int Run(void); /* FBF Added for new synchro with engine thread*/ public: BOOL m_bEngineIsStopped; /* set when the engine has been stoped by the appli*/ /* CANNOT be changed by engine */ BOOL m_bEditorsAreActive; /* set when the Editors are active*/ /* CANNOT be changed by engine */ BOOL m_bAppliAskedToStopEngine; /* Set when the appli asked to stop the engine*/ /* CANNOT be changed by engine */ BOOL m_bAppliPulsedOneStep; /* Set when appli ask to do one step*/ /* reset by engine after engine restart*/ BOOL m_bAppliAskedToActivateEditors; /* Set when the appli asked to activate editors*/ /* CANNOT be changed by engine */ BOOL m_bEngineAskedToForceEditors; /* Set when the appli asked to force activation of editors*/ /* MUST be set by engine and reset by appli*/ BOOL m_bAppliAskedToEndGame; /* Set when the appli asked to end the game*/ /* CANNOT be changed by engine */ BOOL m_bEngineIsOver; /* set when the engine is finished*/ /* CANNOT be changed by engine*/ BOOL m_bFinishEngine; /* when the engine is over, setting this to TRUE will close engine thread*/ /* CANNOT be changed by engine*/ /* User Message definition*/ #define USERM_STOP_ENGINE 100 #define USERM_FORCE_START_EDITORS 101 #define USERM_START_EDITORS 102 #define USERM_ENGINE_IS_DONE 103 #define USERM_ENGINE_IS_CLOSING 104 #define USERM_SWAP_FULLSCREEN 105 /* functions called by Appli*/ public: void fn_vAppliAskToStartEditors(void); void fn_vAppliAskToStopEditors(void); void fn_vAppliAskToStartEngine(void); void fn_vAppliAskToStopEngine(void); void fn_vAppliAskOneStep(void); void fn_vAppliAskToEndGame(void); void fn_vRestartEngine(); void fn_vStopEngine(); private: void fn_vStartEditors(); /* message map */ afx_msg void OnUserMsg(UINT wParam,LONG lParam); /* end FBF*/ /*{{AFX_MSG(CPA_ProjectApp)*/ /*}}AFX_MSG*/ DECLARE_MESSAGE_MAP() }; /*///////////////////////////////////////////////////////////////////////////*/ /*///////////////////////////////////////////////////////////////////////////*/ #endif #endif /* __CPAPROJ_HPP__*/