reman3/Rayman_X/cpa/tempgrp/ITF/cpaframe.cpp

843 lines
27 KiB
C++

//=========================================================================
// CPAFrame.cpp : implementation of the CPA_MainFrame class
// 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"
#include <pbt.h>
#include "direct.h"
#include "Itf/CPARes.h"
#include "errint.h"
#include "mmgint.h"
#include "Itf/DEVViewp.hpp"
#include "Itf/DEVMul3D.hpp"
#include "Itf/CPAFrame.hpp"
#include "Itf/CPAProj.hpp"
#include "Itf/CPAConst.hpp"
#include "Itf/A3dkeyal.hpp"
#include "Itf/cpamworl.hpp"
#include "Itf/camdllb.hpp"
#include "Itf/CPAInter.hpp"
#include "incgam.h"
/////////////////////////////////////////////////////////////////////////////
// CPA_MainFrame
#define M_BaseClass FRMBaseMenu
// #define M_GetDevice() ((DEV_MultiDevice*)GetActiveView())
// #define M_GetEditManager() (M_GetDevice()->GetEditManager())
IMPLEMENT_DYNCREATE(CPA_MainFrame, M_BaseClass)
BEGIN_MESSAGE_MAP(CPA_MainFrame, M_BaseClass)
//{{AFX_MSG_MAP(CPA_MainFrame)
ON_MESSAGE(WM_POWERBROADCAST, m_lOnPowerManagement)
ON_WM_CREATE()
ON_WM_CLOSE()
// ON_WM_ACTIVATEAPP()
ON_WM_MOUSEACTIVATE()
ON_WM_SYSCOMMAND()
ON_WM_SIZE()
ON_WM_GETMINMAXINFO()
ON_WM_NCLBUTTONDOWN()
ON_WM_WINDOWPOSCHANGED()
ON_COMMAND(CPA_ID_APP_EXIT, OnAppExit)
ON_COMMAND(CPA_IDCB_SWAPTOEDITORS, OnSwapToEditors)
ON_COMMAND(CPA_IDCB_FULLSCREEN, OnFullScreen)
ON_WM_NCHITTEST()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CPA_MainFrame construction/destruction
CPA_MainFrame::CPA_MainFrame()
{
mbWantSplit = TRUE;
mbWantNew = TRUE;
mbWantTile = TRUE;
mbWantClose = TRUE;
}
CPA_MainFrame::~CPA_MainFrame()
{
}
//###########################################################################
// POWER MANAGEMENT AND SCREEN SAVER
//###########################################################################
// handled WM_POWERBROADCAST
LRESULT CPA_MainFrame::m_lOnPowerManagement(UINT wParam, LONG lParam)
{
switch ( lParam )
{
case PBT_APMQUERYSUSPEND: //when system asks apps if they accept to enter low-power mode
case PBT_APMQUERYSTANDBY:
return TRUE; //return BROADCAST_QUERY_DENY for refusal to enter low-power mode
case PBT_APMSTANDBY: //received when all apps granted low-power mode, right before low-power mode is activated
case PBT_APMSUSPEND: //these 2 may me received before the two others if some app forces the mode
if ( !M_GetMainApp()->m_bEngineIsStopped )
{
M_GetMainApp()->fn_vStopEngine();
// if we are in fullscreen, then swap to windowed
// and tell we were in full screen
if (M_GetMainDevice()->GetDevice(0)->IsFullScreen())
{
M_GetMainDevice()->GetDevice(0)->SwapFullScreen();
M_GetMainApp()->m_bWasInFullScreenBeforeLooseFocus = TRUE;
SendMessage(WM_SYSCOMMAND, SC_MINIMIZE);
}
}
return TRUE; //accept entry into low-power mode
case PBT_APMRESUMESUSPEND: //when resuming from low-power mode to normal operation
case PBT_APMRESUMESTANDBY: //when resuming from low-power mode to normal operation
case PBT_APMRESUMECRITICAL: //received when power is enough to proceed with normal operations
OnActivateApp(TRUE, NULL);
return FALSE;
case PBT_APMQUERYSUSPENDFAILED: //when an app denied request, others receive this message
case PBT_APMQUERYSTANDBYFAILED: //when an app denied request, others receive this message
case PBT_APMPOWERSTATUSCHANGE: //when power supply change is detected (batt<->mains/low, etc...)
case PBT_APMOEMEVENT: //when bios sends an OEM APM change
case PBT_APMBATTERYLOW: //when battery is running low
return FALSE; //return value is irrelevant
// PBTF_APMRESUMEFROMFAILURE ?
}
return BROADCAST_QUERY_DENY; //any other case is not known, so prevent power management just in case
}
int g_iMainWindowWidth = 652; //700
int g_iMainWindowHeight = 526;//550
BOOL CPA_MainFrame::PreCreateWindow(CREATESTRUCT &cs)
{
CSize ss(GetSystemMetrics(SM_CXMAXIMIZED), GetSystemMetrics(SM_CYMAXIMIZED));
cs.style = WS_CAPTION|WS_CLIPCHILDREN|WS_THICKFRAME|WS_OVERLAPPED;
cs.hwndParent = g_oBaseFrame.m_hWnd;
cs.x = (ss.cx - g_iMainWindowWidth) / 2;
cs.y = (ss.cy - g_iMainWindowHeight) / 2;
cs.cx = g_iMainWindowWidth;
cs.cy = g_iMainWindowHeight;
return CFrameWnd::PreCreateWindow(cs);
}
void CPA_MainFrame::OnSysCommand(UINT nID, LPARAM lParam) //handles WM_SYSCOMMAND message
{
UINT uiTrueNID = nID & 0xFFFFFFF0;
if(M_bEditorsActive())
{
if(uiTrueNID == SC_MAXIMIZE)
return;
}
if(uiTrueNID == SC_CLOSE)
TerminateProcess(GetCurrentProcess(),0);
switch ( uiTrueNID )
{
case SC_MONITORPOWER:
case SC_SCREENSAVE: // screensaver
// if we are in fullscreen, then swap to windowed
// and tell we were in full screen
//(do not do this for MONITORPOWER message, because the resolution change causes the
//power management counter to reset -> the monitor does not switch off...
if ( /*uiTrueNID == SC_SCREENSAVE &&*/ M_GetMainDevice()->GetDevice(0)->IsFullScreen() )
{
M_GetMainDevice()->GetDevice(0)->SwapFullScreen();
M_GetMainApp()->m_bWasInFullScreenBeforeLooseFocus = TRUE;
SendMessage(WM_SYSCOMMAND, SC_MINIMIZE);
}
M_GetMainApp()->fn_vAppliAskToStopEngine();
break;
/*
case SC_KEYMENU:
case SC_MAXIMIZE:
return bRes = FALSE; //message processed -> if we do nothing, no one will */
}
CFrameWnd::OnSysCommand(nID, lParam);
}
void CPA_MainFrame::OnNcLButtonDown(UINT nHitTest, CPoint point)
{
if(nHitTest == HTCAPTION)
{
if(M_bEditorsActive())
{
SetFocus();
return;
}
}
CFrameWnd::OnNcLButtonDown(nHitTest, point);
}
void CPA_MainFrame::OnWindowPosChanged(WINDOWPOS *lpwndpos)
{
/* if(!M_bEditorsActive())
m_oMainPos.SetRect
(
lpwndpos->x,
lpwndpos->y,
lpwndpos->x + lpwndpos->cx - 1,
lpwndpos->y + lpwndpos->cy - 1
);
*/ FRMBaseMenu::OnWindowPosChanged(lpwndpos);
}
void CPA_MainFrame::OnSize(UINT nType, int cx, int cy)
{
if(!M_bEditorsActive())
{
CFrameWnd::OnSize(nType, cx, cy);
return;
}
FRMBaseMenu::OnSize(nType, cx, cy);
}
void CPA_MainFrame::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI)
{
CSize ss(GetSystemMetrics(SM_CXMAXIMIZED), GetSystemMetrics(SM_CYMAXIMIZED));
if(M_bEditorsActive())
{
FRMBaseMenu::OnGetMinMaxInfo(lpMMI);
return;
}
lpMMI->ptMaxSize.x = g_iMainWindowWidth;
lpMMI->ptMaxSize.y = g_iMainWindowHeight;
lpMMI->ptMaxPosition.x = (ss.cx - g_iMainWindowWidth) / 2;
lpMMI->ptMaxPosition.y = (ss.cy - g_iMainWindowHeight) / 2;
lpMMI->ptMinTrackSize.x = lpMMI->ptMaxSize.x;
lpMMI->ptMinTrackSize.y = lpMMI->ptMaxSize.y;
lpMMI->ptMaxTrackSize.x = lpMMI->ptMaxSize.x;
lpMMI->ptMaxTrackSize.y = lpMMI->ptMaxSize.y;
}
//===========================================================================
// Description: That function is called by MFC to update main frame title.
// We put project title and actual version of project.
// Creation date: 06 Jun 96
// Author: CB
//---------------------------------------------------------------------------
// BOOL Not used
// Return void
//---------------------------------------------------------------------------
// Revision date:
// Author:
//===========================================================================
void CPA_MainFrame::OnUpdateFrameTitle(BOOL)
{
// M_GetMainApp()->fn_vUpdateFrameTitle();
// ::SetWindowText(m_hWnd, (LPCTSTR) m_szProjectName);
}
//===========================================================================
// Description: Call when application is activate or desactivate.
// Creation date: 24 Jun 96
// Author: CB
//---------------------------------------------------------------------------
// bActive Application is activated or not ?
// Return void
//---------------------------------------------------------------------------
// Revision date:
// Author:
//===========================================================================
int CPA_MainFrame::OnMouseActivate( CWnd* pDesktopWnd, UINT nHitTest, UINT message )
{
if(!M_bEditorsActive())
return MA_NOACTIVATEANDEAT;
else
return CFrameWnd::OnMouseActivate(pDesktopWnd, nHitTest, message);
}
void CPA_MainFrame::OnActivateApp(BOOL bActive, DWORD)
{
static BOOL s_bPreventNestedCalls = FALSE;
if ( s_bPreventNestedCalls )
return;
s_bPreventNestedCalls = TRUE;
if(bActive)
{
// Change priority level of main process
// Warning ! HIGH_PRIORITY_CLASS = same level as windows task manager. So if
// appli crash, it may causes somes problems.
// SetPriorityClass(GetCurrentProcess(), HIGH_PRIORITY_CLASS);
// if we are not in editor mode, check if we were in fullscreen before leaving
// and resume then engine
if(!M_bEditorsActive())
{
if (M_GetMainApp()->m_bWasInFullScreenBeforeLooseFocus)
{
M_GetMainApp()->m_bWasInFullScreenBeforeLooseFocus = FALSE;
if (M_GetMainDevice()->GetDevice(0)->IsFullScreen() == FALSE)
{
// if(M_GetMainWnd()->IsIconic())
// M_GetMainWnd()->SendMessage(WM_SYSCOMMAND, SC_RESTORE);
M_GetMainDevice()->GetDevice(0)->SwapFullScreen();
}
}
M_GetMainApp()->m_bAppliAskedToStopEngine = FALSE;
M_GetMainApp()->fn_vRestartEngine();
}
// Call a virtual method for a real project
M_GetMainApp()->fn_vWhenAppGainFocus();
}
else
{
if(!M_bEditorsActive())
{
if (M_GetMainApp()->m_bProjectIsClosing == 0)
{
if (M_GetMainApp()->m_bLeavingApplication == FALSE)
{
// Suspend engine thread
M_GetMainApp()->fn_vAppliAskToStopEngine();
//if we were in full screen, it might be because the screen saver was activated...
// if (M_GetMainDevice()->GetDevice(0)->IsFullScreen())
// {
// M_GetMainDevice()->GetDevice(0)->SwapFullScreen(FALSE);
// M_GetMainApp()->m_bWasInFullScreenBeforeLooseFocus = TRUE;
// SendMessage(WM_SYSCOMMAND, SC_MINIMIZE);
// }
// Restore a normal priority for actual process
// SetPriorityClass(GetCurrentProcess(), NORMAL_PRIORITY_CLASS);
// Call a virtual method for a real project
M_GetMainApp()->fn_vWhenAppLooseFocus();
}
}
}
}
/*#ifdef ACTIVE_EDITOR
if(M_bEditorsActive() && bActive)
{
for(int x = 1; x <= FRM_C_MaxCol; x++)
for(int y = 1; y <= FRM_C_MaxRow; y++)
if(g_oFrameGest.ma_p_oWinArray[x][y]) g_oFrameGest.ma_p_oWinArray[x][y]->BringWindowToTop();
}
#endif*/
s_bPreventNestedCalls = FALSE;
}
//===========================================================================
// Description: Call to close main frame.
// In editor mode, we ask all editors to close. Editors can
// say NO to not close application !
// Else we force second thread to close.
// Creation date: 20 Jun 96
// Author: CB
//---------------------------------------------------------------------------
// Return void
//---------------------------------------------------------------------------
// Revision date:
// Author:
//===========================================================================
void CPA_MainFrame::OnClose(void)
{
// if the engine has finished its closing process, the perform the onclose
if (M_GetMainApp()->m_bEngineIsOver == FALSE)
{
if(fn_bCanClose() == FALSE)
return;
// We are in full screen ?
if(M_GetMainDevice()->GetDevice(0)->IsFullScreen())
M_GetMainDevice()->GetDevice(0)->SwapFullScreen();
// We indicate that project is closing
M_GetMainApp()->m_bProjectIsClosing = 1;
M_GetMainApp()->m_bLeavingApplication = 1;
// Force engine thread to close.
// we ask engine thread to begin the closing process
M_GetMainApp()->fn_vAppliAskToEndGame();
}
else
{
// We close window
TerminateProcess(GetCurrentProcess(),0);
CFrameWnd::OnClose();
}
}
//===========================================================================
// Description: Call to create main frame.
// In editor mode, we create toolbar and menus.
// Creation date: 06 Jun 96
// Author: CB
//---------------------------------------------------------------------------
// Return void
//---------------------------------------------------------------------------
// Revision date:
// Author:
//===========================================================================
int CPA_MainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (M_BaseClass::OnCreate(lpCreateStruct) == -1)
return -1;
SetMenu(NULL); // No menu at this point of program
return 0;
}
//###########################################################################
// RESPONSE TO EDIT INTERFACE MESSAGES
//###########################################################################
UINT CPA_MainFrame::OnNcHitTest(CPoint point)
{
if(M_bEditorsActive())
return FRMBaseMenu::OnNcHitTest(point);
return CFrameWnd::OnNcHitTest(point);
}
//###########################################################################
// RESPONSE TO EDIT INTERFACE MESSAGES
//###########################################################################
void CPA_MainFrame::ActivateEditors(void)
{
M_GetMainApp()->fn_vAfterEngineStops();
// Tells the main contact that engine has just been stopped
g_oFrameGest.mfn_vSetRefresh(FALSE);
M_GetMainApp()->m_bEditorsAreActive = TRUE;
M_GetMainApp()->m_bFullScreenInEditor = M_GetMainDevice()->GetDevice(0)->IsFullScreen();
M_GetListOfAllDLL()->CallBeforeEditor();
g_oFrameGest.mfn_vSetRefresh(TRUE);
M_GetMainDevice()->DrawObject();
// M_GetMainDevice()->SetFocusDevice(0);
M_GetMainWnd()->fn_vShowGeneralInterface(TRUE);
g_oBaseFrame.SetFocus();
// M_FocusToDevice(M_GetMainDevice());
GetInterface()->fn_vDisplayTipOfDay("Interface","ITF",FALSE);
}
void CPA_MainFrame::DisactivateEditors(void)
{
// Ask the main contact if it accepts to run engine
// Exit if it says NO !
if (M_GetListOfAllDLL()->CallAcceptToRunEngine() == FALSE)
{
M_GetMainApp()->m_bAppliAskedToActivateEditors = TRUE;
fn_vShowGeneralInterface(TRUE); // For button that is now pressed
return;
}
// compute all bounding volumes
// OnComputeAllBound();
// erase info in status bar
M_GetMainWnd()->UpdateStatus(NULL, C_STATUSPANE_INFOS, C_STATUS_NORMAL);
// tells main contact that engine is about to start
// 5000 = Special value to force hide in FrmGest.
g_oFrameGest.m_iCanRefresh = -5000;
M_GetListOfAllDLL()->CallBeforeEngine();
M_bEditorsActive() = FALSE;
// M_GetMainWnd()->MoveWindow(((FRMBase *)M_GetMainWnd())->m_oMainPos);
M_GetMainWnd()->m_cLock = 0;
g_oFrameGest.m_iCanRefresh = 0;
// Go Engine
M_GetMainApp()->fn_vBeforeEngineStarts();
if (M_GetMainApp()->m_bAutoReinitTheMap)
{
fn_vReinitTheMap();
}
// OnComputeAllBound();
if(M_GetMainDevice()->GetDevice(0)->IsFullScreen())
M_GetMainWnd()->ShowWindow(FALSE);
else
{
fn_vShowGeneralInterface(FALSE);
CSize ss(GetSystemMetrics(SM_CXMAXIMIZED), GetSystemMetrics(SM_CYMAXIMIZED));
CRect cs;
//g_iMainWindowWidth = (g_iMainWindowHeight-46)*1.33 + 12;//chbani
cs.left = (ss.cx - g_iMainWindowWidth) / 2;
cs.top = (ss.cy - g_iMainWindowHeight) / 2;
cs.right = cs.left + g_iMainWindowWidth;
cs.bottom = cs.top + g_iMainWindowHeight;
M_GetMainWnd()->MoveWindow(cs);
}
M_GetMainApp()->fn_vRestartEngine();
// fn_vShowGeneralInterface(TRUE);
// M_FocusToDevice(M_GetMainDevice());
g_oBaseFrame.SetFocus();
}
//===========================================================================
//===========================================================================
// Description: Call to swap between motor and editors
// Creation date: 11 Jun 96
// Author: CB
//---------------------------------------------------------------------------
// Return void
//---------------------------------------------------------------------------
// Revision date:
// Author:
//===========================================================================
void CPA_MainFrame::OnSwapToEditors(void)
{
if (M_GetMainApp()->m_bAppliAskedToActivateEditors == TRUE)
{
// if editors are not active, don't stop them
if (M_bEditorsActive())
{
M_GetMainApp()->fn_vAppliAskToStopEditors();
}
}
else
{
if (!M_bEditorsActive())
{
M_GetMainApp()->fn_vAppliAskToStartEditors();
}
}
}
//===========================================================================
// Description: To pass to full screen when engine runs
// Creation date: 27 Jun 96
// Author: CB
//---------------------------------------------------------------------------
// Return void
//---------------------------------------------------------------------------
// Revision date:
// Author:
//===========================================================================
void CPA_MainFrame::OnFullScreen(void)
{
//
// DO NOT PUT SPECIAL CODE FOR FULL SCREEN HERE, BUT PUT IT IN SWAPFULLSCREEN
//
M_GetMainDevice()->GetDevice(0)->SwapFullScreen();
if (M_bEditorsActive())
M_FocusToDevice(M_GetMainDevice());
}
//===========================================================================
// Description: To exit application
// Creation date: 20 Sep 96
// Author: CB
//---------------------------------------------------------------------------
// Return void
//---------------------------------------------------------------------------
// Revision date: 3 Dec 97
// Author: CPA2-GDumitrascu
//===========================================================================
void CPA_MainFrame::OnAppExit(void)
{
SendMessage(WM_CLOSE);
}
void CPA_MainFrame::fn_vInitGeneralDialogBarWithContext(void)
{
CComboBox *pCombo;
CButton *pBut;
// ENABLE OR DISABLE ITEMS
// Determins if an item of the control must be enabled or disabled. If editors are
// not active, a lot of things are disabled.
// COMBOBOX : Not active if engine runs
// PAUSEENGINE: Not active if engine doesn't run
// ONE/SOMESTEP: Not active if not in pause or engine doesn't run
// FULLSCREEN: Not active if engine doesn't run or engine in pause
if (M_bEditorsActive() == FALSE)
{
pBut = (CButton *) m_oGeneralDialogBar.GetDlgItem(CPA_IDCB_SWAPTOEDITORS);
pBut->SetCheck(0);
// pBut->ShowWindow(m_bEnableEditors ? SW_SHOW : SW_HIDE);
pBut->ShowWindow(SW_SHOW);
pBut = (CButton *) m_oGeneralDialogBar.GetDlgItem(CPA_IDCB_PAUSEENGINE);
pBut->ShowWindow(m_bEnableEditors ? SW_SHOW : SW_HIDE);
if (M_GetMainApp()->m_bAppliAskedToStopEngine)
{
pBut = (CButton *) m_oGeneralDialogBar.GetDlgItem(CPA_IDCB_ONESTEPENGINE);
pBut->ShowWindow(SW_SHOW);
pBut = (CButton *) m_oGeneralDialogBar.GetDlgItem(CPA_IDCB_FULLSCREEN);
pBut->ShowWindow(SW_HIDE);
}
else
{
pBut = (CButton *) m_oGeneralDialogBar.GetDlgItem(CPA_IDCB_ONESTEPENGINE);
pBut->ShowWindow(SW_HIDE);
pBut = (CButton *) m_oGeneralDialogBar.GetDlgItem(CPA_IDCB_FULLSCREEN);
pBut->ShowWindow(m_bEnableEditors ? SW_SHOW : SW_HIDE);
}
// Undo/Redo
pBut = (CButton *) m_oGeneralDialogBar.GetDlgItem(CPA_IDCB_UNDO);
pBut->SetCheck(0);
pBut->ShowWindow(SW_HIDE);
pBut = (CButton *) m_oGeneralDialogBar.GetDlgItem(CPA_IDCB_REDO);
pBut->SetCheck(0);
pBut->ShowWindow(SW_HIDE);
// Save
pBut = (CButton *) m_oGeneralDialogBar.GetDlgItem(CPA_IDCB_SAVEALL);
pBut->ShowWindow(SW_HIDE);
// Options
pBut = (CButton *) m_oGeneralDialogBar.GetDlgItem(CPA_IDCB_OPTIONS);
pBut->ShowWindow(SW_HIDE);
// select mode
pCombo = (CComboBox *) m_oGeneralDialogBar.GetDlgItem(CPA_IDCB_SELECTMODE);
pCombo->ShowWindow(SW_HIDE);
// display mode
m_oGeneralDialogBar.m_oDisplayToolbar.ShowWindow(SW_HIDE);
// current sector
pCombo = (CComboBox *) m_oGeneralDialogBar.GetDlgItem(CPA_IDCB_CURRENTSECTOR);
pCombo->ShowWindow(SW_HIDE);
// auto target
pBut = (CButton *) m_oGeneralDialogBar.GetDlgItem(CPA_IDCB_AUTOTARGET);
pBut->ShowWindow(SW_HIDE);
pBut->EnableWindow(FALSE);
// CPA_Ed_1 FS begin
// move camera
pBut = (CButton *) m_oGeneralDialogBar.GetDlgItem(CPA_IDCB_MOVECAMERA);
pBut->ShowWindow(SW_HIDE);
pBut->EnableWindow(FALSE);
// CPA_Ed_1 FS end
// Full button
pBut = (CButton *) m_oGeneralDialogBar.GetDlgItem(CPA_IDCB_FULL);
pBut->ShowWindow(SW_HIDE);
pBut->EnableWindow(FALSE);
// Delta button
pBut = (CButton *) m_oGeneralDialogBar.GetDlgItem(CPA_IDCB_DELTA);
pBut->ShowWindow(SW_HIDE);
pBut->EnableWindow(FALSE);
//ROMTEAM 3DEdition (Adrian Silvescu 24/02/98)
pBut = (CButton *) m_oGeneralDialogBar.GetDlgItem(CPA_IDCB_LOCK);
pBut->ShowWindow(SW_HIDE);
pBut->EnableWindow(FALSE);
//ENDROMTEAM 3DEdition (Adrian Silvescu)
m_oGeneralDialogBar.m_oDeviceToolbar.ShowWindow(SW_HIDE);
}
// Editors active
else
{
pBut = (CButton *) m_oGeneralDialogBar.GetDlgItem(CPA_IDCB_SWAPTOEDITORS);
pBut->SetCheck(1);
pBut = (CButton *) m_oGeneralDialogBar.GetDlgItem(CPA_IDCB_PAUSEENGINE);
pBut->ShowWindow(SW_HIDE);
pBut = (CButton *) m_oGeneralDialogBar.GetDlgItem(CPA_IDCB_ONESTEPENGINE);
pBut->ShowWindow(SW_HIDE);
pBut = (CButton *) m_oGeneralDialogBar.GetDlgItem(CPA_IDCB_FULLSCREEN);
pBut->ShowWindow(SW_HIDE);
// Undo/Redo
pBut = (CButton *) m_oGeneralDialogBar.GetDlgItem(CPA_IDCB_UNDO);
pBut->SetCheck(0);
pBut->ShowWindow(SW_SHOW);
pBut->EnableWindow(M_GetEditManager()->CanUndo() ? TRUE : FALSE);
pBut = (CButton *) m_oGeneralDialogBar.GetDlgItem(CPA_IDCB_REDO);
pBut->SetCheck(0);
pBut->ShowWindow(SW_SHOW);
pBut->EnableWindow(M_GetEditManager()->CanRedo() ? TRUE : FALSE);
// Save
pBut = (CButton *) m_oGeneralDialogBar.GetDlgItem(CPA_IDCB_SAVEALL);
pBut->ShowWindow(SW_SHOW);
// Options
pBut = (CButton *) m_oGeneralDialogBar.GetDlgItem(CPA_IDCB_OPTIONS);
pBut->ShowWindow(SW_SHOW);
// select mode
pCombo = (CComboBox *) m_oGeneralDialogBar.GetDlgItem(CPA_IDCB_SELECTMODE);
pCombo->ShowWindow(SW_SHOW);
// display mode
m_oGeneralDialogBar.m_oDisplayToolbar.ShowWindow(SW_SHOW);
// current sector
pCombo = (CComboBox *) m_oGeneralDialogBar.GetDlgItem(CPA_IDCB_CURRENTSECTOR);
pCombo->ShowWindow(SW_SHOW);
// auto target
pBut = (CButton *) m_oGeneralDialogBar.GetDlgItem(CPA_IDCB_AUTOTARGET);
pBut->ShowWindow(SW_SHOW);
pBut->EnableWindow(TRUE);
pBut->SetCheck(GetInterface()->fn_bAutoTarget());
// CPA_Ed_1 FS begin
// move camera
pBut = (CButton *) m_oGeneralDialogBar.GetDlgItem(CPA_IDCB_MOVECAMERA);
pBut->ShowWindow(SW_SHOW);
pBut->EnableWindow(TRUE);
pBut->SetCheck(GetInterface()->fn_bMoveCamera());
// CPA_Ed_1 FS end
// Full button
pBut = (CButton *) m_oGeneralDialogBar.GetDlgItem(CPA_IDCB_FULL);
pBut->ShowWindow(SW_SHOW);
pBut->EnableWindow(TRUE);
pBut->SetCheck(GetInterface()->fn_bFullSelect());
// Delta button
pBut = (CButton *) m_oGeneralDialogBar.GetDlgItem(CPA_IDCB_DELTA);
pBut->ShowWindow(SW_SHOW);
pBut->EnableWindow(TRUE);
pBut->SetCheck(GetInterface()->fn_bDeltaSelect());
//ROMTEAM 3DEdition (Adrian Silvescu 24/02/98)
pBut = (CButton *) m_oGeneralDialogBar.GetDlgItem(CPA_IDCB_LOCK);
pBut->ShowWindow(SW_SHOW);
pBut->EnableWindow(TRUE);
pBut->SetCheck(GetInterface()->GetLockSelection());
//ENDROMTEAM 3DEdition (Adrian Silvescu)
m_oGeneralDialogBar.m_oDeviceToolbar.ShowWindow(SW_SHOW);
}
// Device toolbar
mfn_vUpdateDeviceToolBar();
}
#ifdef TEST_CPA_VERSION_3D
//===========================================================================
// Description: To load a world id DATA directory.
// Creation date: 20 Sep 96
// Author: CB
//---------------------------------------------------------------------------
// szName Name of the world to load
// Return void
//---------------------------------------------------------------------------
// Revision date:
// Author:
//===========================================================================
void fn_vInitCompleteWorld3D(LPCTSTR szName)
{
// Load an object in main view
HIE_tdxHandleToSuperObject hRoot/*, hSRoot*/;
// CPA_SuperObject *pRoot, *pSRoot;
DEV_MultiDevice3D *pDev;
long NbTriangles = 0;
#define C_MaxTriangles 100000
char temp[MAX_PATH];
SCR_tdst_Cxt_Values *p_stValues ;
char szSectionName[256];
GLI_xResetMatrixStack();
Mmg_M_SetModeAlloc4Ch(Int, E_ucDynamic, C_ucMmgDefaultChannel);
//chdir(M_GetMainApp()->m_csEngineDataPath);
GMT_fn_vInitLoadGameMaterial();
strcpy(temp, (char *) (LPCTSTR) (M_GetMainApp()->m_csEngineDataPath));
strcat(temp, "world\\levels\\");
SCR_fn_v_RdL0_RegisterPath(temp);
::GetCurrentDirectory(255, temp);
pDev = (DEV_MultiDevice3D *) M_GetMainApp()->fn_p_oGetMainWorld()->GetEditor()->GetDevice();
// Init des scripts et lecture du fichier
SCR_M_RdL0_SetContextLong(2, 0, (long) M_GetMainApp()->fn_p_oGetMainWorld());
SCR_fn_v_RdL0_ComputeSectionName(szSectionName, "cave\\cave.spo", "SuperObject", "Root");
p_stValues = SCR_fnp_st_RdL0_AnalyseSection(szSectionName, SCR_CDF_uw_Anl_Normal);
if (p_stValues)
hRoot = (HIE_tdxHandleToSuperObject) p_stValues->a_ulValues[0];
pDev->SetEngineWorld(hRoot);
chdir(temp);
//g_b_lLinesOn = 0;
//g_b_lSurfacesOn = 1;
//g_b_lBackFaceOn = 0;
}
//===========================================================================
// Description: To close current world.
// Creation date: 20 Sep 96
// Author: CB
//---------------------------------------------------------------------------
// Return void
//---------------------------------------------------------------------------
// Revision date:
// Author:
//===========================================================================
void fn_vCloseCompleteWorld3D(void)
{
}
#endif // TEST_CPA_VERSION_3D