1310 lines
39 KiB
C++
1310 lines
39 KiB
C++
#ifdef ACTIVE_EDITOR // {
|
||
//=========================================================================
|
||
// CPAProject.cpp : Defines the class behaviors for the application.
|
||
// This is a part of the CPA project.
|
||
//
|
||
// Version 1.0
|
||
// Creation date 06/06/96
|
||
// Revision date
|
||
//
|
||
|
||
// (c) Ubi Studios 1996
|
||
//
|
||
// DO NOT MODIFY THAT FILE. IF SOMETHING NEEDS TO BE CHANGE, PLEASE CONTACT
|
||
// VINCENT GRECO OR CHRISTOPHE BEAUDET.
|
||
//=========================================================================
|
||
|
||
#include "stdafx.h"
|
||
#include "acp_base.h"
|
||
|
||
#define __DeclareGlobalVariableErrInt_h__
|
||
#include "ErrInt.h"
|
||
#undef __DeclareGlobalVariableErrInt_h__
|
||
#define __DeclareGlobalVariableMmgInt_h__
|
||
#include "MmgInt.h"
|
||
#undef __DeclareGlobalVariableMmgInt_h__
|
||
|
||
#include "direct.h"
|
||
#undef EXTERN
|
||
#include "geo.h"
|
||
#include "gli.h"
|
||
#include "col.h"
|
||
#define HieFriend
|
||
#include "spo.h"
|
||
#include "lst.h"
|
||
#undef HieFriend
|
||
|
||
#include "Itf/CPARes.h"
|
||
#include "Itf/CPAProj.hpp"
|
||
#include "Itf/CPADoc.hpp"
|
||
#include "Itf/DEVMul3D.hpp"
|
||
#include "Itf/FRMGest.Hpp"
|
||
#include "Itf/CPACont.hpp"
|
||
#include "Itf/CPAConst.hpp"
|
||
#include "Itf/CPAkacnf.hpp"
|
||
#include "Itf/cpamworl.hpp"
|
||
#include "Itf/cpakacnf.hpp"
|
||
#include "Itf/CPAAbout.hpp"
|
||
#include "Itf/CPAInter.hpp"
|
||
|
||
//***********************************************
|
||
//*** DR (20/01/98) *****************************
|
||
extern HMODULE g_hWawModule;
|
||
//*** End DR ************************************
|
||
//***********************************************
|
||
|
||
#include "x:\cpa\main\inc\_EditID.h"
|
||
#include "TUT.h"
|
||
|
||
//CPA2 Corneliu Babiuc 13-05-98
|
||
//definition of constant for keyboard action
|
||
//************************ WARNING!!! *********************************
|
||
//these constant must be also defined in devvp3d.cpp file as they are!!!
|
||
//I didt put them in a .hpp file in order to not modify the public files or a project
|
||
|
||
// object drawing flags
|
||
#define KA_CancelAllDrawingFlags 10
|
||
#define KA_IgnoreDrawingFlags 11
|
||
#define KA_NormalObject 12
|
||
#define KA_GridedObject 13
|
||
#define KA_WiredObject 14
|
||
// object parameters
|
||
#define KA_ShowObjectAxis 20
|
||
#define KA_BVObject 22
|
||
// centers
|
||
#define KA_ShowMainCenters 25
|
||
#define KA_ShowAllCenters 26
|
||
#define KA_ShowNoCenter 27
|
||
// world drawing flags
|
||
#define KA_NormalWorld 30
|
||
#define KA_GridedWorld 31
|
||
#define KA_WiredWorld 32
|
||
// world display mode
|
||
#define KA_WorldSectors 40
|
||
#define KA_VisibleSectors 41
|
||
#define KA_CurrentSector 42
|
||
#define KA_CollisionMap 43
|
||
// bounding volumes
|
||
#define KA_SectorsBV 50
|
||
#define KA_ActorsBV 51
|
||
#define KA_ObjectsBV 52
|
||
#define KA_NoBV 53
|
||
// colors
|
||
#define KA_SelectBackgroundColor 55
|
||
// selection
|
||
#define KA_CancelSelection 60
|
||
#define KA_FullSelection 61
|
||
#define KA_DeltaSelection 62
|
||
#define KA_FixedDepthPyramid 63
|
||
#define KA_RealTimePyramid 64
|
||
// status bar
|
||
#define KA_DisplayInstanceInfo 70
|
||
#define KA_DisplayInstanceToCam 71
|
||
#define KA_DisplayCameraInfo 72
|
||
#define KA_DisplayDistance 73
|
||
// options
|
||
#define KA_ScaleEditorObjects 80
|
||
#define KA_ShowNoAxis 81
|
||
#define KA_ShowAxisLeft 82
|
||
#define KA_ShowAxisRight 83
|
||
#define KA_Borders 100
|
||
#define KA_ComputeCenters 110
|
||
#define KA_ForceMousePos 120
|
||
|
||
|
||
char p_cVersionName[80];
|
||
|
||
//END CPA2 Corneliu Babiuc 14-05-98
|
||
/////////////////////////////////////////////////////////////////////////////
|
||
// CPA_ProjectApp
|
||
|
||
BEGIN_MESSAGE_MAP(CPA_ProjectApp, CWinApp)
|
||
//{{AFX_MSG_MAP(CPA_ProjectApp)
|
||
ON_THREAD_MESSAGE(WM_USER,OnUserMsg)
|
||
// NOTE - the ClassWizard will add and remove mapping macros here.
|
||
// DO NOT EDIT what you see in these blocks of generated code!
|
||
//}}AFX_MSG
|
||
END_MESSAGE_MAP()
|
||
|
||
static tdstKeyboardActionDef gs_a_stMul3DKeys[] =
|
||
{
|
||
//CPA2 Corneliu Babiuc 13-05-98
|
||
// colors
|
||
{"Select Background Color", KA_SelectBackgroundColor},
|
||
{"Proportionnal sizing", KA_PropSizing},
|
||
// object drawing flags
|
||
{"Cancel all drawing flags", KA_CancelAllDrawingFlags},
|
||
{"Ignore Drawing Flags", KA_IgnoreDrawingFlags},
|
||
{"Normal Object", KA_NormalObject},
|
||
{"Grided Object", KA_GridedObject},
|
||
{"Wired Object", KA_WiredObject},
|
||
// object parameters
|
||
{"Show Object BV", KA_BVObject},
|
||
{"Show Object Axis", KA_ShowObjectAxis},
|
||
// world drawing flags
|
||
{"Normal World", KA_NormalWorld},
|
||
{"Grided World", KA_GridedWorld},
|
||
{"Wired World", KA_WiredWorld},
|
||
// world display mode
|
||
{"World Sectors", KA_WorldSectors},
|
||
{"Visible Sectors", KA_VisibleSectors},
|
||
{"Current Sector", KA_CurrentSector},
|
||
{"Collision Map", KA_CollisionMap},
|
||
// bounding volumes
|
||
{"Sectors BV", KA_SectorsBV},
|
||
{"Actors BV", KA_ActorsBV},
|
||
{"Objects BV", KA_ObjectsBV},
|
||
{"No BV", KA_NoBV},
|
||
// centers
|
||
{"Show Main Centers", KA_ShowMainCenters},
|
||
{"Show All Centers", KA_ShowAllCenters},
|
||
{"Show No Center", KA_ShowNoCenter},
|
||
// axis
|
||
{ "Show Axis Left", KA_ShowAxisLeft},
|
||
{ "Show Axis Right", KA_ShowAxisRight},
|
||
{ "Show No Axis", KA_ShowNoAxis},
|
||
// status bar
|
||
{ "Display Instance Info", KA_DisplayInstanceInfo},
|
||
{ "Display Instance To Camera", KA_DisplayInstanceToCam},
|
||
{ "Display Camera Info", KA_DisplayCameraInfo},
|
||
{ "Display Distance", KA_DisplayDistance},
|
||
// options
|
||
{ "Compute Centers", KA_ComputeCenters},
|
||
{ "Show Borders", KA_Borders},
|
||
{ "Scale Editor Objects", KA_ScaleEditorObjects},
|
||
// selection
|
||
{"Unselect all", KA_CancelSelection},
|
||
{"Full selection", KA_FullSelection},
|
||
{"Delta selection", KA_DeltaSelection},
|
||
// pyramidal selection
|
||
{ "Fixed depth pyramid", KA_FixedDepthPyramid},
|
||
{ "Real Time pyramid", KA_RealTimePyramid},
|
||
// options
|
||
{ "Force Mouse Cursor", KA_ForceMousePos},
|
||
//END CPA2 Corneliu Babiuc 19-05-98
|
||
{NULL, 0},
|
||
};
|
||
|
||
//###########################################################################
|
||
// Constructor and destructor of application
|
||
//###########################################################################
|
||
|
||
//===========================================================================
|
||
// Description: CONSTRUCTOR
|
||
// => Change windows parameters
|
||
// Creation date: 27 Jun 96
|
||
// Author: CB
|
||
//---------------------------------------------------------------------------
|
||
// Revision date:
|
||
// Author:
|
||
//===========================================================================
|
||
CPA_ProjectApp::CPA_ProjectApp()
|
||
{
|
||
//---------------------------------------------------------------------------
|
||
// memory and error messages initialisations
|
||
// For memory usage and errors
|
||
Erm_M_InitErrMsg(Erm);
|
||
// Erm_fn_vSetThreadId4Request(m_nThreadID);
|
||
Erm_M_InitErrMsg(Mmg);
|
||
Erm_M_InitErrMsg(Int);
|
||
Mmg_fn_vFirstInitMmgModule(10);
|
||
Mmg_M_InitMmg(Int);
|
||
m_bWasInFullScreenBeforeLooseFocus = FALSE;
|
||
m_bLeavingApplication = FALSE;
|
||
m_bBadResolution = FALSE;
|
||
m_bFlagTaken = FALSE;
|
||
// Mmg_M_SetModeAlloc(Int, E_ucDynamic);
|
||
//---------------------------------------------------------------------------
|
||
|
||
m_bProjectIsClosing = 0;
|
||
|
||
// m_bViewerOpened = FALSE;
|
||
m_bFullScreenInEditor = FALSE;
|
||
m_bEngineOneStep = 0;
|
||
m_iNumRef = 0;
|
||
m_bCursorInFirstScreen = TRUE;
|
||
|
||
mp_oDevKeyboard = new CPA_KeyActionConfiguration("CPAMul3D.ini", gs_a_stMul3DKeys);
|
||
mp_oDevKeyboard->mfn_vSetObjectName("3D View");
|
||
m_csApplicationName = "CPAProj";
|
||
m_csApplicationVersion = "v0.0.0";
|
||
m_p_oDlgAbout = NULL;
|
||
// POS_fn_vSetIdentityMatrix(&m_stWorldBaseMatrix);
|
||
MTH3D_M_vNullVector(&(m_stWorldBaseMatrix.stTranslationVector));
|
||
MTH3D_M_vSetIdentityMatrix(&(m_stWorldBaseMatrix.stRotationMatrix));
|
||
MTH3D_M_vSetIdentityMatrix(&(m_stWorldBaseMatrix.stTransformMatrix));
|
||
m_stWorldBaseMatrix.ulType = POS_C_ulIdentityMatrixFlag;
|
||
m_bAutoReinitTheMap = TRUE;
|
||
|
||
|
||
m_bEngineIsStopped = FALSE;
|
||
m_bEditorsAreActive = FALSE;
|
||
m_bAppliAskedToStopEngine = FALSE;
|
||
m_bAppliPulsedOneStep = FALSE;
|
||
m_bAppliAskedToActivateEditors = FALSE;
|
||
m_bEngineAskedToForceEditors = FALSE;
|
||
m_bAppliAskedToEndGame = FALSE;
|
||
m_bEngineIsOver = FALSE;
|
||
m_bFinishEngine = FALSE;
|
||
}
|
||
|
||
//===========================================================================
|
||
// Description: DESTRUCTOR
|
||
// => Kill all editors
|
||
// => Restore windows parameters
|
||
// Creation date: 27 Jun 96
|
||
// Author: CB
|
||
//---------------------------------------------------------------------------
|
||
// Revision date:
|
||
// Author:
|
||
//===========================================================================
|
||
CPA_ProjectApp::~CPA_ProjectApp()
|
||
{
|
||
delete mp_oDevKeyboard;
|
||
mp_oDevKeyboard = NULL;
|
||
//it's not my job to delete list elements,
|
||
m_lstKeyboard.RemoveAll();
|
||
|
||
}
|
||
|
||
//###########################################################################
|
||
// CPA_ProjectApp initializations and close
|
||
//###########################################################################
|
||
|
||
|
||
//===========================================================================
|
||
// Description: Set and reset windows parameters.
|
||
// Creation date: 27 Jun 96
|
||
// Author: CB
|
||
//---------------------------------------------------------------------------
|
||
// Return void
|
||
//---------------------------------------------------------------------------
|
||
// Revision date:
|
||
// Author:
|
||
//===========================================================================
|
||
void CPA_ProjectApp::fn_vSetWindowsParameters(void)
|
||
{
|
||
// => No screen saver
|
||
/* SystemParametersInfo(SPI_GETSCREENSAVEACTIVE, 0, &m_bOldScreenSaveActive, 0);
|
||
SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, FALSE, NULL, 0);*/
|
||
}
|
||
void CPA_ProjectApp::fn_vResetWindowsParameters(void)
|
||
{
|
||
// => Screen saver
|
||
//SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, m_bOldScreenSaveActive, NULL, 0);
|
||
}
|
||
|
||
//===========================================================================
|
||
// Description: Test windows config. to be sure that it's correct for
|
||
// game.
|
||
// Fatal error if not correct.
|
||
// Creation date: 27 Jun 96
|
||
// Author: CB
|
||
//---------------------------------------------------------------------------
|
||
// Return void
|
||
//---------------------------------------------------------------------------
|
||
// Revision date:
|
||
// Author:
|
||
//===========================================================================
|
||
void CPA_ProjectApp::fn_vTestWindowsConfig(void)
|
||
{
|
||
HDC hdc;
|
||
int iAppBPP;
|
||
|
||
hdc = ::GetDC(NULL);
|
||
iAppBPP = ::GetDeviceCaps(hdc, PLANES);
|
||
iAppBPP *= ::GetDeviceCaps(hdc, BITSPIXEL);
|
||
ReleaseDC(NULL, hdc);
|
||
|
||
// if(iAppBPP != 16)
|
||
// {
|
||
// m_bBadResolution = TRUE;
|
||
// MessageBox(NULL, "Bad display resolution. You won't be able to run game in windowed.", "Warning", MB_OK|MB_ICONWARNING);
|
||
// }
|
||
}
|
||
|
||
//===========================================================================
|
||
// Description: Init camera to see the world correctly
|
||
// Creation date: 05 sept 96
|
||
// Author: FBF
|
||
//---------------------------------------------------------------------------
|
||
// Return niet
|
||
//---------------------------------------------------------------------------
|
||
// Revision date: ?
|
||
// Author:
|
||
//===========================================================================
|
||
void CPA_ProjectApp::fn_vSetWorldBaseMatrix()
|
||
{
|
||
MTH3D_tdstVector stI , stJ , stK;
|
||
|
||
POS_fn_vSetIdentityMatrix(&m_stWorldBaseMatrix);
|
||
MTH3D_M_vNullVector(&stI);
|
||
MTH3D_M_vNullVector(&stJ);
|
||
MTH3D_M_vNullVector(&stK);
|
||
MTH3D_M_vSetXofVector(&stI,GLI_M_LongToValue(-1));
|
||
MTH3D_M_vSetZofVector(&stJ,GLI_M_LongToValue(1));
|
||
MTH3D_M_vSetYofVector(&stK,GLI_M_LongToValue(1));
|
||
POS_fn_vSetRotationMatrix(&m_stWorldBaseMatrix, &stI, &stJ, &stK);
|
||
}
|
||
|
||
//===========================================================================
|
||
// Description: First init of application.
|
||
// Creation date: 21 Jun 96
|
||
// Author: CB
|
||
//---------------------------------------------------------------------------
|
||
// Return BOOL
|
||
//---------------------------------------------------------------------------
|
||
// Revision date:
|
||
// Author:
|
||
//===========================================================================
|
||
BOOL CPA_ProjectApp::InitApplication(void)
|
||
{
|
||
|
||
// Change protection of EXE if there's auto generate code, and virtual lock
|
||
// code.
|
||
// fn_vChangeExeProtection((unsigned long) m_hInstance);
|
||
|
||
// Test windows environment
|
||
fn_vTestWindowsConfig();
|
||
|
||
// Change windows parameters
|
||
fn_vSetWindowsParameters();
|
||
|
||
// Create all semaphores
|
||
m_hDrawSem = CreateSemaphore(NULL, 1, 1, (LPCTSTR) "DRAWSEM");
|
||
|
||
// To avoid list of dump memory at the end of execution
|
||
AfxEnableMemoryTracking(FALSE);
|
||
|
||
|
||
|
||
// Set base matrix for world
|
||
fn_vSetWorldBaseMatrix();
|
||
// register editor superobject script callback
|
||
CPA_SuperObject::fn_vInitLoadEditor();
|
||
|
||
|
||
//FBFFBF temporaire V3.1, <20> virer ds la prochaine version
|
||
HIE_fn_vInitGlobalMatrixFrameCounter(3);
|
||
|
||
return CWinApp::InitApplication();
|
||
}
|
||
|
||
//===========================================================================
|
||
// Description: Last exit of application.
|
||
// Creation date: 27 Jun 96
|
||
// Author: CB
|
||
//---------------------------------------------------------------------------
|
||
// Return BOOL
|
||
//---------------------------------------------------------------------------
|
||
// Revision date:
|
||
// Author:
|
||
//===========================================================================
|
||
void CPA_ProjectApp::ExitApplication(void)
|
||
{
|
||
ClipCursor(NULL);
|
||
// show cursor
|
||
while (ShowCursor(TRUE) < 0);
|
||
|
||
m_bLeavingApplication = TRUE;
|
||
// delete m_p_oMainWorld;
|
||
// m_p_oMainWorld = NULL;
|
||
CPA_SuperObjectBase::DestroyParallelBoxGeometricObject();
|
||
CPA_SuperObjectBase::DestroyBoundingSphereGeometricObject();
|
||
|
||
// Free all semaphores
|
||
CloseHandle(m_hDrawSem);
|
||
|
||
// Restore windows parameters
|
||
fn_vResetWindowsParameters();
|
||
|
||
}
|
||
|
||
//===========================================================================
|
||
// Description: Call for each new instance of application.
|
||
// Creation date: 10 Jun 96
|
||
// Author: CB
|
||
//---------------------------------------------------------------------------
|
||
// Return void
|
||
//---------------------------------------------------------------------------
|
||
// Revision date:
|
||
// Author:
|
||
//===========================================================================
|
||
BOOL CPA_ProjectApp::InitInstance()
|
||
{
|
||
char szPath[MAX_PATH];
|
||
|
||
GetCurrentDirectory(MAX_PATH,szPath);
|
||
|
||
m_csEditorDataPath = (CString)szPath + "\\EDT_Data\\";
|
||
m_csEngineDataPath = (CString)szPath + "\\GameData\\";
|
||
|
||
CSize Screen(GetSystemMetrics(SM_CXFULLSCREEN), GetSystemMetrics(SM_CYFULLSCREEN));
|
||
char date[255];
|
||
FILE *p_File;
|
||
|
||
p_File = fopen("RII_VersionNum.ini","rt");
|
||
if (p_File)
|
||
{
|
||
|
||
fgets(p_cVersionName,79,p_File);
|
||
if (!fgets(p_cVersionName,79,p_File))
|
||
{
|
||
strcpy(p_cVersionName,"no editor version name available... check file RII_VersionNum.ini ");
|
||
}
|
||
else
|
||
{
|
||
p_cVersionName[strlen(p_cVersionName)-1] = ' ';
|
||
}
|
||
fclose(p_File);
|
||
}
|
||
else
|
||
{
|
||
strcpy(p_cVersionName,"no version name available... check file RII_VersionNum.ini ");
|
||
}
|
||
|
||
|
||
sprintf(date, "%s [%s - %s]",p_cVersionName, __DATE__, __TIME__);
|
||
g_oBaseFrame.Create(NULL, date, WS_MINIMIZEBOX|WS_MAXIMIZEBOX|WS_SYSMENU|WS_CLIPCHILDREN|WS_THICKFRAME, CRect(0, 0, Screen.cx, Screen.cy));
|
||
g_oBaseFrame.ShowWindow(SW_SHOWMAXIMIZED);
|
||
|
||
// Register document templates
|
||
CSingleDocTemplate* pDocTemplate;
|
||
pDocTemplate = new CSingleDocTemplate(
|
||
CPA_IDR_MAINFRAME,
|
||
RUNTIME_CLASS(CPA_ProjectDoc),
|
||
RUNTIME_CLASS(CPA_MainFrame),
|
||
RUNTIME_CLASS(DEV_MultiDevice3D));
|
||
AddDocTemplate(pDocTemplate);
|
||
|
||
//
|
||
// Add all DLLs to list.
|
||
//
|
||
fn_vLoadAllDLLs();
|
||
|
||
// New file
|
||
OnFileNew();
|
||
if (m_pMainWnd == NULL)
|
||
return FALSE;
|
||
//Erm_fn_vSetThreadId4Request(m_nThreadID);
|
||
m_nCmdShow = SW_SHOWNORMAL;
|
||
|
||
// Clear main device
|
||
GLD_bClearDevice(M_GetMainDevice()->GetDevice(0)->m_hDisplayDevice);
|
||
GLD_bFlipDevice(M_GetMainDevice()->GetDevice(0)->m_hDisplayDevice);
|
||
|
||
// Special frame
|
||
g_oFrameGest.mfn_vAddOneFrame(M_GetMainWnd());
|
||
g_oFrameGest.mp_oFirstWindow = M_GetMainWnd();
|
||
M_GetMainWnd()->m_iCol = 2;
|
||
M_GetMainWnd()->m_iRow = 2;
|
||
M_GetMainDevice()->SetFocusDevice(0);
|
||
M_GetMainWnd()->SetParent(&g_oBaseFrame);
|
||
// M_GetMainWnd()->ShowWindow(FALSE);
|
||
|
||
//---------------------------------------------------------------
|
||
//------------INIT-----------------------------------------------
|
||
//---------------------------------------------------------------
|
||
CPA_Interface *p_oInterface;
|
||
CSize sizeScreen(GetSystemMetrics(SM_CXFULLSCREEN), GetSystemMetrics(SM_CYFULLSCREEN));
|
||
|
||
// create multidevice main contact
|
||
M_GetMainDevice()->SetContact(new CPA_Contact());
|
||
// create new event editor
|
||
p_oInterface = new CPA_Interface();
|
||
p_oInterface->StaticInit();
|
||
// create main world with this event editor
|
||
m_p_oMainWorld = new CPA_MainWorld(0,M_GetMainDevice(), p_oInterface);
|
||
|
||
// activate frame
|
||
((FRMBase*)M_GetMainWnd())->m_p_oMainWorld = m_p_oMainWorld;
|
||
M_GetMainWnd()->m_iInitWidth = 0;
|
||
M_GetMainWnd()->m_iInitHeight = 0;
|
||
g_oFrameGest.mfn_vActivateWindow(M_GetMainWnd());
|
||
|
||
//call justafterregistered on every DLL
|
||
M_GetListOfAllDLL()->CallJustAfterRegistered();
|
||
|
||
//call construct on every DLL
|
||
M_GetListOfAllDLL()->CallConstruct();
|
||
// final init for interface
|
||
p_oInterface->Init();
|
||
|
||
// M_GetMainWnd()->fn_vShowGeneralInterface(TRUE);
|
||
TUT_M_vGetTutDll();
|
||
TUT_M_vRegisterControl( M_GetMainActiveViewport() -> m_hWnd, "CPA_Main3DView", TUT_e_3DView );
|
||
CPA_SuperObjectBase::CreateParallelBoxGeometricObject();
|
||
CPA_SuperObjectBase::CreateBoundingSphereGeometricObject();
|
||
|
||
//
|
||
// Create a new process for engine
|
||
//
|
||
fn_vCreateEngineThread();
|
||
g_oBaseFrame.SetFocus();
|
||
if (GLI_lWhatIsGLI() != GLI_C_VersionGlide)
|
||
m_p_oEngineThread->ResumeThread();
|
||
|
||
#ifdef NDEBUG
|
||
while (ShowCursor(FALSE) >= 0);
|
||
#endif
|
||
|
||
|
||
return TRUE;
|
||
}
|
||
|
||
|
||
|
||
|
||
//###########################################################################
|
||
// MAIN LOOP
|
||
//###########################################################################
|
||
|
||
|
||
BOOL CPA_ProjectApp::PreTranslateMessageEditor(MSG *p_stMsg)
|
||
{
|
||
BOOL bRes = FALSE;
|
||
|
||
switch(p_stMsg->message)
|
||
{
|
||
// Sys Keyup
|
||
case WM_SYSKEYUP:
|
||
switch(p_stMsg->wParam)
|
||
{
|
||
case VK_RETURN: // ALT + ENTER
|
||
M_GetMainDevice2()->GetDevice(0)->SwapFullScreen();
|
||
m_bFullScreenInEditor = M_GetMainDevice2()->GetDevice(0)->IsFullScreen();
|
||
bRes = TRUE;
|
||
break;
|
||
}
|
||
break;
|
||
//CPA2 Corneliu Babiuc 19-05-98
|
||
case WM_SYSKEYDOWN:
|
||
//if ALT key is not pressed skip : the 29th bit of lParam tells this
|
||
if (p_stMsg->lParam & 20000000)
|
||
{
|
||
//check if the combination is an user defined shortkey
|
||
//and let processing to continue if is not
|
||
POSITION pos = M_GetMainApp()->m_lstKeyboard.GetHeadPosition();
|
||
while (pos)
|
||
{
|
||
CPA_KeyActionConfiguration * p_oKAConfig = M_GetMainApp()->m_lstKeyboard.GetNext( pos );
|
||
bRes = bRes || p_oKAConfig->mfn_bKeyIsUsed((int)p_stMsg->wParam, C_KeybALT);
|
||
}
|
||
//message should still be dispatched
|
||
if ( bRes ) ::DispatchMessage(p_stMsg);
|
||
}
|
||
//END CPA2 Corneliu Babiuc 19-05-98
|
||
}
|
||
return bRes;
|
||
}
|
||
|
||
|
||
//===========================================================================
|
||
// Description: A filter for all windows messages when motor is running.
|
||
// Creation date: 06 Jun 96
|
||
// Author: CB
|
||
//---------------------------------------------------------------------------
|
||
// p_stMsg Address of message to test
|
||
// Return TRUE to not dispatch message, FALSE else.
|
||
//---------------------------------------------------------------------------
|
||
// Revision date:
|
||
// Author:
|
||
//===========================================================================
|
||
BOOL CPA_ProjectApp::PreTranslateMessageEngine(MSG *p_stMsg)
|
||
{
|
||
BOOL bRes = FALSE;
|
||
|
||
switch(p_stMsg->message)
|
||
{
|
||
/*se WM_ACTIVATE:
|
||
{
|
||
short wActive = LOWORD(p_stMsg->wParam); // activation flag
|
||
BOOL bMinimized = (BOOL) HIWORD(p_stMsg->wParam); // minimized flag (nonzero is minimized)
|
||
HWND hwndPrevious = (HWND) p_stMsg->lParam; // window handle
|
||
if ( wActive == WA_INACTIVE ) //app is deactivated
|
||
{
|
||
}
|
||
else //app is activated
|
||
{
|
||
}
|
||
return TRUE;
|
||
}
|
||
break;*/
|
||
|
||
/*se WM_ACTIVATEAPP: //when another application is activated, both the current and newly activated apps receive this message
|
||
//if(((!wParam)&&((DWORD)lParam!=hEngineThreadId)&&((DWORD)lParam!=GetCurrentThreadId())))
|
||
// SendMessage(Glob_hwnd, WM_CLOSE, 0, 0);
|
||
break;*/
|
||
|
||
// Sys Keyup
|
||
case WM_SYSKEYUP:
|
||
switch(p_stMsg->wParam)
|
||
{
|
||
case VK_RETURN: // ALT + ENTER
|
||
if
|
||
(
|
||
(m_bBadResolution)
|
||
&& (M_GetMainDevice()->GetDevice(0)->IsFullScreen())
|
||
)
|
||
{
|
||
M_GetMainApp()->fn_vAppliAskToStopEngine();
|
||
M_GetMainDevice()->GetDevice(0)->SwapFullScreen();
|
||
m_bWasInFullScreenBeforeLooseFocus = TRUE;
|
||
// M_GetMainWnd()->SendMessage(WM_SYSCOMMAND, SC_MINIMIZE);
|
||
}
|
||
else
|
||
{
|
||
// M_GetMainApp()->fn_vSuspendEngine();
|
||
M_GetMainDevice()->GetDevice(0)->SwapFullScreen();
|
||
// M_GetMainApp()->fn_vResumeEngine();
|
||
}
|
||
bRes = TRUE;
|
||
break;
|
||
|
||
case VK_TAB: // ALT + TAB
|
||
// if we are in fullscreen, then swap to windowed
|
||
// and tell we were in full screen
|
||
// M_GetMainApp()->fn_vAppliAskToStopEngine();
|
||
// if (M_GetMainDevice()->GetDevice(0)->IsFullScreen())
|
||
// {
|
||
// M_GetMainDevice()->GetDevice(0)->SwapFullScreen();
|
||
// m_bWasInFullScreenBeforeLooseFocus = TRUE;
|
||
// M_GetMainWnd()->SendMessage(WM_SYSCOMMAND, SC_MINIMIZE);
|
||
// }
|
||
bRes = TRUE;
|
||
break;
|
||
|
||
case VK_F10: // F10 = open menu
|
||
// if we are in fullscreen, do nothing
|
||
if (M_GetMainDevice()->GetDevice(0)->IsFullScreen())
|
||
bRes = TRUE;
|
||
break;
|
||
}
|
||
break;
|
||
|
||
// Keyboard messages
|
||
case WM_KEYDOWN:
|
||
case WM_KEYUP:
|
||
case WM_CHAR:
|
||
case WM_DEADCHAR:
|
||
// if key is caps lock or num lock or scroll lock, let pass
|
||
// else, skip
|
||
if (p_stMsg->wParam == VK_NUMLOCK ||
|
||
p_stMsg->wParam == VK_SCROLL ||
|
||
p_stMsg->wParam == VK_CAPITAL ||
|
||
p_stMsg->wParam == VK_SHIFT ||
|
||
p_stMsg->wParam == VK_LSHIFT ||
|
||
p_stMsg->wParam == VK_RSHIFT)
|
||
bRes = FALSE;
|
||
else
|
||
bRes = TRUE;
|
||
break;
|
||
|
||
// No mouse messages
|
||
case WM_LBUTTONDOWN:
|
||
case WM_RBUTTONDOWN:
|
||
case WM_LBUTTONUP:
|
||
case WM_RBUTTONUP:
|
||
case WM_MOUSEMOVE:
|
||
case WM_LBUTTONDBLCLK:
|
||
case WM_RBUTTONDBLCLK:
|
||
// No messages if we are in full screen
|
||
if(((DEV_MultiDevice3D *)M_GetMainWnd()->m_oSplitter.GetPane(0, 0))->GetFocusDevice()->IsFullScreen())
|
||
return TRUE;
|
||
|
||
// Can resize splitters, so we must translate messages to them
|
||
POINT pt;
|
||
CWnd *pWnd;
|
||
|
||
if(p_stMsg->hwnd == M_GetMainWnd()->m_oSplitter.GetSafeHwnd())
|
||
return FALSE;
|
||
if(p_stMsg->hwnd == M_GetMainWnd()->GetSafeHwnd())
|
||
return FALSE;
|
||
GetCursorPos(&pt);
|
||
pWnd = M_GetMainWnd()->WindowFromPoint(pt);
|
||
if(pWnd->IsKindOf(RUNTIME_CLASS(FRMSplitter)))
|
||
return FALSE;
|
||
|
||
return TRUE;
|
||
|
||
/* POINT pt;
|
||
CWnd *pWnd;
|
||
GetCursorPos(&pt);
|
||
pWnd = M_GetMainWnd()->WindowFromPoint(pt);
|
||
if(!(pWnd->IsKindOf(RUNTIME_CLASS(DEV_ViewPort3D))))
|
||
return FALSE;
|
||
return TRUE;*/
|
||
break;
|
||
|
||
default:
|
||
bRes = FALSE;
|
||
break;
|
||
}
|
||
return bRes;
|
||
}
|
||
|
||
//===========================================================================
|
||
// Description: Windows main loop to dispatch messages.
|
||
// Creation date: 06 Jun 96
|
||
// Author: CB
|
||
//---------------------------------------------------------------------------
|
||
// void
|
||
// Return int that is return value of application (return by Winmain)
|
||
//---------------------------------------------------------------------------
|
||
// Revision date:
|
||
// Author:
|
||
//===========================================================================
|
||
/*int CPA_ProjectApp::fn_iWindowsMainLoop(void)
|
||
{
|
||
MSG stMsg;
|
||
BOOL bRes;
|
||
|
||
while (::GetMessage(&stMsg, NULL, 0, 0))
|
||
{
|
||
bRes = CWinApp::PreTranslateMessage(&stMsg);
|
||
if (!bRes)
|
||
{
|
||
bRes = M_GetListOfAllDLL()->CallPreTranslateMessage(&stMsg);
|
||
if((!bRes) && (stMsg.message == WM_KEYDOWN))
|
||
bRes = M_GetMainApp()->fn_bTreatAppKeyboard((UINT) stMsg.wParam);
|
||
if((!bRes) && (!M_bEditorsActive()))
|
||
bRes = CPA_ProjectApp::PreTranslateMessageEngine(&stMsg);
|
||
}
|
||
if(!bRes)
|
||
{
|
||
::TranslateMessage(&stMsg);
|
||
::DispatchMessage(&stMsg);
|
||
}
|
||
}
|
||
|
||
// Application exit code
|
||
ExitApplication();
|
||
|
||
return stMsg.wParam;
|
||
}
|
||
*/
|
||
//===========================================================================
|
||
// Description: To suspend/reactive engine
|
||
// Creation date: 24 Jun 96
|
||
// Author: CB
|
||
//---------------------------------------------------------------------------
|
||
// Return void
|
||
//---------------------------------------------------------------------------
|
||
// Revision date:
|
||
// Author:
|
||
//===========================================================================
|
||
/*void CPA_ProjectApp::fn_vSuspendEngine(void)
|
||
{
|
||
BOOL bLastEnginePause;
|
||
BOOL bRes;
|
||
MSG stMsg;
|
||
|
||
if ( m_p_oEngineThread )
|
||
{
|
||
// Engine is already in pause : do nothing
|
||
if ( m_bEngineIsInPause == 0 )
|
||
{
|
||
// We force engine to pause to be sure that it has terminated all its
|
||
// VBL cycle. Then we suspend thread execution.
|
||
m_bEngineIsInPause = 0;
|
||
bLastEnginePause = m_bEnginePause;
|
||
|
||
m_bEnginePause = 1;
|
||
m_bAppSaysBye = 0;
|
||
while ( m_bEngineIsInPause == 0 )
|
||
{
|
||
if ( ::PeekMessage(&stMsg, NULL, 0, 0, PM_REMOVE) )
|
||
{
|
||
bRes = CWinApp::PreTranslateMessage(&stMsg);
|
||
if (!bRes)
|
||
{
|
||
bRes = M_GetListOfAllDLL()->CallPreTranslateMessage(&stMsg);
|
||
if((!bRes) && (stMsg.message == WM_KEYDOWN))
|
||
bRes = M_GetMainApp()->fn_bTreatAppKeyboard((UINT) stMsg.wParam);
|
||
if((!bRes) && (!M_bEditorsActive()))
|
||
bRes = CPA_ProjectApp::PreTranslateMessageEngine(&stMsg);
|
||
}
|
||
if ( !bRes )
|
||
{
|
||
::TranslateMessage(&stMsg);
|
||
::DispatchMessage(&stMsg);
|
||
}
|
||
}
|
||
Sleep(0);
|
||
}
|
||
m_p_oEngineThread->SuspendThread();
|
||
m_bEnginePause = (unsigned char) bLastEnginePause;
|
||
}
|
||
}
|
||
}
|
||
*/
|
||
/*void CPA_ProjectApp::fn_vResumeEngine(void)
|
||
{
|
||
if (m_p_oEngineThread)
|
||
{
|
||
DWORD dwResumeResult;
|
||
do
|
||
{
|
||
dwResumeResult = m_p_oEngineThread->ResumeThread();
|
||
} while ( dwResumeResult > 1 && dwResumeResult != 0xFFFFFFFF );
|
||
}
|
||
}
|
||
*/
|
||
|
||
|
||
|
||
BOOL CPA_ProjectApp::PreTranslateMessage( MSG* pMsg )
|
||
{
|
||
BOOL bRes;
|
||
|
||
//call base member
|
||
bRes = CWinApp::PreTranslateMessage(pMsg);
|
||
if (!bRes)
|
||
{
|
||
|
||
bRes = M_GetListOfAllDLL()->CallPreTranslateMessage(pMsg);
|
||
if((!bRes) && ( (pMsg->message == WM_KEYDOWN)
|
||
//CPA2 Corneliu Babiuc (Alt Key) 14-05-98
|
||
//let now Alt key to be processed by application
|
||
|| (pMsg->message == WM_SYSKEYDOWN) ) )
|
||
//END CPA2 Corneliu Babiuc (Alt Key) 14-05-98
|
||
{
|
||
bRes = M_GetMainApp()->fn_bTreatAppKeyboard((UINT) pMsg->wParam);
|
||
}
|
||
if((!bRes) && (!M_bEditorsActive()))
|
||
bRes = CPA_ProjectApp::PreTranslateMessageEngine(pMsg);
|
||
|
||
if((!bRes) && (M_bEditorsActive()))
|
||
bRes = CPA_ProjectApp::PreTranslateMessageEditor(pMsg);
|
||
}
|
||
return bRes;
|
||
}
|
||
|
||
|
||
|
||
//===========================================================================
|
||
// Description: Main loop of CPP application.
|
||
// Creation date: 06 Jun 96
|
||
// Author: CB
|
||
//---------------------------------------------------------------------------
|
||
// void
|
||
// Return int that is return value of application (return by Winmain)
|
||
//---------------------------------------------------------------------------
|
||
// Revision date:
|
||
// Author:
|
||
//===========================================================================
|
||
int CPA_ProjectApp::Run(void)
|
||
{
|
||
MSG stMsg;
|
||
BOOL bRes;
|
||
|
||
// loop while message is not WM_QUIT
|
||
while (::GetMessage(&stMsg, NULL, 0, 0))
|
||
{
|
||
bRes = PreTranslateMessage(&stMsg);
|
||
if(!bRes)
|
||
{
|
||
::TranslateMessage(&stMsg);
|
||
::DispatchMessage(&stMsg);
|
||
}
|
||
}
|
||
|
||
// Application exit code
|
||
ExitApplication();
|
||
|
||
return stMsg.wParam;
|
||
}
|
||
|
||
//###########################################################################
|
||
|
||
//===========================================================================
|
||
// Description: Call to update all editors that need.
|
||
// Creation date: 20 Jun 96
|
||
// Author: CB
|
||
//---------------------------------------------------------------------------
|
||
// Return void
|
||
//---------------------------------------------------------------------------
|
||
// Revision date:
|
||
// Author:
|
||
//===========================================================================
|
||
void CPA_ProjectApp::fn_vDataHasChanged(void)
|
||
{
|
||
M_GetListOfAllDLL()->CallRefreshDatas();
|
||
|
||
//***********************************
|
||
//*** DR (20/01/98) *****************
|
||
if( g_hWawModule != NULL )
|
||
{
|
||
void (*WawRefreshFunction)(void) = (void (__cdecl*)(void))GetProcAddress( g_hWawModule, "WAW_fn_vRefreshWatchWindow" );
|
||
if( WawRefreshFunction != NULL ) WawRefreshFunction();
|
||
else AfxMessageBox("Refresh function has not been found in DLL (WAW module)");
|
||
}
|
||
//*** End DR (20/01/98) *************
|
||
//***********************************
|
||
}
|
||
|
||
//===========================================================================
|
||
// Description: Call to update all editors that need.
|
||
// Creation date: 20 Jun 96
|
||
// Author: CB
|
||
//---------------------------------------------------------------------------
|
||
// Return void
|
||
//---------------------------------------------------------------------------
|
||
// Revision date:
|
||
// Author:
|
||
//===========================================================================
|
||
void CPA_ProjectApp::OnHelpAbout(void)
|
||
{
|
||
m_p_oDlgAbout = new CPA_DlgAbout( m_pMainWnd );
|
||
m_p_oDlgAbout -> fn_vSetMainWorld( m_p_oMainWorld );
|
||
m_p_oDlgAbout -> DoModal();
|
||
delete m_p_oDlgAbout;
|
||
}
|
||
|
||
|
||
//===========================================================================
|
||
// Description: This is the function that loads and register all DLLs.
|
||
// Creation date: 23 Sep 96
|
||
// Author: CB
|
||
//---------------------------------------------------------------------------
|
||
// Revision date:
|
||
// Author:
|
||
//===========================================================================
|
||
void CPA_ProjectApp::fn_vLoadAllDLLs(void)
|
||
{
|
||
char szCurPath[MAX_PATH];
|
||
|
||
//let's save the current path
|
||
GetCurrentDirectory(MAX_PATH, szCurPath);
|
||
|
||
// move to editor data directory
|
||
if(chdir(m_csEditorDataPath) == -1)
|
||
M_vFatalError("Unable to find 'EDT_DATA\\' directory. Can't load DLL.");
|
||
|
||
// load the DLLs
|
||
m_oListOfAllDLL.LoadAllDLL();
|
||
|
||
// we restore initial directory
|
||
chdir(szCurPath);
|
||
|
||
//check if there's at least one object DLL present...
|
||
if (m_oListOfAllDLL.GetObjectDLLCount() == 0)
|
||
M_vFatalError("no objects DLL loaded");
|
||
}
|
||
|
||
//===========================================================================
|
||
// Description: This is the function that loads and register all DLLs.
|
||
// Creation date: 23 Sep 96
|
||
// Author: Shaitan
|
||
//---------------------------------------------------------------------------
|
||
// Revision date:
|
||
// Author:
|
||
//===========================================================================
|
||
CPA_Interface * CPA_ProjectApp::GetInterface (void)
|
||
{
|
||
return m_p_oMainWorld->GetInterface();
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
//===========================================================================
|
||
// Description: Called by the appli when the appli wants to stop the engine
|
||
// result :
|
||
// The Engine has not been stopped, but it has been notified to do so. We will receive a
|
||
// user message when the engine wants to be stopped
|
||
// Creation date: 19 jun 97
|
||
// Author: FBF
|
||
//---------------------------------------------------------------------------
|
||
// Revision date:
|
||
// Author:
|
||
//===========================================================================
|
||
void CPA_ProjectApp::fn_vAppliAskToStopEngine(void)
|
||
{
|
||
m_bAppliAskedToStopEngine = TRUE;
|
||
}
|
||
|
||
|
||
//===========================================================================
|
||
// Description: Called by the appli when the appli wants to start the engine
|
||
// result :
|
||
// The Engine will restart
|
||
// Creation date: 19 jun 97
|
||
// Author: FBF
|
||
//---------------------------------------------------------------------------
|
||
// Revision date:
|
||
// Author:
|
||
//===========================================================================
|
||
void CPA_ProjectApp::fn_vAppliAskToStartEngine(void)
|
||
{
|
||
m_bAppliAskedToStopEngine = FALSE;
|
||
|
||
if (m_bEngineIsStopped)
|
||
fn_vRestartEngine();
|
||
}
|
||
|
||
|
||
|
||
|
||
//===========================================================================
|
||
// Description: Called by the appli when the appli wants to end the game
|
||
// result :
|
||
// The Engine has been notified to begin the closing process
|
||
// we will receive a user message when the engine begin this process,
|
||
// and when the engine has finished this process
|
||
|
||
// Creation date: 19 jun 97
|
||
// Author: FBF
|
||
//---------------------------------------------------------------------------
|
||
// Revision date:
|
||
// Author:
|
||
//===========================================================================
|
||
void CPA_ProjectApp::fn_vAppliAskToEndGame(void)
|
||
{
|
||
// tell that we want to close
|
||
m_bAppliAskedToEndGame = TRUE;
|
||
// if editors are active, then we must restart the engine so that it can close
|
||
// to allow the engine to restart
|
||
M_GetMainApp()->m_bEditorsAreActive = FALSE;
|
||
// to prevent the engine from going back to editors
|
||
M_GetMainApp()->m_bAppliAskedToActivateEditors = FALSE;
|
||
|
||
M_GetMainApp()->fn_vRestartEngine();
|
||
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
//===========================================================================
|
||
// Description: Called by the appli when the appli wants to step the engine one trame
|
||
// result :
|
||
// if the engine was in pause, then it restart until it reach the next pause check
|
||
//
|
||
// Creation date: 08 jul 97
|
||
// Author: FBF
|
||
//---------------------------------------------------------------------------
|
||
// Revision date:
|
||
// Author:
|
||
//===========================================================================
|
||
void CPA_ProjectApp::fn_vAppliAskOneStep(void)
|
||
{
|
||
// pulse if engine has been stopped by the appli
|
||
// and if the engine is stopped
|
||
// and if one step has not allready been asked
|
||
|
||
if ((m_bAppliAskedToStopEngine == TRUE)
|
||
&& (m_bEngineIsStopped == TRUE)
|
||
&& (m_bAppliPulsedOneStep == FALSE))
|
||
{
|
||
m_bAppliPulsedOneStep = TRUE;
|
||
fn_vRestartEngine();
|
||
}
|
||
}
|
||
|
||
|
||
//===========================================================================
|
||
// Description: Called by the appli when the appli wants to start editors
|
||
// result :
|
||
// the engine has been notified that we want to start editors. We will receive a
|
||
// user message when the engine is ready
|
||
// Creation date: 19 jun 97
|
||
// Author: FBF
|
||
//---------------------------------------------------------------------------
|
||
// Revision date:
|
||
// Author:
|
||
//===========================================================================
|
||
void CPA_ProjectApp::fn_vAppliAskToStartEditors(void)
|
||
{
|
||
m_bAppliAskedToActivateEditors = TRUE;
|
||
}
|
||
|
||
|
||
//===========================================================================
|
||
// Description: Called by the appli when the appli wants to leave editors and resume engine
|
||
// result :
|
||
// the engine will restart
|
||
// Creation date: 19 jun 97
|
||
// Author: FBF
|
||
//---------------------------------------------------------------------------
|
||
// Revision date:
|
||
// Author:
|
||
//===========================================================================
|
||
void CPA_ProjectApp::fn_vAppliAskToStopEditors(void)
|
||
{
|
||
m_bAppliAskedToActivateEditors = FALSE;
|
||
|
||
if (m_bEditorsAreActive == FALSE)
|
||
return;
|
||
|
||
m_bEngineAskedToForceEditors = FALSE;
|
||
M_GetMainWnd()->DisactivateEditors();
|
||
}
|
||
|
||
|
||
|
||
//===========================================================================
|
||
// Description: a user message has been received
|
||
// return value:
|
||
// Creation date: 19 jun 97
|
||
// Author: FBF
|
||
//---------------------------------------------------------------------------
|
||
// Revision date:
|
||
// Author:
|
||
//===========================================================================
|
||
afx_msg void CPA_ProjectApp::OnUserMsg(UINT wParam,LONG lParam)
|
||
{
|
||
// structure for Message box request
|
||
tdstMsgBox * p_stMsgBox;
|
||
|
||
switch(wParam)
|
||
{
|
||
case C_uiWinCm_RequestMessageBox:
|
||
|
||
p_stMsgBox = (tdstMsgBox*) lParam;
|
||
|
||
// SendMessage(m_pMainWnd->m_hWnd, WM_SYSCOMMAND, SC_MINIMIZE, 0);
|
||
p_stMsgBox->iResult = MessageBox(NULL,p_stMsgBox->szText,p_stMsgBox->szTitle,p_stMsgBox->uiStyle);
|
||
// SendMessage(m_pMainWnd->m_hWnd, WM_SYSCOMMAND, SC_RESTORE, 0);
|
||
// SetEvent(p_stMsgBox->hEvent);
|
||
break;
|
||
case USERM_STOP_ENGINE:
|
||
// if the flag is not right, do nothing
|
||
if (m_bAppliAskedToStopEngine == FALSE)
|
||
break;
|
||
fn_vStopEngine();
|
||
break;
|
||
|
||
case USERM_ENGINE_IS_CLOSING:
|
||
m_bLeavingApplication = TRUE;
|
||
break;
|
||
|
||
case USERM_ENGINE_IS_DONE:
|
||
m_bLeavingApplication = TRUE;
|
||
m_bEngineIsOver = TRUE;
|
||
m_bFinishEngine = TRUE;
|
||
M_GetMainWnd()->PostMessage(WM_CLOSE,0,0);
|
||
break;
|
||
|
||
case USERM_SWAP_FULLSCREEN:
|
||
if (GLI_lWhatIsGLI() != GLI_C_VersionGlide)
|
||
{
|
||
/* BeforeWindows();
|
||
if (M_GetMainDevice()->GetDevice(0)->IsFullScreen())
|
||
{
|
||
M_GetMainDevice()->GetDevice(0)->SwapFullScreen();
|
||
M_GetMainWnd()->SendMessage(WM_SYSCOMMAND, SC_MINIMIZE);
|
||
}
|
||
else
|
||
{
|
||
if ((M_GetMainWnd()->IsIconic()))
|
||
{
|
||
M_GetMainWnd()->SendMessage(WM_SYSCOMMAND, SC_RESTORE);
|
||
}
|
||
else
|
||
{
|
||
M_GetMainDevice()->GetDevice(0)->SwapFullScreen();
|
||
}
|
||
}
|
||
AfterWindows();
|
||
break;*/
|
||
}
|
||
else
|
||
{
|
||
M_GetMainDevice()->GetDevice(0)->SwapFullScreen();
|
||
}
|
||
|
||
|
||
|
||
case USERM_START_EDITORS:
|
||
// if the flag is not right, do nothing
|
||
if (m_bAppliAskedToActivateEditors == FALSE)
|
||
break;
|
||
fn_vStartEditors();
|
||
break;
|
||
|
||
case USERM_FORCE_START_EDITORS:
|
||
// if the flag is not right, do nothing
|
||
if (m_bEngineAskedToForceEditors == FALSE)
|
||
break;
|
||
fn_vStopEngine();
|
||
fn_vStartEditors();
|
||
break;
|
||
|
||
}
|
||
}
|
||
|
||
|
||
|
||
//===========================================================================
|
||
// Description: Stops the engine
|
||
// return value:
|
||
// Creation date: 19 jun 97
|
||
// Author: FBF
|
||
//---------------------------------------------------------------------------
|
||
// Revision date:
|
||
// Author:
|
||
//===========================================================================
|
||
void CPA_ProjectApp::fn_vStopEngine()
|
||
{
|
||
// if the engine is allready stopped, do nothing
|
||
if (m_bEngineIsStopped)
|
||
return;
|
||
// stop the engine
|
||
m_p_oEngineThread->SuspendThread();
|
||
m_bEngineIsStopped = TRUE;
|
||
}
|
||
|
||
|
||
|
||
|
||
//===========================================================================
|
||
// Description: resume the engine
|
||
// return value:
|
||
// Creation date: 19 jun 97
|
||
// Author: FBF
|
||
//---------------------------------------------------------------------------
|
||
// Revision date:
|
||
// Author:
|
||
//===========================================================================
|
||
void CPA_ProjectApp::fn_vRestartEngine()
|
||
{
|
||
// if engine runs, do nothing
|
||
if (!m_bEngineIsStopped)
|
||
return;
|
||
|
||
ASSERT(m_bEditorsAreActive == FALSE);
|
||
if (m_p_oEngineThread)
|
||
{
|
||
m_bEngineIsStopped = FALSE;
|
||
m_p_oEngineThread->ResumeThread();
|
||
}
|
||
}
|
||
|
||
|
||
//===========================================================================
|
||
// Description: Starts the editors
|
||
// return value:
|
||
// Creation date: 19 jun 97
|
||
// Author: FBF
|
||
//---------------------------------------------------------------------------
|
||
// Revision date:
|
||
// Author:
|
||
//===========================================================================
|
||
void CPA_ProjectApp::fn_vStartEditors()
|
||
{
|
||
// if editors already active, do nothing
|
||
if (m_bEditorsAreActive == TRUE)
|
||
return;
|
||
|
||
fn_vStopEngine();
|
||
M_GetMainWnd()->ActivateEditors();
|
||
}
|
||
|
||
|
||
#endif ACTIVE_EDITOR // }
|