reman3/Rayman_X/cpa/Appli/BinaryTool/src/DlgMain.cpp

4545 lines
151 KiB
C++

/*
=======================================================================================
Name: DlgMain.cpp : implementation file
Author: Mihaela Tancu
Date: 2 June 1998
=======================================================================================
*/
#include <sys/stat.h>
#include <string.h>
#include <direct.h>
#include "stdafx.h"
#include "BinaryTool.h"
#include "DlgMain.h"
#include "IniData.h"
#include "io.h"
#include "GIItem.h"
#include "GIType.h"
#include "Levels.h"
#include "Anims.h"
#include "Binary.h"
#include "l_global_v6.h"
#include "makeanim.h"
#include "DlgWarning.h"
#include "stdafx.h"
#include "ERM.h"
#include "MMG.h"
#include "TMP.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define C_BinPass1 "2"
#define C_BinPass2 "3"
#define C_TemporaryDirectory "TestCRB"
#define C_CRBExecutable "CRB.exe"
#define C_World "World"
#define C_Levels "Levels"
#define NombreDanimationsParDirectory 1000
#define FAMILY_NAME_LENGTH 32
/*
=======================================================================================
* Color for line in Rich edit ctrl
=======================================================================================
*/
BOOL bOneLevelMode, bLevelMode;
xString sLevel[100];
long lLevelNum=0;
char szDestBinDir[256];
char sInitialDir[256];
char szSource[256];
char sSource[256];
BOOL bOneTextureMode, bTextureMode;
xString sTextures[100];
long lTextureNum=0;
BOOL bOneAnimMode, bAnimMode;
xString sAnims[100];
long lAnimNum=0;
BOOL bYes = FALSE;
BOOL bBatch = TRUE;
BOOL bAll = TRUE;
BOOL bTbl = TRUE;
BOOL bBMP = TRUE;
BOOL bTGA = TRUE;
BOOL bConvert16 = TRUE;
BOOL bConvert32 = FALSE;
BOOL bAuto = FALSE; // YLG correction
char sMes[50], sOK[50], sCancel[50];
// When binarizaing first level, some special operations are done :
// texture copy, binarisation of fix.
BOOL bFirstLevel = TRUE;
/////////////////////////////////////////////////////////////////////////////
// CDlgMain dialog
CDlgMain::CDlgMain(CWnd* pParent)
: CDialog(CDlgMain::IDD, pParent)
{
//{{AFX_DATA_INIT(CDlgMain)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
//initialize the values for the edit controls and the
//push buttons from the right part of the window
m_a_uiRadioButtons[0] = IDC_BUTTON_DEBUG;
m_a_uiRadioButtons[1] = IDC_BUTTON_RELEASE;
m_cNbRadioButtons = 2;
m_a_uiEditControls[0] = IDC_EDIT_DESTBIND;
m_a_uiEditControls[1] = IDC_EDIT_SOURCE;
m_a_uiEditControls[2] = IDC_EDIT_EXEC;
m_cNbEditBox = 3;
m_a_uiRightButtons[0] = IDC_BUTTON_BROWSE2;
m_a_uiRightButtons[1] = IDC_BUTTON_BROWSE3;
m_a_uiRightButtons[2] = IDC_BUTTON_ALL;
m_a_uiRightButtons[3] = IDC_BUTTON_ALLINLIST;
m_a_uiRightButtons[4] = IDC_BUTTON_CLEAR;
m_a_uiRightButtons[5] = IDC_BUTTON_CLEARALL;
m_a_uiRightButtons[6] = IDC_BUTTON_CONVERT;
m_a_uiRightButtons[7] = IDC_BUTTON_CHANGE;
m_cNbRightButtons = 8;
m_a_uiRightBut[0] = IDC_BUTTON_CONVANI;
m_a_uiRightBut[1] = IDC_BUTTON_CONVTEX;
m_a_uiRightBut[2] = IDC_BUTTON_CONVLEVEL;
m_a_uiRightBut[3] = IDC_BUTTON_USED;
m_a_uiRightBut[4] = IDC_BUTTON_A;
m_a_uiRightBut[5] = IDC_BUTTON_Z;
m_a_uiRightBut[6] = IDC_BUTTON_BMP;
m_a_uiRightBut[7] = IDC_BUTTON_TGA;
m_a_uiRightBut[8] = IDC_BUTTON_C16;
m_a_uiRightBut[9] = IDC_BUTTON_C32;
m_cNbRightBut = 10;
// initialize also the group buttons for sizing the window
m_a_uiGroupButtons[0] = IDC_STATIC_GR1;
m_a_uiGroupButtons[1] = IDC_STATIC_GR2;
m_a_uiGroupButtons[2] = IDC_STATIC_VERS;
m_a_uiGroupButtons[3] = IDC_STATIC_EXEC;
m_a_uiGroupButtons[4] = IDC_STATIC_DSC;
m_a_uiGroupButtons[5] = IDC_BUTTON_FIX;
m_cNbGroupButtons = 6;
// initial is FALSE, and is putting on TRUE in the function OnInitDialog
m_bInit = FALSE;
//initialize for the cross
m_bFirstShow = TRUE;
m_oCrossDC.CreateCompatibleDC(NULL);
m_oCrossBitmap.LoadBitmap(IDB_BITMAP_CROIX);
m_oCrossDC.SelectObject(m_oCrossBitmap);
//initial the total number of selections is 0
m_iCountOfSelections=0;
m_bConversion = FALSE;
//and there are no types
m_p_oTypeAnims = NULL;
m_p_oTypeTextures = NULL;
m_p_oTypeLevels = NULL;
}
CDlgMain::~CDlgMain()
{
//delete the cross
m_oCrossBitmap.DeleteObject();
m_oCrossDC.DeleteDC();
mfn_vFreeMemory();
}
void CDlgMain::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDlgMain)
// NOTE: the ClassWizard will add DDX and DDV calls here
DDX_Control(pDX, IDC_PANEL, m_oPanel);
DDX_Control(pDX, IDC_STATIC_PROGRESS, m_oProgress);
//}}AFX_DATA_MAP
}
/*
=======================================================================================
Name: On command
Description: intercept the ...
Author: Mihaela Tancu
=======================================================================================
*/
BOOL CDlgMain::OnCommand(WPARAM wParam, LPARAM lParam)
{
if (HIWORD(wParam) == 0)
{
}
return CDialog::OnCommand(wParam, lParam);
}
BEGIN_MESSAGE_MAP(CDlgMain, CDialog)
//{{AFX_MSG_MAP(CDlgMain)
ON_WM_DESTROY()
ON_WM_PAINT()
ON_WM_DRAWITEM()
ON_WM_SIZING()
ON_NOTIFY(TCN_SELCHANGE, IDC_PANEL, OnSelchangePanel)
ON_BN_CLICKED(IDC_HELP, OnHelp)
ON_BN_CLICKED(IDC_QUIT, OnQuit)
ON_BN_CLICKED(IDC_BUTTON_ALL, OnSelectAll)
ON_BN_CLICKED(IDC_BUTTON_ALLINLIST, OnSelectAllInList)
ON_BN_CLICKED(IDC_BUTTON_CLEAR, OnClear)
ON_BN_CLICKED(IDC_BUTTON_CLEARALL, OnClearAll)
ON_BN_CLICKED(IDC_BUTTON_BROWSE2, OnButtonBrowseDestBinD)
ON_BN_CLICKED(IDC_BUTTON_BROWSE3, OnButtonBrowseSource)
ON_BN_CLICKED(IDC_BUTTON_DEBUG, OnButtonDebug)
ON_BN_CLICKED(IDC_BUTTON_RELEASE, OnButtonRelease)
ON_BN_CLICKED(IDC_BUTTON_CONVANI, OnConvAnim)
ON_BN_CLICKED(IDC_BUTTON_CONVTEX, OnConvTextures)
ON_BN_CLICKED(IDC_BUTTON_CONVLEVEL, OnConvLevels)
ON_BN_CLICKED(IDC_BUTTON_USED, OnUsed)
ON_BN_CLICKED(IDC_BUTTON_A, OnAll)
ON_BN_CLICKED(IDC_BUTTON_Z, OnTbl)
ON_BN_CLICKED(IDC_BUTTON_BMP, OnBMP)
ON_BN_CLICKED(IDC_BUTTON_TGA, OnTGA)
ON_BN_CLICKED(IDC_BUTTON_C16, OnConvert16)
ON_BN_CLICKED(IDC_BUTTON_C32, OnConvert32)
ON_BN_CLICKED(IDC_BUTTON_AUTO, OnGenerateAuto)
// ON_BN_CLICKED(IDC_BUTTON_D3D, OnButtonD3D)
// ON_BN_CLICKED(IDC_BUTTON_DFX, OnButtonDFX)
ON_BN_CLICKED(IDC_BUTTON_FIX, OnButtonFix)
ON_BN_CLICKED(IDC_BUTTON_CONVERT, OnBinarise)
ON_BN_CLICKED(IDC_BUTTON_CHANGE, OnButtonBrowseExeFile)
ON_BN_CLICKED(IDC_BUTTON_BIN, OnButtonBin)
ON_WM_SIZE()
ON_LBN_SELCHANGE(IDC_LIST1, OnSelchangeListType)
ON_LBN_SELCHANGE(IDC_LIST2, OnSelchangeListObject)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDlgMain message handlers
BOOL CDlgMain::PreTranslateMessage(MSG* pMsg)
{
int iIndexAction = m_oListObject->GetCurSel();
BOOL bResult = FALSE; // default
if ( pMsg->hwnd == GetDlgItem(IDC_LIST2)->m_hWnd )
{
switch ( pMsg->message )
{
case WM_LBUTTONDOWN:
bResult = OnLButtonDownListBoxObject ( pMsg ) ;
break;
case WM_KEYDOWN:
bResult = OnKeyDownListBoxObject( pMsg );
break;
default:
bResult = CDialog::PreTranslateMessage(pMsg);
}
}
return bResult;
}
/*
=======================================================================================
Name: OnButtonBin
Description: Function for
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::OnButtonBin()
{
if (((CButton *)GetDlgItem(IDC_BUTTON_BIN))->GetCheck())
//if it is checked ...
bDsc = TRUE;
else
bDsc = FALSE;
}
/*
=======================================================================================
Name: OnDrawItem
Description: Handle function for message WM_DRAWITEM on List Box with Names (objects)
and in the list box with types
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDIS)
{
if ( (nIDCtl == IDC_LIST2) &&
(m_oListObject->IsWindowEnabled() ) &&
(lpDIS->itemID != LB_ERR) )
//draw for the second list box with objects
m_fn_vOnDrawItemListBoxObject ( lpDIS ) ;
else
if ( (nIDCtl == IDC_LIST1) &&
(m_oListType->IsWindowEnabled() ) &&
(lpDIS->itemID != LB_ERR))
//draw for the first list box with types
m_fn_vOnDrawItemListBoxType ( lpDIS ) ;
else
CDialog::OnDrawItem(nIDCtl, lpDIS);
}
/*
=======================================================================================
Name: OnButtonDebug
Description: Function for changing the result directory if the debug radio button is set
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::OnButtonDebug()
{
char _szMessage[5000];
BOOL bSet=TRUE, bDisplay=FALSE;
if (((CButton *)GetDlgItem(IDC_BUTTON_DEBUG))->GetCheck())
{
((CButton *)GetDlgItem(IDC_BUTTON_DEBUG))->SetCheck(1);
bDebug = TRUE;
/* if (b3DCard)
if (bDebug)
{ if (!SetCurrentDirectory( g_stInitialData.szDestBinDD3D ))
GetDlgItem(IDC_EDIT_DESTBIND)->SetWindowText( "" );
m_fn_vShowPartialWarning(SetCurrentDirectory( g_stInitialData.szDestBinDD3D ),"DestBinDD3D", _szMessage, &bDisplay, IDC_EDIT_DESTBIND, g_stInitialData.szDestBinDD3D);
}
else
{
if (!SetCurrentDirectory( g_stInitialData.szDestBinRD3D ))
GetDlgItem(IDC_EDIT_DESTBIND)->SetWindowText( "" );
m_fn_vShowPartialWarning(SetCurrentDirectory( g_stInitialData.szDestBinRD3D ),"DestBinRD3D", _szMessage, &bDisplay, IDC_EDIT_DESTBIND, g_stInitialData.szDestBinRD3D);
}
else*/
if (bDebug)
{
if (!SetCurrentDirectory( g_stInitialData.szDestBinDDFX ))
GetDlgItem(IDC_EDIT_DESTBIND)->SetWindowText( "" );
m_fn_vShowPartialWarning(SetCurrentDirectory( g_stInitialData.szDestBinDDFX ),"DestBinDDFX", _szMessage, &bDisplay, IDC_EDIT_DESTBIND, g_stInitialData.szDestBinDDFX);
}
else
{
if (!SetCurrentDirectory( g_stInitialData.szDestBinRDFX ))
GetDlgItem(IDC_EDIT_DESTBIND)->SetWindowText( "" );
m_fn_vShowPartialWarning(SetCurrentDirectory( g_stInitialData.szDestBinRDFX ),"DestBinRDFX", _szMessage, &bDisplay, IDC_EDIT_DESTBIND, g_stInitialData.szDestBinRDFX);
}
GetDlgItem(IDC_EDIT_DESTBIND)->GetWindowText(szDestBinDir, 256);
if (!bAuto) // YLG Correction
fn_IniData_vGetDatasFromStartFile(TRUE);
if (!strcmp(g_stInitialData.szExeFile, ""))
GetDlgItem(IDC_EDIT_EXEC)->SetWindowText( "" );
else
GetDlgItem(IDC_EDIT_EXEC)->SetWindowText( g_stInitialData.szExeFile );
}
}
/*
=======================================================================================
Name: OnButtonD3D
Description: Function for changing the result directory if the debug radio button is set
Author: Mihaela Tancu
=======================================================================================
*/
/*void CDlgMain::OnButtonD3D()
{
char _szMessage[5000];
BOOL bSet=TRUE, bDisplay=FALSE;
if (((CButton *)GetDlgItem(IDC_BUTTON_D3D))->GetCheck())
{
((CButton *)GetDlgItem(IDC_BUTTON_D3D))->SetCheck(1);
b3DCard = TRUE;
if (b3DCard)
if (bDebug)
{ if (!SetCurrentDirectory( g_stInitialData.szDestBinDD3D ))
GetDlgItem(IDC_EDIT_DESTBIND)->SetWindowText( "" );
m_fn_vShowPartialWarning(SetCurrentDirectory( g_stInitialData.szDestBinDD3D ),"DestBinDD3D", _szMessage, &bDisplay, IDC_EDIT_DESTBIND, g_stInitialData.szDestBinDD3D);
}
else
{
if (!SetCurrentDirectory( g_stInitialData.szDestBinRD3D ))
GetDlgItem(IDC_EDIT_DESTBIND)->SetWindowText( "" );
m_fn_vShowPartialWarning(SetCurrentDirectory( g_stInitialData.szDestBinRD3D ),"DestBinRD3D", _szMessage, &bDisplay, IDC_EDIT_DESTBIND, g_stInitialData.szDestBinRD3D);
}
else
if (bDebug)
{
if (!SetCurrentDirectory( g_stInitialData.szDestBinDDFX ))
GetDlgItem(IDC_EDIT_DESTBIND)->SetWindowText( "" );
m_fn_vShowPartialWarning(SetCurrentDirectory( g_stInitialData.szDestBinDDFX ),"DestBinDDFX", _szMessage, &bDisplay, IDC_EDIT_DESTBIND, g_stInitialData.szDestBinDDFX);
}
else
{
if (!SetCurrentDirectory( g_stInitialData.szDestBinRDFX ))
GetDlgItem(IDC_EDIT_DESTBIND)->SetWindowText( "" );
m_fn_vShowPartialWarning(SetCurrentDirectory( g_stInitialData.szDestBinRDFX ),"DestBinRDFX", _szMessage, &bDisplay, IDC_EDIT_DESTBIND, g_stInitialData.szDestBinRDFX);
}
GetDlgItem(IDC_EDIT_DESTBIND)->GetWindowText(szDestBinDir, 256);
}
}
*/
/*
=======================================================================================
Name: OnButtonDFX
Description: Function for changing the result directory if the debug radio button is set
Author: Mihaela Tancu
=======================================================================================
*/
/*void CDlgMain::OnButtonDFX()
{
char _szMessage[5000];
BOOL bSet=TRUE, bDisplay=FALSE;
if (((CButton *)GetDlgItem(IDC_BUTTON_DFX))->GetCheck())
{
((CButton *)GetDlgItem(IDC_BUTTON_DFX))->SetCheck(1);
b3DCard = FALSE;
if (b3DCard)
if (bDebug)
{ if (!SetCurrentDirectory( g_stInitialData.szDestBinDD3D ))
GetDlgItem(IDC_EDIT_DESTBIND)->SetWindowText( "" );
m_fn_vShowPartialWarning(SetCurrentDirectory( g_stInitialData.szDestBinDD3D ),"DestBinDD3D", _szMessage, &bDisplay, IDC_EDIT_DESTBIND, g_stInitialData.szDestBinDD3D);
}
else
{
if (!SetCurrentDirectory( g_stInitialData.szDestBinRD3D ))
GetDlgItem(IDC_EDIT_DESTBIND)->SetWindowText( "" );
m_fn_vShowPartialWarning(SetCurrentDirectory( g_stInitialData.szDestBinRD3D ),"DestBinRD3D", _szMessage, &bDisplay, IDC_EDIT_DESTBIND, g_stInitialData.szDestBinRD3D);
}
else
if (bDebug)
{
if (!SetCurrentDirectory( g_stInitialData.szDestBinDDFX ))
GetDlgItem(IDC_EDIT_DESTBIND)->SetWindowText( "" );
m_fn_vShowPartialWarning(SetCurrentDirectory( g_stInitialData.szDestBinDDFX ),"DestBinDDFX", _szMessage, &bDisplay, IDC_EDIT_DESTBIND, g_stInitialData.szDestBinDDFX);
}
else
{
if (!SetCurrentDirectory( g_stInitialData.szDestBinRDFX ))
GetDlgItem(IDC_EDIT_DESTBIND)->SetWindowText( "" );
m_fn_vShowPartialWarning(SetCurrentDirectory( g_stInitialData.szDestBinRDFX ),"DestBinRDFX", _szMessage, &bDisplay, IDC_EDIT_DESTBIND, g_stInitialData.szDestBinRDFX);
}
GetDlgItem(IDC_EDIT_DESTBIND)->GetWindowText(szDestBinDir, 256);
}
}
*/
/*
=======================================================================================
Name: OnDestroy
Description: Handle function for message WM_DESTROY
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::OnDestroy()
{
//if you want to save the modifications if you select the /\ button (to close the dialog)
/*
=======================================================================================
* save new position and size of the main window
=======================================================================================
*/
if (m_bInit)
{
GetWindowRect( &g_stWinPosSize.stMainPos );
fn_IniData_vWriteWindowPosSize();
fn_IniData_vSetMode( bDebug );
fn_IniData_vSetCompleteBinarization( bDsc );
fn_IniData_vSetFix( bFix1 );
}
SCR_fn_v_RdL0_Close();
CDialog::OnDestroy();
}
/*
=======================================================================================
Name: m_fn_TabC_vDisableAllButtons
Description: Enable the buttons for all the tabs
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::m_fn_TabC_vDisableAllButtons()
{
// Show or hide the buttons from the first panel
// according to the parameter bChange
GetDlgItem(IDC_HELPBUTTON)->EnableWindow(FALSE);
GetDlgItem(IDC_QUIT)->EnableWindow(FALSE);
}
/*
=======================================================================================
Name: m_fn_TabC_vEnableButtons
Description: Enable the buttons for all the tabs
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::m_fn_TabC_vEnableButtons()
{
// Show or hide the buttons from the first panel
// according to the parameter bChange
// GetDlgItem(IDC_HELPBUTTON)->EnableWindow(TRUE);
GetDlgItem(IDC_QUIT)->EnableWindow(TRUE);
}
/*
=======================================================================================
Name: OnBinarise
Description:
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::OnBinarise()
{
int i, k, j=2;
m_bConversion = TRUE;
m_fn_TabC_vDisableAllButtons();
m_fn_TabC_vShowControlsPanelRes() ;
m_oPanel.SetCurSel(2);
m_fn_TabC_vShowControlsPanelRes() ;
RedrawWindow(NULL,NULL, RDW_INVALIDATE |RDW_UPDATENOW );
if (!bYes)
{
m_fn_ComRes_vDeleteLines( &m_oRichEditCom);
m_fn_ComRes_vDeleteLines( &m_oRichEditRes);
}
m_oProgress.SetRange( 0, m_iCountOfSelections+1 );
m_oProgress.SetPos( 1 );
// If "Force binarization of fix" is checked, the next level is treated as first level
// (ie: binarisation of fix, copy of textures...)
if( bFix1 )
bFirstLevel = TRUE;
//if the families are selected
if (m_p_oTypeAnims && m_p_oTypeAnims->m_iSelected)
{
if(bOneAnimMode)
bOneAnimMode = (m_p_oTypeAnims->m_iSelected != m_p_oTypeAnims->m_oList.GetCount());
bAnimMode = TRUE;
for (i=0; i<m_p_oTypeAnims->m_oList.GetCount(); i++)
{
GI_Item * p_oItem = m_p_oTypeAnims->m_oList.RemoveHead();
if (p_oItem->m_bActived)
{ strcpy(sAnims[lAnimNum], p_oItem->m_fn_p_oGetName());
m_fn_ComRes_vWriteLine( "Binary Tool", C_ComRes_cErrorLine ,&m_oRichEditCom, &m_stCharFormatCom);
m_fn_ComRes_vWriteLine( " --> binarize animations for family ", C_ComRes_cErrorLine ,&m_oRichEditCom, &m_stCharFormatCom);
m_fn_ComRes_vWriteLine( sAnims[lAnimNum], C_ComRes_cErrorLine ,&m_oRichEditCom, &m_stCharFormatCom);
m_fn_ComRes_vWriteLine( "\n", C_ComRes_cErrorLine ,&m_oRichEditCom, &m_stCharFormatCom);
m_fn_ComRes_vWriteLine( "Start binarizing animations for family ", C_ComRes_cErrorLine ,&m_oRichEditRes, &m_stCharFormatRes);
m_fn_ComRes_vWriteLine( sAnims[lAnimNum], C_ComRes_cErrorLine ,&m_oRichEditRes, &m_stCharFormatRes);
m_fn_ComRes_vWriteLine( "...\n", C_ComRes_cErrorLine ,&m_oRichEditRes, &m_stCharFormatRes);
//Mihaela Tancu - New auto
//fn_vBinarizeAnimations(sAnims[lAnimNum]);
char szCurrentDir[256]/*, szAnimDir[256], szAnimDest[256]*/;
GetCurrentDirectory(_MAX_PATH, szCurrentDir);
SetCurrentDirectory(sInitialDir);
fn_cExecuteMakeanim("Makeanim.exe", bBatch, bAll, bTbl, sAnims[lAnimNum]);
m_fn_ComRes_vWriteLine( "Finish binarizing animations for family ", C_ComRes_cErrorLine ,&m_oRichEditRes, &m_stCharFormatRes);
m_fn_ComRes_vWriteLine( sAnims[lAnimNum], C_ComRes_cErrorLine ,&m_oRichEditRes, &m_stCharFormatRes);
m_fn_ComRes_vWriteLine( "\n", C_ComRes_cErrorLine ,&m_oRichEditRes, &m_stCharFormatRes);
/* if (bAll)
{ strcpy(szAnimDir, sInitialDir);
strcat(szAnimDir, "\\gamedata\\world\\graphics\\anims\\");
strcat(szAnimDir, sAnims[lAnimNum]);
strcpy(szAnimDest, szDestBinDir);
strcat(szAnimDest, "\\world\\graphics\\anims\\");
strcat(szAnimDest, sAnims[lAnimNum]);
SAVE_fn_bCopyDirectory(szAnimDir, szAnimDest, TRUE, "A3I");
}
if (bTbl)
{
strcpy(szAnimDir, sInitialDir);
strcat(szAnimDir, "\\gamedata\\world\\levels\\_common\\families\\");
strcat(szAnimDir, sAnims[lAnimNum]);
strcpy(szAnimDest, szDestBinDir);
strcat(szAnimDest, "\\world\\levels\\_common\\families\\");
strcat(szAnimDest, sAnims[lAnimNum]);
SAVE_fn_bCopyDirectory(szAnimDir, szAnimDest, TRUE, "TBL");
}*/
SetCurrentDirectory(szCurrentDir);
//Mihaela Tancu - New auto
RedrawWindow(NULL,NULL, RDW_INVALIDATE |RDW_UPDATENOW );
lAnimNum++;
k=i+j;
m_oProgress.SetPos( k );
MLT_vEraseSTALib();
}
m_p_oTypeAnims->m_oList.AddTail(p_oItem);
}
bOneAnimMode=TRUE;
j=j+i;
}
//if the levels are selected
if (m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected)
{
BOOL bErrorOccuredWhileBinarizingLevel = FALSE;
if(bOneLevelMode)
bOneLevelMode = (m_p_oTypeLevels->m_iSelected != m_p_oTypeLevels->m_oList.GetCount());
bLevelMode = TRUE;
MLT_vInitALWLoad();
MLT_vInitLVLLoad();
MLT_vInitTEXLoad();
// Convert anims.
if( bConvAnim )
{
for (i=0; i<m_p_oTypeLevels->m_oList.GetCount(); i++)
{
GI_Item * p_oItem = m_p_oTypeLevels->m_oList.RemoveHead();
if (p_oItem->m_bActived)
{ strcpy(sLevel[lLevelNum], p_oItem->m_fn_p_oGetName());
m_fn_ComRes_vWriteLine( "BinaryTool --> Animations\n", C_ComRes_cErrorLine ,&m_oRichEditCom, &m_stCharFormatCom);
m_fn_ComRes_vWriteLine( "Start binarizing...\n", C_ComRes_cErrorLine ,&m_oRichEditRes, &m_stCharFormatRes);
if (GetDlgItem(IDC_BUTTON_CONVANI)->IsWindowEnabled())
{ m_fn_ComRes_vWriteLine( "\n binarize animations for the level ", C_ComRes_cErrorLine ,&m_oRichEditCom, &m_stCharFormatCom);
m_fn_ComRes_vWriteLine( sLevel[lLevelNum], C_ComRes_cErrorLine ,&m_oRichEditCom, &m_stCharFormatCom);
m_fn_ComRes_vWriteLine( "\n", C_ComRes_cErrorLine ,&m_oRichEditCom, &m_stCharFormatCom);
m_fn_ComRes_vWriteLine( sLevel[lLevelNum], C_ComRes_cErrorLine ,&m_oRichEditRes, &m_stCharFormatRes);
m_fn_ComRes_vWriteLine( "\n", C_ComRes_cErrorLine ,&m_oRichEditRes, &m_stCharFormatRes);
fn_vAnimationsOnly( sLevel[lLevelNum]);
}
//Mihaela Tancu - Makeanim new
}
m_p_oTypeLevels->m_oList.AddTail(p_oItem);
}
}
/*
* Convert and Copy the graphics\Texture and Vignette directories
*/
if( bConvTextures || bFirstLevel )
{
m_fn_ComRes_vWriteLine( "BinaryTool --> Textures\n", C_ComRes_cErrorLine ,&m_oRichEditCom, &m_stCharFormatCom);
m_fn_ComRes_vWriteLine( "\nCopy textures to the bin directory \n", C_ComRes_cErrorLine ,&m_oRichEditRes, &m_stCharFormatRes);
RedrawWindow(NULL, NULL, RDW_INVALIDATE |RDW_UPDATENOW );
fn_vCopyTextures( sInitialDir, szDestBinDir, bConvTextures );
}
for (i=0; i<m_p_oTypeLevels->m_oList.GetCount(); i++)
{
GI_Item * p_oItem = m_p_oTypeLevels->m_oList.RemoveHead();
m_p_oTypeLevels->m_oList.AddTail(p_oItem);
if (p_oItem->m_bActived)
{
strcpy(sLevel[lLevelNum], p_oItem->m_fn_p_oGetName());
//Mihaela Tancu - Makeanim new
if (bConvLevels && GetDlgItem(IDC_BUTTON_CONVLEVEL)->IsWindowEnabled()) //the level should be converted
{
m_fn_ComRes_vWriteLine( "BinaryTool --> Level\n", C_ComRes_cErrorLine ,&m_oRichEditCom, &m_stCharFormatCom);
m_fn_ComRes_vWriteLine( "\n binarize the level ", C_ComRes_cErrorLine ,&m_oRichEditCom, &m_stCharFormatCom);
m_fn_ComRes_vWriteLine( sLevel[lLevelNum], C_ComRes_cErrorLine ,&m_oRichEditCom, &m_stCharFormatCom);
m_fn_ComRes_vWriteLine( "\n", C_ComRes_cErrorLine ,&m_oRichEditCom, &m_stCharFormatCom);
m_fn_ComRes_vWriteLine( "\nStart binarizing the level...\n", C_ComRes_cErrorLine ,&m_oRichEditRes, &m_stCharFormatRes);
RedrawWindow(NULL, NULL, RDW_INVALIDATE |RDW_UPDATENOW );
if( m_fn_iInitBinGame(sLevel[lLevelNum], p_oItem) == -1 )
{
bErrorOccuredWhileBinarizingLevel = TRUE;
break;
}
m_fn_ComRes_vWriteLine( "\nFinish binarizing the level...\n\n\n", C_ComRes_cErrorLine ,&m_oRichEditRes, &m_stCharFormatRes);
bFirstLevel = FALSE;
}
m_fn_ComRes_vWriteLine( "\n", C_ComRes_cErrorLine ,&m_oRichEditCom, &m_stCharFormatCom);
lLevelNum++;
k=i+j;
m_oProgress.SetPos( k );
RedrawWindow(NULL, NULL, RDW_INVALIDATE |RDW_UPDATENOW );
}
}
m_fn_ComRes_vWriteLine( "Finish binarizing...\n\n\n", C_ComRes_cErrorLine ,&m_oRichEditRes, &m_stCharFormatRes);
RedrawWindow(NULL,NULL, RDW_INVALIDATE |RDW_UPDATENOW );
bOneLevelMode=TRUE;
j=j+i;
if( ! bErrorOccuredWhileBinarizingLevel )
{
strcpy(g_szStartPrgIniFile, sInitialDir);
if (g_szStartPrgIniFile[strlen(g_szStartPrgIniFile) - 1] != '\\')
strcat( g_szStartPrgIniFile, "\\");
strcat( g_szStartPrgIniFile, C_szStartPrgIniFile );
char szDir1[MAX_PATH] ;
//Mihaela Tancu - Correction
if ((g_szStartPrgIniFile[0]==toupper(szDestBinDir[0])) || (g_szStartPrgIniFile[0]==tolower(szDestBinDir[0]))) //the exe of the game and
//Mihaela Tancu - Correction
//the destination directory are on the same drive
{
char /*szPath[ MAX_PATH ], */szDir[MAX_PATH] ;
char *p_Char, *p_Char1;
char szExeDir[ MAX_PATH ], szDestDir[MAX_PATH];
int /*i,*/ j, iCounter=0, iCounter1=0;
if ((p_Char=strstr(szDestBinDir, g_szStartPrgIniFile))!=NULL) //the destination directory is a
//sub-directory of the exe directory
{
strcpy(szDir1, szDestBinDir+strlen(sInitialDir)+1);
}
else
{
strcpy(szExeDir, sInitialDir+2);
p_Char = strstr(szExeDir, "\\");
if (p_Char)
{ strcpy(szDir, p_Char+1);
p_Char1 = strstr(szDir, "\\");
if (p_Char1) szDir[strlen(p_Char)-strlen(p_Char1)-1]='\0';
}
strcpy(szDestDir, szDestBinDir+2);
p_Char = strstr(szDestDir, "\\");
if (p_Char)
{ strcpy(szDir1, p_Char+1);
p_Char1 = strstr(szDir1, "\\");
if (p_Char1) szDir1[strlen(p_Char)-strlen(p_Char1)-1]='\0';
}
while (!stricmp(szDir, szDir1))
{
iCounter++;
strcpy(szExeDir, szExeDir+strlen(szDir)+1);
p_Char = strstr(szExeDir, "\\");
if (p_Char)
{ strcpy(szDir, p_Char+1);
p_Char1 = strstr(szDir, "\\");
if (p_Char1) szDir[strlen(p_Char)-strlen(p_Char1)-1]='\0';
}
strcpy(szDestDir, szDestDir+strlen(szDir1)+1);
p_Char = strstr(szDestDir, "\\");
if (p_Char)
{ strcpy(szDir1, p_Char+1);
p_Char1 = strstr(szDir1, "\\");
if (p_Char1) szDir1[strlen(p_Char)-strlen(p_Char1)-1]='\0';
}
}
strcpy(szDir, p_Char+1);
strcpy(szDir1, sInitialDir);
while(p_Char=strstr(szDir1, "\\"))
{ strcpy(szDir1, p_Char+1);
iCounter1++;
}
strcpy(szDir1, "");
for (j=0; j<iCounter1-iCounter; j++)
strcat(szDir1, "..\\");
strcat(szDir1, szDir);
}
}
fn_IniData_vSetDscCreated(bDsc);
fn_IniData_vSetAskAtEachTime( 1 );
fn_IniData_vSetBinUseBinaryData( 1 );
if (bDebug)
{
fn_IniData_vSetGDDebugBin( szDir1 );
fn_IniData_vSetBinDebugIsOk( 1 );
}
else
{
fn_IniData_vSetGDReleaseBin( szDir1 );
fn_IniData_vSetBinReleaseIsOk( 1 );
}
//Mihaela Tancu - New
if (bDebug)
fn_IniData_vSetSPDebug( g_stInitialData.szExeFile );
else
fn_IniData_vSetSPRelease( g_stInitialData.szExeFile );
//Mihaela Tancu - New
} // End if bErrorOccuredWhileBinarizingLevel
} // End if m_p_oTypeLevels
//if the textures are selected
if (m_p_oTypeTextures && m_p_oTypeTextures->m_iSelected)
{
if(bOneTextureMode)
bOneTextureMode = (m_p_oTypeTextures->m_iSelected != m_p_oTypeTextures->m_oList.GetCount());
bTextureMode = TRUE;
for (i=0; i<m_p_oTypeTextures->m_oList.GetCount(); i++)
{
GI_Item * p_oItem = m_p_oTypeTextures->m_oList.RemoveHead();
if (p_oItem->m_bActived)
{ strcpy(sTextures[lTextureNum], p_oItem->m_fn_p_oGetName());
m_fn_ComRes_vWriteLine( "BinaryTool --> binarize the textures from ", C_ComRes_cErrorLine ,&m_oRichEditCom, &m_stCharFormatCom);
m_fn_ComRes_vWriteLine( sTextures[lTextureNum], C_ComRes_cErrorLine ,&m_oRichEditCom, &m_stCharFormatCom);
m_fn_ComRes_vWriteLine( " directory\n", C_ComRes_cErrorLine ,&m_oRichEditCom, &m_stCharFormatCom);
//Mihaela Tancu - New auto
// fn_vBinarizeTexturesDir(sTextures[lTextureNum]);
char szCurrentDir[256];
GetCurrentDirectory(_MAX_PATH, szCurrentDir);
SetCurrentDirectory(sInitialDir);
fn_cExecuteConvImg("ConvImg.exe", sSource, szDestBinDir, bBMP, bTGA, bConvert16, bConvert32, sTextures[lTextureNum]);
SetCurrentDirectory(szCurrentDir);
m_fn_ComRes_vWriteLine( "Finish binarization of textures...\n\n\n", C_ComRes_cErrorLine ,&m_oRichEditRes, &m_stCharFormatRes);
//Mihaela Tancu - New auto
RedrawWindow(NULL,NULL, RDW_INVALIDATE |RDW_UPDATENOW );
lTextureNum++;
k=i+j;
m_oProgress.SetPos( k );
}
m_p_oTypeTextures->m_oList.AddTail(p_oItem);
}
bOneTextureMode=TRUE;
j=j+i;
}
m_fn_vSelectAll(FALSE);
m_oListType->Invalidate(TRUE);
m_fn_vEnableButtons(FALSE);
m_fn_TabC_vEnableButtons();
GetDlgItem(IDC_STATIC_PROGRESS)->ShowWindow(FALSE);
m_bConversion = FALSE;
}
/*
=======================================================================================
Name: m_fn_vInitBinTextures
Description: Copy files .gf from source corresponding directory to destination directory
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::m_fn_vInitBinTextures(char *sString)
{
char szTempName[_MAX_PATH];
char szCurrentDir[_MAX_PATH];
char szDirName[_MAX_PATH];
/*
* Copy the graphics\Texture directory
*/
m_fn_ComRes_vWriteLine( "Binary Tool", C_ComRes_cErrorLine ,&m_oRichEditCom, &m_stCharFormatCom);
m_fn_ComRes_vWriteLine( " --> ", C_ComRes_cErrorLine ,&m_oRichEditCom, &m_stCharFormatCom);
m_fn_ComRes_vWriteLine( sString, C_ComRes_cErrorLine ,&m_oRichEditCom, &m_stCharFormatCom);
m_fn_ComRes_vWriteLine( "\n", C_ComRes_cErrorLine ,&m_oRichEditCom, &m_stCharFormatCom);
m_fn_ComRes_vWriteLine( "Copy all the files *.gf from the Texture directory", C_ComRes_cErrorLine ,&m_oRichEditRes, &m_stCharFormatRes);
strcpy(szCurrentDir, sInitialDir);
strcpy(szTempName,szDestBinDir);
strcat(szTempName,"\\");
strcat(szTempName,C_World);
strcat(szTempName,"\\Graphics");
SAVE_fn_bCreateDirectory(szTempName);
strcat(szTempName,"\\Textures");
strcat(szTempName, "\\");
strcat(szTempName,sString);
m_fn_ComRes_vWriteLine( " --> ", C_ComRes_cErrorLine ,&m_oRichEditRes, &m_stCharFormatRes);
m_fn_ComRes_vWriteLine( sString, C_ComRes_cErrorLine ,&m_oRichEditRes, &m_stCharFormatRes);
m_fn_ComRes_vWriteLine( "\n", C_ComRes_cErrorLine ,&m_oRichEditRes, &m_stCharFormatRes);
strcpy(szDirName,szCurrentDir);
strcat(szDirName,"\\GameData\\World\\Graphics\\Textures");
strcat(szDirName, "\\");
strcat(szDirName, sString);
SAVE_fn_bCopyDirectory(szDirName, szTempName, TRUE, "GF");
}
/*
=======================================================================================
Name: m_fn_iGetAllTextures
Description: Get all Textures
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::m_fn_iGetAllTextures(GI_Item * p_oItem)
{
char szFile[500];
sprintf(szFile, "%s\\World\\Levels\\%s\\%s.tex", g_stInitialData.szSource, p_oItem->m_szName, p_oItem->m_szName);
MLT_vLoadTEXFileInLib(szFile);
}
/*
=======================================================================================
Name: m_fn_vInitBinGame
Description: Binarize the level give as parameter
Author: Mihaela Tancu
=======================================================================================
*/
int CDlgMain::m_fn_iInitBinGame(char *sString, GI_Item *p_oItem)
{
char szLevelName[_MAX_PATH], szDir[_MAX_PATH];
char szLevelsDirectory[ _MAX_PATH ];
char szProgramName[_MAX_PATH];
char szBinDirectory[ _MAX_PATH ];
char szCurrentDir[_MAX_PATH];
char szFileName[_MAX_PATH];
char szTempName[_MAX_PATH];
char szTempDir[_MAX_PATH];
char szDirName[_MAX_PATH];
char szFile[ _MAX_PATH ];
char szSoundDirectory[_MAX_PATH];
char p_szCommanLine[500];
char cChar;
// char cFirst=1;
char cDebug=1;
char cErrorCode;
FILE *pFile;
char *p_cSeparator ;
GetCurrentDirectory(_MAX_PATH, szDir);
SetCurrentDirectory(sInitialDir);
strcpy(szCurrentDir, sInitialDir);
strcpy(p_szCommanLine, "-dir:");
strcat(p_szCommanLine, szDestBinDir);
strcat(p_szCommanLine, " -level:");
strcat(p_szCommanLine, sString);
strcat(p_szCommanLine, " -first:");
if (!strcmp(sLevel[0], sString))
strcat(p_szCommanLine, "1");
else
strcat(p_szCommanLine, "0");
strcat(p_szCommanLine, " -version:Glide ");
strcat(p_szCommanLine, "-debug:");
if (bDebug)
strcat(p_szCommanLine, "1");
else
strcat(p_szCommanLine, "0");
strcat(p_szCommanLine, "-dsc:");
if (bDsc)
strcat(p_szCommanLine, "2");
else
strcat(p_szCommanLine, "1");
/* directory of the binarized data */
if(strstr(p_szCommanLine,"-dir:"))
sscanf(strstr(p_szCommanLine,"-dir:")+5,"%s",szDirName);
else
return 0;
/* the level that we want to binarize*/
if(strstr(p_szCommanLine,"-level:"))
{
sscanf(strstr(p_szCommanLine,"-level:")+7,"%s",szTempName);
strcpy(szLevelName, _strupr(szTempName));
}
else
return 0;
/*
if(strstr(p_szCommanLine,"-first:"))
{
sscanf(strstr(p_szCommanLine,"-first:")+7,"%s",cChar1);
cChar1[1] = '\0';
if (strcmp(cChar1, "0")==0)
cFirst = 0;
}
*/
if(strstr(p_szCommanLine,"-debug:"))
{
sscanf(strstr(p_szCommanLine,"-debug:")+7,"%c",&cChar);
if (strcmp(&cChar, "0")==0)
cDebug = 0;
}
if(strstr(p_szCommanLine,"-version:"))
{
sscanf(strstr(p_szCommanLine,"-version:")+9,"%s",szTempName);
}
else
return 0;
strcpy( szProgramName, g_stInitialData.szExeFile );
/*
* path of the binary directory
*/
strcpy(szBinDirectory, szDirName);
/*
* path of the levels directory (source)
*/
//dir source + World\\levels
strcpy(szLevelsDirectory, g_stInitialData.szSource);
strcat(szLevelsDirectory, "\\World\\levels");
//Mihaela Tancu - New
/*
* Convert and Copy the graphics\Texture directory
*/
// if( cFirst )
// fn_vCopyTextures( szCurrentDir, szDestBinDir, bConvTextures );
//Mihaela Tancu - New
// ANNECY MT - 15/02/99 {
/*
* path of sound directory (source)
*/
pFile = fopen("SoundVersion.ini","rt");
if(pFile)
{
fgets(szSoundDirectory,_MAX_PATH,pFile);
if(szSoundDirectory[ strlen(szSoundDirectory) - 1] == 0x0a)
szSoundDirectory[ strlen(szSoundDirectory) - 1] = 0;
fclose(pFile);
}
else
{
pFile = fopen("Version.ini","rt");
if(pFile)
{
fgets(szSoundDirectory,255,pFile);
p_cSeparator = strchr (szSoundDirectory,',');
if (p_cSeparator)
{
*p_cSeparator = 0;
}
else if(szSoundDirectory[ strlen(szSoundDirectory) - 1] == 0x0a)
{
szSoundDirectory[ strlen(szSoundDirectory) - 1] = 0;
}
}
}
// END ANNECY MT }
//Mihaela Tancu - Binary!!!
strcpy(szFileName, szCurrentDir);
strcat(szFileName, "\\StartPrg.ini");
remove(szFileName);
//Mihaela Tancu - Binary!!!
/*
* First Pass
*/
m_fn_ComRes_vWriteLine( " First Pass for ", C_ComRes_cErrorLine ,&m_oRichEditRes, &m_stCharFormatRes);
m_fn_ComRes_vWriteLine( szProgramName, C_ComRes_cErrorLine ,&m_oRichEditRes, &m_stCharFormatRes);
m_fn_ComRes_vWriteLine( "\n", C_ComRes_cErrorLine ,&m_oRichEditRes, &m_stCharFormatRes);
SetCurrentDirectory(szCurrentDir);
strcpy(szTempName, szCurrentDir);
strcat(szTempName, "\\");
strcat(szTempName, szProgramName);
//Mihaela Tancu
if (bDsc)
cErrorCode = fn_cExecuteGameFirst(szTempName, szLevelName, C_BinPass1);
else
cErrorCode = fn_cExecuteGame(szTempName, szLevelName, C_BinPass1);
if (cErrorCode != 0)
{
char szErrorString[500];
sprintf( szErrorString, "Error: Program exited with error code %i\n", (int)cErrorCode );
m_fn_ComRes_vWriteLine( szErrorString, C_ComRes_cOkLine ,&m_oRichEditRes, &m_stCharFormatRes);
return -1;
}
//Mihaela Tancu
RedrawWindow(NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW );
/*
* copy some files created in the level directory
*/
m_fn_ComRes_vWriteLine( " Copy files from level directory...\n", C_ComRes_cErrorLine ,&m_oRichEditRes, &m_stCharFormatRes);
strcpy(szTempDir, szLevelsDirectory);
strcat(szTempDir, "\\");
strcat(szTempDir, szLevelName);
fn_cCopyAnyFilesOfADirectory(szTempDir,szCurrentDir,"0");
/*
* copy some files created in the Gamedata directory
*/
m_fn_ComRes_vWriteLine( " Copy files from gamedata directory...\n", C_ComRes_cErrorLine ,&m_oRichEditRes, &m_stCharFormatRes);
fn_cCopyAnyFilesOfADirectory(szLevelsDirectory,szCurrentDir,"0");
/*
* Second pass
*/
m_fn_ComRes_vWriteLine( " Second Pass for ", C_ComRes_cErrorLine ,&m_oRichEditRes, &m_stCharFormatRes);
m_fn_ComRes_vWriteLine( szProgramName, C_ComRes_cErrorLine ,&m_oRichEditRes, &m_stCharFormatRes);
m_fn_ComRes_vWriteLine( "\n", C_ComRes_cErrorLine ,&m_oRichEditRes, &m_stCharFormatRes);
if ( (cErrorCode = fn_cExecuteGame(szTempName, szLevelName, C_BinPass2)) !=0 )
{
char szErrorString[500];
sprintf( szErrorString, " Error: Program exited with error code %i\n", (int)cErrorCode );
m_fn_ComRes_vWriteLine( szErrorString, C_ComRes_cOkLine ,&m_oRichEditRes, &m_stCharFormatRes);
return -1;
}
RedrawWindow(NULL,NULL, RDW_INVALIDATE |RDW_UPDATENOW );
/*
* copy some files created in the level directory
*/
m_fn_ComRes_vWriteLine( " Copy files from level directory...\n", C_ComRes_cErrorLine ,&m_oRichEditRes, &m_stCharFormatRes);
fn_cCopyAnyFilesOfADirectory(szTempDir,szCurrentDir,"1");
/*
* copy some files created in the Gamedata directory
*/
m_fn_ComRes_vWriteLine( " Copy files from gamedata directory...\n", C_ComRes_cErrorLine ,&m_oRichEditRes, &m_stCharFormatRes);
fn_cCopyAnyFilesOfADirectory(szLevelsDirectory,szCurrentDir,"1");
strcpy(szTempName,szCurrentDir); // YLG modif
strcat(szTempName, "\\");
strcat(szTempName, C_CRBExecutable);
//Mihaela Tancu - FIX
if (bFirstLevel)
{
/*
* CRB on fix
*/
m_fn_ComRes_vWriteLine( " Execute CRB on Fix\n", C_ComRes_cErrorLine ,&m_oRichEditRes, &m_stCharFormatRes);
fn_cExecuteCRB(szTempName, "Fix");
RedrawWindow(NULL,NULL, RDW_INVALIDATE |RDW_UPDATENOW );
}
//Mihaela Tancu - FIX
/*
* CRB on Level
*/
m_fn_ComRes_vWriteLine( " Execute CRB on Level\n", C_ComRes_cErrorLine ,&m_oRichEditRes, &m_stCharFormatRes);
fn_cExecuteCRB(szTempName, szLevelName);
RedrawWindow(NULL,NULL, RDW_INVALIDATE |RDW_UPDATENOW );
/*
* Create the bin directory and copy the binarized data
*/
m_fn_ComRes_vWriteLine( " Copy the binarized files to the bin directory...\n", C_ComRes_cErrorLine ,&m_oRichEditRes, &m_stCharFormatRes);
SAVE_fn_bCreateDirectory(szBinDirectory);
strcpy(szTempName,szBinDirectory);
strcat(szTempName,"\\");
strcat(szTempName,C_World);
SAVE_fn_bCreateDirectory(szTempName);
strcat(szTempName,"\\");
strcat(szTempName,C_Levels);
SAVE_fn_bCreateDirectory(szTempName);
if (bFirstLevel)
//Mihaela Tancu - FIX
// {
fn_cCopyBinarizedFiles(szCurrentDir, szTempName, "FIX");
strcat(szTempName,"\\");
strcat(szTempName,szLevelName);
SAVE_fn_bCreateDirectory(szTempName);
fn_cCopyBinarizedFiles(szCurrentDir, szTempName, szLevelName);
// }
//Mihaela Tancu - FIX
//Mihaela Tancu - FIX
// if (bFirstLevel)
// {
//delete the files related with fix, from cpa/exe/main and cpa/exe/main/gamedata/world/levels
WIN32_FIND_DATA stFindData;
HANDLE hFind;
char a256_cFileFound[256];
char a4_cFileExtension[256];
char a256_cSrcDirectory[256];
char a256_cTmpFile[256];
char a256_cFileName[256];
strcpy(a256_cSrcDirectory,szCurrentDir);
strcat(a256_cSrcDirectory,"\\*.*");
if( (hFind = FindFirstFile(a256_cSrcDirectory, &stFindData )) == INVALID_HANDLE_VALUE)
return 0;
strcpy(a256_cTmpFile,szLevelName);
strcat(a256_cTmpFile, "0");
do
{
if(! ( stFindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY ))
{
strcpy(a256_cFileName, _strupr(stFindData.cFileName));
fn_vGetFileExtension( a256_cFileName, a4_cFileExtension);
if ((strcmp(a4_cFileExtension,"RTB")==0) ||
(strcmp(a4_cFileExtension,"RTS")==0) ||
(strcmp(a4_cFileExtension,"RTT")==0) ||
(strcmp(a4_cFileExtension,"RTP")==0) ||
(strcmp(a4_cFileExtension,"RTV")==0) ||
(strcmp(a4_cFileExtension,"RTL")==0)
)
{
if (strstr(stFindData.cFileName, szLevelName))
{
strcpy(a256_cFileFound, szCurrentDir);
strcat(a256_cFileFound,"\\");
strcat(a256_cFileFound,a256_cFileName);
remove(a256_cFileFound);
}
else
{
if (strcmp(a256_cFileName, "FIXLVL.RTB")==0)
{
strcpy(a256_cFileFound, szCurrentDir);
strcat(a256_cFileFound,"\\");
strcat(a256_cFileFound,a256_cFileName);
remove(a256_cFileFound);
}
}
}
else
{ if ((strcmp(a4_cFileExtension,"SNA")==0) ||
(strcmp(a4_cFileExtension,"GPT")==0) ||
(strcmp(a4_cFileExtension,"SND")==0) ||
(strcmp(a4_cFileExtension,"PTX")==0) ||
(strcmp(a4_cFileExtension,"VGM")==0) ||
((strcmp(a4_cFileExtension,"DSB")==0) && bDsc) ||
(strcmp(a4_cFileExtension,"LSY")==0) )
{
strcpy(a256_cFileFound, szCurrentDir);
strcat(a256_cFileFound,"\\");
strcat(a256_cFileFound,a256_cFileName);
remove(a256_cFileFound);
}
}
}
} while(FindNextFile( hFind, &stFindData ));
FindClose( hFind );
strcpy(a256_cSrcDirectory,szCurrentDir);
strcat(a256_cSrcDirectory,"\\gamedata\\world\\levels\\*.*");
if( (hFind = FindFirstFile(a256_cSrcDirectory, &stFindData )) == INVALID_HANDLE_VALUE)
return 0;
strcpy(a256_cTmpFile,szLevelName);
strcat(a256_cTmpFile, "0");
do
{
if(! ( stFindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY ))
{
strcpy(a256_cFileName, _strupr(stFindData.cFileName));
fn_vGetFileExtension( a256_cFileName, a4_cFileExtension);
if ((strcmp(a4_cFileExtension,"RTB")==0) ||
(strcmp(a4_cFileExtension,"RTS")==0) ||
(strcmp(a4_cFileExtension,"RTT")==0) ||
(strcmp(a4_cFileExtension,"RTP")==0) ||
(strcmp(a4_cFileExtension,"RTV")==0) ||
(strcmp(a4_cFileExtension,"RTL")==0)
)
{
strcpy(a256_cFileFound, szCurrentDir);
strcat(a256_cFileFound,"\\gamedata\\world\\levels\\");
strcat(a256_cFileFound,a256_cFileName);
remove(a256_cFileFound);
}
else
{
if ((strcmp(a4_cFileExtension,"SNA")==0) ||
(strcmp(a4_cFileExtension,"GPT")==0) ||
(strcmp(a4_cFileExtension,"SND")==0) ||
(strcmp(a4_cFileExtension,"PTX")==0) ||
(strcmp(a4_cFileExtension,"VGM")==0) ||
((strcmp(a4_cFileExtension,"DSB")==0) && bDsc) ||
(strcmp(a4_cFileExtension,"LSY")==0)
)
{
strcpy(a256_cFileFound, szCurrentDir);
strcat(a256_cFileFound,"\\gamedata\\world\\levels\\");
strcat(a256_cFileFound,a256_cFileName);
remove(a256_cFileFound);
}
}
}
} while(FindNextFile( hFind, &stFindData ));
FindClose( hFind );
// }
//Mihaela Tancu - FIX
/*
* copy files from gamedata root
*/
RedrawWindow(NULL,NULL, RDW_INVALIDATE |RDW_UPDATENOW );
if (bFirstLevel)
{
strcpy(szTempDir,szBinDirectory);
strcpy(szDirName,szCurrentDir);
strcat(szDirName,"\\Gamedata");
SAVE_fn_bMoveDirectory(szDirName, szTempDir, FALSE, "*.*");
if (!bDsc)
{
strcpy(szFile, szDirName);
strcat(szFile, "\\Game.dsb");
remove(szFile);
}
m_fn_ComRes_vWriteLine( " Copy Sound directory\n", C_ComRes_cErrorLine ,&m_oRichEditRes, &m_stCharFormatRes);
/*
* Copy sound directory
*/
strcpy(szTempName,szBinDirectory);
strcat(szTempName,"\\");
strcat(szTempName,C_World);
strcpy(szTempDir, szTempName);
strcat(szTempDir,"\\Sound");
// ANNECY MT - 15/02/99 {
// Copy GameData Directory
strcpy(szDirName,szCurrentDir);
strcat(szDirName,"\\GameData\\World\\Sound");
SAVE_fn_bCopyDirectory(szDirName, szTempDir, TRUE, "*.*");
// Copy Specific Directory
strcpy(szDirName,szCurrentDir);
strcat(szDirName,"\\");
strcat(szDirName,szSoundDirectory);
strcat(szDirName,"\\World\\Sound");
SAVE_fn_bCopyDirectory(szDirName, szTempDir, TRUE, "*.*");
// END ANNECY MT }
}
fn_bDeleteTemporaryFiles(szCurrentDir, szLevelName);
RedrawWindow(NULL,NULL, RDW_INVALIDATE |RDW_UPDATENOW );
SetCurrentDirectory(szDir);
return 0;
}
/*
=======================================================================================
Name: OnButtonRelease
Description: Function for changing the result directory if the release radio button is set
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::OnButtonRelease()
{
char _szMessage[5000];
BOOL bSet=TRUE, bDisplay=FALSE;
if (((CButton *)GetDlgItem(IDC_BUTTON_RELEASE))->GetCheck())
{
((CButton *)GetDlgItem(IDC_BUTTON_RELEASE))->SetCheck(1);
bDebug = FALSE;
/* if (b3DCard)
if (bDebug)
{ if (!SetCurrentDirectory( g_stInitialData.szDestBinDD3D ))
GetDlgItem(IDC_EDIT_DESTBIND)->SetWindowText( "" );
m_fn_vShowPartialWarning(SetCurrentDirectory( g_stInitialData.szDestBinDD3D ),"DestBinDD3D", _szMessage, &bDisplay, IDC_EDIT_DESTBIND, g_stInitialData.szDestBinDD3D);
}
else
{
if (!SetCurrentDirectory( g_stInitialData.szDestBinRD3D ))
GetDlgItem(IDC_EDIT_DESTBIND)->SetWindowText( "" );
m_fn_vShowPartialWarning(SetCurrentDirectory( g_stInitialData.szDestBinRD3D ),"DestBinRD3D", _szMessage, &bDisplay, IDC_EDIT_DESTBIND, g_stInitialData.szDestBinRD3D);
}
else
*/ if (bDebug)
{
if (!SetCurrentDirectory( g_stInitialData.szDestBinDDFX ))
GetDlgItem(IDC_EDIT_DESTBIND)->SetWindowText( "" );
m_fn_vShowPartialWarning(SetCurrentDirectory( g_stInitialData.szDestBinDDFX ),"DestBinDDFX", _szMessage, &bDisplay, IDC_EDIT_DESTBIND, g_stInitialData.szDestBinDDFX);
}
else
{
if (!SetCurrentDirectory( g_stInitialData.szDestBinRDFX ))
GetDlgItem(IDC_EDIT_DESTBIND)->SetWindowText( "" );
m_fn_vShowPartialWarning(SetCurrentDirectory( g_stInitialData.szDestBinRDFX ),"DestBinRDFX", _szMessage, &bDisplay, IDC_EDIT_DESTBIND, g_stInitialData.szDestBinRDFX);
}
GetDlgItem(IDC_EDIT_DESTBIND)->GetWindowText(szDestBinDir, 256);
if (!bAuto) // YLG Correction
fn_IniData_vGetDatasFromStartFile(TRUE);
if (!strcmp(g_stInitialData.szExeFile, ""))
GetDlgItem(IDC_EDIT_EXEC)->SetWindowText( "" );
else
GetDlgItem(IDC_EDIT_EXEC)->SetWindowText( g_stInitialData.szExeFile );
}
}
/*
=======================================================================================
Name: OnMeasureItem
Description: Handle function for message WM_MEASUREITEM
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::OnMeasureItem(int nIDCtl, LPMEASUREITEMSTRUCT lpMeasureItemStruct)
{
CDialog::OnMeasureItem(nIDCtl, lpMeasureItemStruct);
}
/*
=======================================================================================
Name: OnSelchangeListObject
Description: Handle function for message LBN_SELCHANGE in list box with objects
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::OnSelchangeListObject()
{
}
/*
=======================================================================================
Name: OnLButtonDownListBoxObject
Description: Handle function for message WM_LBUTTONDOWN on ListBox Name (objects)
Author: Mihaela Tancu
=======================================================================================
*/
BOOL CDlgMain::OnLButtonDownListBoxObject(MSG *pMsg)
{
CListBox *pLB = m_oListObject;
POINT xPos;
CRect oRect;
BOOL bOutside;
int iIndex;
BOOL bResult = TRUE;
//get the x and y coordinates
xPos.x = LOWORD(pMsg->lParam);
xPos.y = HIWORD(pMsg->lParam);
iIndex = pLB -> ItemFromPoint ( xPos, bOutside ) ;
pLB -> GetItemRect ( iIndex , &oRect ) ;
if( (oRect . PtInRect ( xPos ) ) && ( xPos.x < 16 ) )
{ //determine the object under the cursor in front of which the user clicked
GI_Item *p_oItem = (GI_Item*) pLB->GetItemData( iIndex );
ASSERT( p_oItem ) ;
//and if the user click in front change the activation (validate/invalidate the activation).
if( m_fn_bOnChangeActivation ( p_oItem, iIndex ) )
bResult = TRUE;
else
bResult = CDialog::PreTranslateMessage(pMsg);
}
else
bResult = CDialog::PreTranslateMessage(pMsg);
return bResult;
}
/*
=======================================================================================
Name: OnKeyDownListBoxObject
Description: Handle function for message WM_KEYDOWN on ListBox Name (objects)
Author: Mihaela Tancu
=======================================================================================
*/
BOOL CDlgMain::OnKeyDownListBoxObject(MSG *pMsg)
{
return TRUE;
}
/*
=======================================================================================
Name: OnInitDialog
Description: Handle function for message WM_INITDIALOG
Author: Mihaela Tancu
=======================================================================================
*/
BOOL CDlgMain::OnInitDialog()
{
RECT stRect;
RECT stDlgRect;
long lDlgWidth;
long lDlgHeight;
char fVersion[9] = "1.0";
char sConfFile[50];
char sRead[256], *p_char;
char sLevels[50][256];
char szSel[50][50];
int iNbSel=0, i, iNbSeq=0;
GI_Item *p_oItem;
GI_Type *p_oType;
char szExeFile[50][256];
char szSource[50][256];
char szDestBinRDFX[50][256];
char sVersion[50][256];
char sOption[25][5];
char sBinAnims[25][5];
char sBinTextures[25][5];
char sBinLevels[25][5];
char sBatch[25][5];
char sAll[25][5];
char sTbl[25][5];
char sBMP[25][5];
char sTGA[25][5];
char sConvert16[25][5];
char sConvert32[25][5];
//
CDialog::OnInitDialog();
MLT_vInitSystem();
GetCurrentDirectory(256, sInitialDir);
// obtained the height and the width of the main window
GetClientRect( &stDlgRect );
lDlgWidth = stDlgRect.right - stDlgRect.left + 1;
lDlgHeight = stDlgRect.bottom - stDlgRect.top + 1;
// for every edit box in the window save its left position
for (int iEdit = 0; iEdit < m_cNbEditBox; iEdit ++)
{
GetDlgItem(m_a_uiEditControls[iEdit])->GetWindowRect( &stRect );
m_a_iSizeLeft[iEdit] = lDlgWidth - (stRect.right - stRect.left + 1);
}
/*
=======================================================================================
* Create RichEditControl result
=======================================================================================
*/
// Create a richEdit control in the result panel
GetDlgItem( IDC_STATIC_RESULTEDIT)->GetWindowRect( &stRect );
m_oRichEditRes.Create
(
WS_BORDER | WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL | ES_MULTILINE | ES_AUTOVSCROLL | ES_WANTRETURN | ES_AUTOHSCROLL | ES_READONLY,
stRect,
this,
IDC_RICHEDIT_RESULT
);
m_oRichEditRes.SetBackgroundColor( FALSE, RGB( 255, 255,255) );
m_oRichEditRes.GetDefaultCharFormat( m_stCharFormatRes );
m_stCharFormatRes.dwEffects = 0;
m_stCharFormatRes.crTextColor = RGB(255,255,255);
strcpy ( m_stCharFormatRes.szFaceName, "Arial" );
m_stCharFormatRes.dwMask = CFM_COLOR | CFM_BOLD | CFM_FACE;
m_oRichEditRes.SetDefaultCharFormat( m_stCharFormatRes );
/*
=======================================================================================
* Create RichEditControl command
=======================================================================================
*/
// the same for the command rich edit control
GetDlgItem( IDC_STATIC_COMMANDEDIT)->GetWindowRect( &stRect );
stRect.top -= 23;
m_oRichEditCom.Create
(
WS_BORDER | WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL | ES_MULTILINE | ES_AUTOVSCROLL | ES_WANTRETURN | ES_AUTOHSCROLL | ES_READONLY,
stRect,
this,
IDC_RICHEDIT_COMMAND
);
m_oRichEditCom.SetBackgroundColor( FALSE, RGB( 255, 255,255) );
m_oRichEditCom.GetDefaultCharFormat( m_stCharFormatCom );
m_stCharFormatCom.dwEffects = 0;
m_stCharFormatCom.crTextColor = RGB(0,0,0);
strcpy ( m_stCharFormatCom.szFaceName, "Arial" );
m_stCharFormatCom.dwMask = CFM_COLOR | CFM_BOLD | CFM_FACE;
m_oRichEditCom.SetDefaultCharFormat( m_stCharFormatCom );
// the position and size of the main window
//Mihaela Tancu - New auto
strcpy(sConfFile, sInitialDir);
strcat(sConfFile, "\\Auto.ini");
FILE *f;
if (_access( sConfFile, 0) != -1) // if the configuration file exists
{
// fn_IniData_vGetDatasFromFile( TRUE );
bAuto = TRUE; // YLG Correction
bYes = TRUE;
bDsc = TRUE;
bBatch = FALSE; bAll = FALSE; bTbl = FALSE;
bBMP = FALSE; bTGA = FALSE; bConvert16 = FALSE; bConvert32 = FALSE;
// read the file
f = fopen(sConfFile, "r");
while(fgets(sRead, 256, f) != NULL)
{
if (strstr(sRead, "ExeFile"))
{
strcpy(szExeFile[iNbSeq], sRead+8);
szExeFile[iNbSeq][strlen(szExeFile[iNbSeq])-1]='\0';
}
if (strstr(sRead, "SourceDir"))
{
strcpy(szSource[iNbSeq], sRead+10);
szSource[iNbSeq][strlen(szSource[iNbSeq])-1]='\0';
}
if (strstr(sRead, "DestDir"))
{
strcpy(szDestBinRDFX[iNbSeq], sRead+8);
szDestBinRDFX[iNbSeq][strlen(szDestBinRDFX[iNbSeq])-1]='\0';
}
if (strstr(sRead, "Version"))
{
strcpy(sVersion[iNbSeq], sRead+8);
sVersion[iNbSeq][strlen(sVersion[iNbSeq])-1]='\0';
}
if (strstr(sRead, "Options"))
{
strcpy(sOption[iNbSeq], sRead+8);
sOption[iNbSeq][strlen(sOption[iNbSeq])-1]='\0';
}
if (strstr(sRead, "BinAnims"))
{
strcpy(sBinAnims[iNbSeq], sRead+9);
sBinAnims[iNbSeq][strlen(sBinAnims[iNbSeq])-1]='\0';
}
if (strstr(sRead, "Batch"))
{
strcpy(sBatch[iNbSeq], sRead+6);
sBatch[iNbSeq][strlen(sBatch[iNbSeq])-1]='\0';
}
if (strstr(sRead, "All"))
{
strcpy(sAll[iNbSeq], sRead+4);
sAll[iNbSeq][strlen(sAll[iNbSeq])-1]='\0';
}
if (strstr(sRead, "Tbl"))
{
strcpy(sTbl[iNbSeq], sRead+4);
sTbl[iNbSeq][strlen(sTbl[iNbSeq])-1]='\0';
}
if (strstr(sRead, "BinTextures"))
{
strcpy(sBinTextures[iNbSeq], sRead+12);
sBinTextures[iNbSeq][strlen(sBinTextures[iNbSeq])-1]='\0';
}
if (strstr(sRead, "BinLevels"))
{
strcpy(sBinLevels[iNbSeq], sRead+10);
sBinLevels[iNbSeq][strlen(sBinLevels[iNbSeq])-1]='\0';
}
/* if (strstr(sRead, "Used"))
{
strcpy(sUsed[iNbSeq], sRead+5);
sUsed[iNbSeq][strlen(sUsed[iNbSeq])-1]='\0';
}
*/
if (strstr(sRead, "BMP"))
{
strcpy(sBMP[iNbSeq], sRead+4);
sBMP[iNbSeq][strlen(sBMP[iNbSeq])-1]='\0';
}
if (strstr(sRead, "TGA"))
{
strcpy(sTGA[iNbSeq], sRead+4);
sTGA[iNbSeq][strlen(sTGA[iNbSeq])-1]='\0';
}
if (strstr(sRead, "Convert16"))
{
strcpy(sConvert16[iNbSeq], sRead+10);
sConvert16[iNbSeq][strlen(sConvert16[iNbSeq])-1]='\0';
}
if (strstr(sRead, "Convert32"))
{
strcpy(sConvert32[iNbSeq], sRead+10);
sConvert32[iNbSeq][strlen(sConvert32[iNbSeq])-1]='\0';
}
if (strstr(sRead, "Maps"))
{ strcpy(sLevels[iNbSeq], sRead);
}
if (strstr(sRead, "END")) //it is the end of the sequence
{
iNbSeq++;
//get all data
// convert the levels
}
}
strcpy(g_stInitialData.szExeFile, szExeFile[0]);
strcpy(g_stInitialData.szSource, szSource[0]);
strcpy(sSource, g_stInitialData.szSource);
// if (!strcmp(sOption[0], "DFX"))
{ //b3DCard = FALSE;
if (!stricmp(sVersion[0], "Debug"))
{ bDebug = TRUE;
strcpy(g_stInitialData.szDestBinDDFX, szDestBinRDFX[0]);
strcpy(szDestBinDir, szDestBinRDFX[0]);
}
else if (!stricmp(sVersion[0], "Release"))
{ bDebug = FALSE;
strcpy(g_stInitialData.szDestBinRDFX, szDestBinRDFX[0]);
strcpy(szDestBinDir, szDestBinRDFX[0]);
}
}
/* else if (!strcmp(sOption[0], "D3D"))
{ b3DCard = TRUE;
if (!stricmp(sVersion[0], "Debug"))
{ bDebug = TRUE;
strcpy(g_stInitialData.szDestBinDD3D, szDestBinRDFX[0]);
strcpy(szDestBinDir, szDestBinRDFX[0]);
}
else if (!stricmp(sVersion[0], "Release"))
{ bDebug = FALSE;
strcpy(g_stInitialData.szDestBinRD3D, szDestBinRDFX[0]);
strcpy(szDestBinDir, szDestBinRDFX[0]);
}
}
*/
if (!strcmp(sBinAnims[0], "1"))
{ bConvAnim = TRUE;
if (!strcmp(sBatch[0], "1"))
bBatch = TRUE;
else
bBatch = FALSE;
if (!strcmp(sAll[0], "1"))
bAll = TRUE;
else
bAll = FALSE;
if (!strcmp(sTbl[0], "1"))
bTbl = TRUE;
else
bTbl = FALSE;
}
else
bConvAnim = FALSE;
if (!strcmp(sBinTextures[0], "1"))
{ bConvTextures = TRUE;
if (!strcmp(sBMP[0], "1"))
bBMP = TRUE;
else
bBMP = FALSE;
if (!strcmp(sTGA[0], "1"))
bTGA = TRUE;
else
bTGA = FALSE;
if (!strcmp(sConvert16[0], "1"))
bConvert16 = TRUE;
else
bConvert16 = FALSE;
if (!strcmp(sConvert32[0], "1"))
bConvert32 = TRUE;
else
bConvert32 = FALSE;
}
else
bConvTextures = FALSE;
if (!strcmp(sBinLevels[0], "1"))
bConvLevels = TRUE;
else
bConvLevels = FALSE;
/* if (!strcmp(sUsed[0], "1"))
bUsed = TRUE;
else
bUsed = FALSE;
*/
fclose(f);
fn_IniData_vGetWindowPosSize();
if (!bAuto) // YLG Correction
fn_IniData_vGetDatasFromStartFile(TRUE);
}
else
//Mihaela Tancu - New auto
{
bAuto = FALSE; // YLG Correction
fn_IniData_vGetDatasFromFile( TRUE );
strcpy(sSource, g_stInitialData.szSource);
}
m_fn_bWarningUser();
//insert the panels
TC_ITEM TabCtrlItem;
TabCtrlItem.mask = TCIF_TEXT;
TabCtrlItem.pszText = "Directories";
m_oPanel.InsertItem( 0, &TabCtrlItem );
TabCtrlItem.pszText = "Selection";
m_oPanel.InsertItem( 1, &TabCtrlItem );
TabCtrlItem.pszText = "Result";
m_oPanel.InsertItem( 2, &TabCtrlItem );
char szVersion[25], *p_szVersion;
p_szVersion = szVersion + GetDlgItem( IDC_STATIC_VERS1)->GetWindowText( szVersion, 20);
*p_szVersion++ = ' ';
strcpy( p_szVersion, fVersion );
GetDlgItem( IDC_STATIC_VERS1)->SetWindowText( szVersion);
// at initializing show only the buttons for the first panel (Directories)
m_fn_TabC_vShowControlsPanelDir() ;
m_oListType = (CListBox *)GetDlgItem(IDC_LIST1);
m_oListObject = (CListBox *)GetDlgItem(IDC_LIST2);
m_fn_vUpdateAll();
// show the window with its position and size
m_bInit = TRUE;
MoveWindow( &g_stWinPosSize.stMainPos );
if (!bDebug)
((CButton *)GetDlgItem(IDC_BUTTON_RELEASE))->SetCheck(1);
else
((CButton *)GetDlgItem(IDC_BUTTON_DEBUG))->SetCheck(1);
/* if (!b3DCard)
((CButton *)GetDlgItem(IDC_BUTTON_DFX))->SetCheck(1);
else
((CButton *)GetDlgItem(IDC_BUTTON_D3D))->SetCheck(1);
*/
if (!bFix1)
((CButton *)GetDlgItem(IDC_BUTTON_FIX))->SetCheck(0);
else
((CButton *)GetDlgItem(IDC_BUTTON_FIX))->SetCheck(1);
if (bConvAnim)
((CButton *)GetDlgItem(IDC_BUTTON_CONVANI))->SetCheck(1);
else
((CButton *)GetDlgItem(IDC_BUTTON_CONVANI))->SetCheck(0);
if (bConvTextures)
((CButton *)GetDlgItem(IDC_BUTTON_CONVTEX))->SetCheck(1);
else
((CButton *)GetDlgItem(IDC_BUTTON_CONVTEX))->SetCheck(0);
if (bConvLevels)
((CButton *)GetDlgItem(IDC_BUTTON_CONVLEVEL))->SetCheck(1);
else
((CButton *)GetDlgItem(IDC_BUTTON_CONVLEVEL))->SetCheck(0);
if (bBatch)
((CButton *)GetDlgItem(IDC_BUTTON_USED))->SetCheck(1);
else
((CButton *)GetDlgItem(IDC_BUTTON_USED))->SetCheck(0);
if (bAll)
((CButton *)GetDlgItem(IDC_BUTTON_A))->SetCheck(1);
else
((CButton *)GetDlgItem(IDC_BUTTON_A))->SetCheck(0);
if (bTbl)
((CButton *)GetDlgItem(IDC_BUTTON_Z))->SetCheck(1);
else
((CButton *)GetDlgItem(IDC_BUTTON_Z))->SetCheck(0);
if (bBMP)
((CButton *)GetDlgItem(IDC_BUTTON_BMP))->SetCheck(1);
else
((CButton *)GetDlgItem(IDC_BUTTON_BMP))->SetCheck(0);
if (bTGA)
((CButton *)GetDlgItem(IDC_BUTTON_TGA))->SetCheck(1);
else
((CButton *)GetDlgItem(IDC_BUTTON_TGA))->SetCheck(0);
if (bConvert16)
((CButton *)GetDlgItem(IDC_BUTTON_C16))->SetCheck(1);
else
((CButton *)GetDlgItem(IDC_BUTTON_C16))->SetCheck(0);
if (bConvert32)
((CButton *)GetDlgItem(IDC_BUTTON_C32))->SetCheck(1);
else
((CButton *)GetDlgItem(IDC_BUTTON_C32))->SetCheck(0);
//Mihaela Tancu - New auto
if (bDsc)
((CButton *)GetDlgItem(IDC_BUTTON_BIN))->SetCheck(1);
else
((CButton *)GetDlgItem(IDC_BUTTON_BIN))->SetCheck(0);
//Mihaela Tancu - New auto
GetDlgItem(IDC_EDIT_DESTBIND)->GetWindowText(szDestBinDir, 256);
GetDlgItem(IDC_EDIT_EXEC)->SetWindowText(g_stInitialData.szExeFile );
// init others modules (ERM MMG SCR)
fn_v_InitMemV6i();
//*** ACP initialisations ***
TMP_fn_vFirstInit();
// FIL_fn_vFirstInit();
//Mihaela Tancu - New auto
if (bYes)
{
m_oPanel.SetCurSel(1);
m_fn_TabC_vShowControlsPanelSel() ;
RedrawWindow(NULL,NULL, RDW_INVALIDATE |RDW_UPDATENOW );
int iIndex = m_oListType->FindString(-1, "Levels");
if (iIndex==LB_ERR)
if (AfxMessageBox( "There is nothing to convert! Please, choose another type of object for conversion", MB_OK))
return FALSE;
m_oListType->SetCurSel(iIndex);
OnSelchangeListType() ;
for (int j=0; j<iNbSeq; j++)
{
iNbSel = 0;
p_char = strstr(sLevels[j], "=");
strcpy(sLevels[j], p_char + 1);
while ( (p_char = strstr(sLevels[j], ",")) != NULL)
{ strcpy(szSel[iNbSel], sLevels[j]);
szSel[iNbSel][strlen(sLevels[j])-strlen(p_char)]='\0';
strcpy(sLevels[j], p_char + 1);
iNbSel++;
}
strcpy(szSel[iNbSel], sLevels[j]);
szSel[iNbSel][strlen(szSel[iNbSel])-1]='\0';
iNbSel++;
iIndex = m_oListType->GetCurSel( );
p_oType = (GI_Type *)m_oListType->GetItemData( iIndex );
for (i=0; i<iNbSel; i++)
{
iIndex= m_oListObject->FindStringExact( -1, szSel[i] );
if (iIndex == LB_ERR)
continue;
p_oItem = (GI_Item *)m_oListObject->GetItemData( iIndex );
if (!p_oItem->m_bActived)
{ p_oType->m_iSelected++;
m_iCountOfSelections++;
}
p_oItem->m_bActived = TRUE;
}
// after modifying the state of the objects, enable/disable the selection buttons
m_fn_vEnableButtonAll();
m_fn_vEnableButtonConvert();
if (p_oType->m_iSelected==m_oListObject->GetCount())
GetDlgItem(IDC_BUTTON_ALLINLIST)->EnableWindow(FALSE);
else
GetDlgItem(IDC_BUTTON_ALLINLIST)->EnableWindow(TRUE);
if (p_oType->m_iSelected>0)
GetDlgItem(IDC_BUTTON_CLEAR)->EnableWindow(TRUE);
else
GetDlgItem(IDC_BUTTON_CLEAR)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_USED)->EnableWindow(((CListBox *)GetDlgItem(IDC_LIST1))->GetCount() && (m_p_oTypeAnims && m_p_oTypeAnims->m_iSelected) || (m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected && bConvAnim) );
GetDlgItem(IDC_BUTTON_A)->EnableWindow(((CListBox *)GetDlgItem(IDC_LIST1))->GetCount() && (m_p_oTypeAnims && m_p_oTypeAnims->m_iSelected) || (m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected && bConvAnim) );
GetDlgItem(IDC_BUTTON_Z)->EnableWindow(((CListBox *)GetDlgItem(IDC_LIST1))->GetCount() && (m_p_oTypeAnims && m_p_oTypeAnims->m_iSelected) || (m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected && bConvAnim) );
GetDlgItem(IDC_BUTTON_CONVANI)->EnableWindow(((CListBox *)GetDlgItem(IDC_LIST1))->GetCount()&& (m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected));
GetDlgItem(IDC_BUTTON_BMP)->EnableWindow(((CListBox *)GetDlgItem(IDC_LIST1))->GetCount() && (m_p_oTypeTextures && m_p_oTypeTextures->m_iSelected) || (m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected && bConvTextures) );
GetDlgItem(IDC_BUTTON_TGA)->EnableWindow(((CListBox *)GetDlgItem(IDC_LIST1))->GetCount() && (m_p_oTypeTextures && m_p_oTypeTextures->m_iSelected) || (m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected && bConvTextures) );
GetDlgItem(IDC_BUTTON_C16)->EnableWindow(((CListBox *)GetDlgItem(IDC_LIST1))->GetCount() && (m_p_oTypeTextures && m_p_oTypeTextures->m_iSelected) || (m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected && bConvTextures) );
GetDlgItem(IDC_BUTTON_C32)->EnableWindow(((CListBox *)GetDlgItem(IDC_LIST1))->GetCount() && (m_p_oTypeTextures && m_p_oTypeTextures->m_iSelected) || (m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected && bConvTextures) );
GetDlgItem(IDC_BUTTON_CONVTEX)->EnableWindow(((CListBox *)GetDlgItem(IDC_LIST1))->GetCount()&& (m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected));
GetDlgItem(IDC_BUTTON_AUTO)->EnableWindow(((CListBox *)GetDlgItem(IDC_LIST1))->GetCount() && (m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected));
if (m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected ||
/*bConvAnim && GetDlgItem(IDC_BUTTON_CONVANI)->IsWindowEnabled() ||
bConvTextures && GetDlgItem(IDC_BUTTON_CONVTEX)->IsWindowEnabled()||*/
m_p_oTypeAnims && m_p_oTypeAnims->m_iSelected ||
m_p_oTypeTextures && m_p_oTypeTextures->m_iSelected)
GetDlgItem(IDC_BUTTON_CONVERT)->EnableWindow(TRUE);
else
GetDlgItem(IDC_BUTTON_CONVERT)->EnableWindow(FALSE);
m_oListType->Invalidate(TRUE);
OnBinarise();
if (j != iNbSeq-1)
{ strcpy(g_stInitialData.szExeFile, szExeFile[j+1]);
strcpy(g_stInitialData.szSource, szSource[j+1]);
strcpy(sSource, g_stInitialData.szSource);
// strcpy(g_stInitialData.szDestBinRDFX, szDestBinRDFX[j+1]);
/* if (!stricmp(sVersion[j+1], "Debug"))
{ bDebug = TRUE;
strcpy(g_stInitialData.szDestBinDDFX, szDestBinRDFX[j+1]);
}
else if (!stricmp(sVersion[j+1], "Release"))
{ bDebug = FALSE;
strcpy(g_stInitialData.szDestBinRDFX, szDestBinRDFX[j+1]);
}
strcpy(szDestBinDir, szDestBinRDFX[j+1]);
*/
// if (!strcmp(sOption[j+1], "DFX"))
{ //b3DCard = FALSE;
if (!stricmp(sVersion[j+1], "Debug"))
{ bDebug = TRUE;
strcpy(g_stInitialData.szDestBinDDFX, szDestBinRDFX[j+1]);
strcpy(szDestBinDir, szDestBinRDFX[j+1]);
}
else if (!stricmp(sVersion[j+1], "Release"))
{ bDebug = FALSE;
strcpy(g_stInitialData.szDestBinRDFX, szDestBinRDFX[j+1]);
strcpy(szDestBinDir, szDestBinRDFX[j+1]);
}
}
/* else if (!strcmp(sOption[j+1], "D3D"))
{ b3DCard = TRUE;
if (!stricmp(sVersion[j+1], "Debug"))
{ bDebug = TRUE;
strcpy(g_stInitialData.szDestBinDD3D, szDestBinRDFX[j+1]);
strcpy(szDestBinDir, szDestBinRDFX[j+1]);
}
else if (!stricmp(sVersion[j+1], "Release"))
{ bDebug = FALSE;
strcpy(g_stInitialData.szDestBinRD3D, szDestBinRDFX[j+1]);
strcpy(szDestBinDir, szDestBinRDFX[j+1]);
}
}
*/
GetDlgItem( IDC_EDIT_SOURCE )->SetWindowText( g_stInitialData.szSource );
GetDlgItem( IDC_EDIT_DESTBIND )->SetWindowText( szDestBinDir );
GetDlgItem( IDC_EDIT_EXEC )->SetWindowText( g_stInitialData.szExeFile );
if (!bDebug)
{ ((CButton *)GetDlgItem(IDC_BUTTON_RELEASE))->SetCheck(1);
((CButton *)GetDlgItem(IDC_BUTTON_DEBUG))->SetCheck(0);
}
else
{ ((CButton *)GetDlgItem(IDC_BUTTON_RELEASE))->SetCheck(0);
((CButton *)GetDlgItem(IDC_BUTTON_DEBUG))->SetCheck(1);
}
/* if (!b3DCard)
{ ((CButton *)GetDlgItem(IDC_BUTTON_DFX))->SetCheck(1);
((CButton *)GetDlgItem(IDC_BUTTON_D3D))->SetCheck(0);
}
else
{ ((CButton *)GetDlgItem(IDC_BUTTON_DFX))->SetCheck(0);
((CButton *)GetDlgItem(IDC_BUTTON_D3D))->SetCheck(1);
}
*/ if (!strcmp(sBinAnims[j+1], "1"))
{ bConvAnim = TRUE;
if (!strcmp(sBatch[j+1], "1"))
{ bBatch = TRUE;
((CButton *)GetDlgItem(IDC_BUTTON_USED))->SetCheck(1);
}
else
{ bBatch = FALSE;
((CButton *)GetDlgItem(IDC_BUTTON_USED))->SetCheck(0);
}
if (!strcmp(sAll[j+1], "1"))
{ bAll = TRUE;
((CButton *)GetDlgItem(IDC_BUTTON_A))->SetCheck(1);
}
else
{ bAll = FALSE;
((CButton *)GetDlgItem(IDC_BUTTON_A))->SetCheck(0);
}
if (!strcmp(sTbl[j+1], "1"))
{ bTbl = TRUE;
((CButton *)GetDlgItem(IDC_BUTTON_Z))->SetCheck(1);
}
else
{ bTbl = FALSE;
((CButton *)GetDlgItem(IDC_BUTTON_Z))->SetCheck(0);
}
((CButton *)GetDlgItem(IDC_BUTTON_CONVANI))->SetCheck(1);
}
else
{ bConvAnim = FALSE;
((CButton *)GetDlgItem(IDC_BUTTON_CONVANI))->SetCheck(0);
}
if (!strcmp(sBinTextures[j+1], "1"))
{ bConvTextures = TRUE;
if (!strcmp(sBMP[j+1], "1"))
{ bBMP = TRUE;
((CButton *)GetDlgItem(IDC_BUTTON_BMP))->SetCheck(1);
}
else
{ bBMP = FALSE;
((CButton *)GetDlgItem(IDC_BUTTON_BMP))->SetCheck(0);
}
if (!strcmp(sTGA[j+1], "1"))
{ bTGA = TRUE;
((CButton *)GetDlgItem(IDC_BUTTON_TGA))->SetCheck(1);
}
else
{ bTGA = FALSE;
((CButton *)GetDlgItem(IDC_BUTTON_TGA))->SetCheck(0);
}
if (!strcmp(sConvert16[j+1], "1"))
{ bConvert16 = TRUE;
((CButton *)GetDlgItem(IDC_BUTTON_C16))->SetCheck(1);
}
else
{ bConvert16 = FALSE;
((CButton *)GetDlgItem(IDC_BUTTON_C16))->SetCheck(0);
}
if (!strcmp(sConvert32[j+1], "1"))
{ bConvert32 = TRUE;
((CButton *)GetDlgItem(IDC_BUTTON_C32))->SetCheck(1);
}
else
{ bConvert32 = FALSE;
((CButton *)GetDlgItem(IDC_BUTTON_C32))->SetCheck(0);
}
((CButton *)GetDlgItem(IDC_BUTTON_CONVTEX))->SetCheck(1);
}
else
{ bConvTextures = FALSE;
((CButton *)GetDlgItem(IDC_BUTTON_CONVTEX))->SetCheck(0);
}
if (!strcmp(sBinLevels[j+1], "1"))
{ bConvLevels = TRUE;
((CButton *)GetDlgItem(IDC_BUTTON_CONVLEVEL))->SetCheck(1);
}
else
{ bConvLevels = FALSE;
((CButton *)GetDlgItem(IDC_BUTTON_CONVLEVEL))->SetCheck(0);
}
}
//fn_IniData_vSetSource( g_stInitialData.szSource );
}
bYes = FALSE;
}
//Mihaela Tancu - New auto
return TRUE; // return TRUE unless you set the focus to a control
}
/*
=======================================================================================
Name: m_fn_vShowPartialWarning
Description: Show a message for the directories (if they don't exist or are not set)
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::m_fn_vShowPartialWarning(BOOL bSet, char *szPath, char *_szMessage, BOOL * bDisplay, int iID, char *szDir)
{
// if bSet, set the text in the edit box
// else, inform user that the directory (sub-directory) does not exist
if (bSet)
GetDlgItem(iID)->SetWindowText( szDir );
else
{ int iSize= strlen(_szMessage);
sprintf( _szMessage+iSize, "\tThe directory %s does not exist (or is not set). Please, choose another %s directory!\n\n", szPath, szPath );
GetDlgItem( iID ) ->SetWindowText( "");
strcpy(szDir, "");
*bDisplay = TRUE;
}
}
/*
=======================================================================================
Name: OnHelp
Description: Handle function for message BN_CLICKED on Help button
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::OnHelp()
{
// TODO: Add your control notification handler code here
}
/*
=======================================================================================
Name: OnSelectAll
Description: Handle function for message BN_CLICKED on All button
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::OnSelectAll()
{
// TODO: Add your control notification handler code here
// select all the objects in all the lists associated with the types
// enable (Clear, Clear All, Convert) / disable (All, AllInList)
m_fn_vSelectAll(TRUE);
m_oListType->Invalidate(TRUE);
m_fn_vEnableButtons(TRUE);
}
/*
=======================================================================================
Name: OnSelectAllInList
Description: Handle function for message BN_CLICKED on AllInList button
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::OnSelectAllInList()
{
//change all the objects in active and enable/disable the buttons for selection
m_fn_vSelectAllForType(TRUE);
m_fn_vEnableButtonAll();
GetDlgItem(IDC_BUTTON_ALLINLIST)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_CLEAR)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_CLEARALL)->EnableWindow(TRUE);
if (m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected)
{
GetDlgItem(IDC_BUTTON_CONVTEX)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_CONVANI)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_AUTO)->EnableWindow(TRUE);
}
if (m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected) /* &&
bConvAnim && GetDlgItem(IDC_BUTTON_CONVANI)->IsWindowEnabled() ||
bConvTextures && GetDlgItem(IDC_BUTTON_CONVTEX)->IsWindowEnabled())*/
GetDlgItem(IDC_BUTTON_CONVLEVEL)->EnableWindow(TRUE);
if (m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected &&
bConvAnim && GetDlgItem(IDC_BUTTON_CONVANI)->IsWindowEnabled())
{ GetDlgItem(IDC_BUTTON_USED)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_A)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_Z)->EnableWindow(TRUE);
}
if (m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected &&
bConvTextures && GetDlgItem(IDC_BUTTON_CONVTEX)->IsWindowEnabled())
{ GetDlgItem(IDC_BUTTON_BMP)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_TGA)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_C16)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_C32)->EnableWindow(TRUE);
}
if (m_p_oTypeAnims && m_p_oTypeAnims->m_iSelected)
{ GetDlgItem(IDC_BUTTON_USED)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_A)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_Z)->EnableWindow(TRUE);
}
if (m_p_oTypeTextures && m_p_oTypeTextures->m_iSelected)
{ GetDlgItem(IDC_BUTTON_BMP)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_TGA)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_C16)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_C32)->EnableWindow(TRUE);
}
if (m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected /*&&
bConvAnim && GetDlgItem(IDC_BUTTON_CONVANI)->IsWindowEnabled() ||
bConvTextures && GetDlgItem(IDC_BUTTON_CONVTEX)->IsWindowEnabled()) */||
(m_p_oTypeAnims && m_p_oTypeAnims->m_iSelected) ||
(m_p_oTypeTextures && m_p_oTypeTextures->m_iSelected))
GetDlgItem(IDC_BUTTON_CONVERT)->EnableWindow(TRUE);
else
GetDlgItem(IDC_BUTTON_CONVERT)->EnableWindow(FALSE);
}
/*
=======================================================================================
Name: OnClear
Description: Handle function for message BN_CLICKED on Clear button
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::OnClear()
{
//change all the objects in the current list to inactive and enable/disable the buttons
m_fn_vSelectAllForType(FALSE);
m_fn_vEnableButtonConvert();
m_fn_vEnableButtonAll();
GetDlgItem(IDC_BUTTON_CLEAR)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_ALLINLIST)->EnableWindow(TRUE);
}
/*
=======================================================================================
Name: OnClearAll
Description: Handle function for message BN_CLICKED on ClearAll button
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::OnClearAll()
{
// change the state of all the objects to inactive and enable/disable selections buttons
m_fn_vSelectAll(FALSE);
m_oListType->Invalidate(TRUE);
m_fn_vEnableButtons(FALSE);
}
/*
=======================================================================================
Name: OnQuit
Description: Handle function for message BN_CLICKED on Quit button
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::OnQuit()
{
// TODO: Add your control notification handler code here
if (AfxMessageBox( "Are you sure you want to Quit ?", MB_YESNO | MB_ICONQUESTION) == IDNO)
return;
CDialog::OnCancel();
}
/*
=======================================================================================
Name: OnPaint
Description: Handle function for message WM_PAINT
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::OnPaint()
{
CPaintDC dc(this); // device context for painting
CDialog::OnPaint();
}
/*
=======================================================================================
Name: OnSelchangePanel
Description: Handle function for message TCN_SELCHANGE
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::OnSelchangePanel(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
int nPanel = m_oPanel.GetCurSel();
//before changing the panel 0 to 1 or 2, test if the datas are valid
BOOL bResult = m_fn_vTestIniDatas();
// get the current panel and for it show only its controls
// and hide the others
switch(nPanel)
{
case 0://the panels with directories
m_fn_TabC_vShowControlsPanelDir() ;
break;
case 1: //the panel with selections
if (bResult)
{ m_fn_TabC_vShowControlsPanelDir() ;
m_oPanel.SetCurSel(0);
}
else
m_fn_TabC_vShowControlsPanelSel() ;
break;
case 2://the panel with the comands and results
if (bResult)
{ m_fn_TabC_vShowControlsPanelDir() ;
m_oPanel.SetCurSel(0);
}
else
m_fn_TabC_vShowControlsPanelRes() ;
break;
}
*pResult = 0;
}
/*
=======================================================================================
Name: OnButtonBrowseDestBinD
Description: Handle function for message BN_CLICKED on first ... button
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::OnButtonBrowseDestBinD()
{
// TODO: Add your control notification handler code here
char szPath[ MAX_PATH ], szDir[MAX_PATH], szDir1[MAX_PATH] ;
char *p_Char, *p_Char1;
char szExeDir[ MAX_PATH ], szDestDir[MAX_PATH];
int i, j, iCounter=0, iCounter1=0;
// prepare the structure for the browsing
m_fn_vBrowseDirectory(szPath, &i, NULL);
if (i)
{ // set that path for the Game Data directory
/* if (b3DCard)
{ if (bDebug)
{ fn_IniData_vSetDestBinDD3D( szPath );
strcpy(g_stInitialData.szDestBinDD3D, szPath);
}
else
{ fn_IniData_vSetDestBinRD3D( szPath );
strcpy(g_stInitialData.szDestBinRD3D, szPath);
}
}
else
*/ { if (bDebug)
{ fn_IniData_vSetDestBinDDFX( szPath );
strcpy(g_stInitialData.szDestBinDDFX, szPath);
}
else
{ fn_IniData_vSetDestBinRDFX( szPath );
strcpy(g_stInitialData.szDestBinRDFX, szPath);
}
}
/*
=======================================================================================
* write local path in the edit box control
=======================================================================================
*/
GetDlgItem( IDC_EDIT_DESTBIND )->SetWindowText( szPath );
strcpy(szDestBinDir, szPath);
strcpy(g_szStartPrgIniFile, sInitialDir);
//sInitialDir is the directory of the exe of the game
//szDestBinDir is the directory of the destination data
if (g_szStartPrgIniFile[0]==szDestBinDir[0]) //the exe of the game and
//the destination directory are on the same drive
{
if ((p_Char=strstr(szDestBinDir, g_szStartPrgIniFile))!=NULL) //the destination directory is a
//sub-directory of the exe directory
{ strcpy(szDir, szDestBinDir+strlen(sInitialDir)+1);
if (g_szStartPrgIniFile[strlen(g_szStartPrgIniFile) - 1] != '\\')
strcat( g_szStartPrgIniFile, "\\");
strcat( g_szStartPrgIniFile, C_szStartPrgIniFile );
if (bDebug)
fn_IniData_vSetGDDebugBin(szDir);
else
fn_IniData_vSetGDReleaseBin(szDir);
}
else
{
strcpy(szExeDir, sInitialDir+2);
p_Char = strstr(szExeDir, "\\");
if (p_Char)
{ strcpy(szDir, p_Char+1);
p_Char1 = strstr(szDir, "\\");
if (p_Char1) szDir[strlen(p_Char)-strlen(p_Char1)-1]='\0';
}
strcpy(szDestDir, szDestBinDir+2);
p_Char = strstr(szDestDir, "\\");
if (p_Char)
{ strcpy(szDir1, p_Char+1);
p_Char1 = strstr(szDir1, "\\");
if (p_Char1) szDir1[strlen(p_Char)-strlen(p_Char1)-1]='\0';
}
while (!stricmp(szDir, szDir1))
{
iCounter++;
strcpy(szExeDir, szExeDir+strlen(szDir)+1);
p_Char = strstr(szExeDir, "\\");
if (p_Char)
{ strcpy(szDir, p_Char+1);
p_Char1 = strstr(szDir, "\\");
if (p_Char1) szDir[strlen(p_Char)-strlen(p_Char1)-1]='\0';
}
strcpy(szDestDir, szDestDir+strlen(szDir)+1);
p_Char = strstr(szDestDir, "\\");
if (p_Char)
{ strcpy(szDir1, p_Char+1);
p_Char1 = strstr(szDir1, "\\");
if (p_Char1) szDir1[strlen(p_Char)-strlen(p_Char1)-1]='\0';
}
}
strcpy(szDir, p_Char+1);
strcpy(szDir1, sInitialDir);
while(p_Char=strstr(szDir1, "\\"))
{ strcpy(szDir1, p_Char+1);
iCounter1++;
}
strcpy(szDir1, "");
for (j=0; j<iCounter1-iCounter; j++)
strcat(szDir1, "..\\");
strcat(szDir1, szDir);
if (g_szStartPrgIniFile[strlen(g_szStartPrgIniFile) - 1] != '\\')
strcat( g_szStartPrgIniFile, "\\");
strcat( g_szStartPrgIniFile, C_szStartPrgIniFile );
if (bDebug)
fn_IniData_vSetGDDebugBin(szDir1);
else
fn_IniData_vSetGDReleaseBin(szDir1);
}
}
else
{
if (g_szStartPrgIniFile[strlen(g_szStartPrgIniFile) - 1] != '\\')
strcat( g_szStartPrgIniFile, "\\");
strcat( g_szStartPrgIniFile, C_szStartPrgIniFile );
if (bDebug)
fn_IniData_vSetGDDebugBin(szPath);
else
fn_IniData_vSetGDReleaseBin(szPath);
}
}
}
/*
=======================================================================================
Name: OnButtonBrowseSource
Description: Handle function for message BN_CLICKED on second ... button (for RawData)
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::OnButtonBrowseSource()
{
// TODO: Add your control notification handler code here
char szPath[ MAX_PATH ];
int i;
// prepare the structure for the browsing
m_fn_vBrowseDirectory(szPath, &i, NULL);
if (i)
{
// set that path for the Raw Data directory
fn_IniData_vSetSource( szPath );
strcpy(g_stInitialData.szSource, szPath);
strcpy(szSource, szPath);
GetDlgItem( IDC_EDIT_SOURCE )->SetWindowText( szPath );
//remove all the elements in the lists with objects
mfn_vFreeMemory();
m_p_oTypeAnims = NULL;
m_p_oTypeLevels = NULL;
m_p_oTypeTextures = NULL;
//reset the contains of the list boxes
((CListBox *)GetDlgItem(IDC_LIST1))->ResetContent();
((CListBox *)GetDlgItem(IDC_LIST2))->ResetContent();
m_fn_vUpdateAll();
//reset the total number of selections
m_iCountOfSelections = 0;
}
}
/*
=======================================================================================
Name: OnSize
Description: Handle function for message WM_SIZE
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
// TODO: Add your message handler code here
RECT stRect;
CWnd *p_oWnd;
int iWnd;
long lWidth;
if (m_bInit)
if (nType != SIZE_MINIMIZED)
{
/*
=======================================================================================
* resize edit box controls
=======================================================================================
*/
for (iWnd = 0; iWnd < m_cNbEditBox; iWnd ++)
{
p_oWnd = GetDlgItem( m_a_uiEditControls[iWnd] );
p_oWnd->GetWindowRect( &stRect );
ScreenToClient( &stRect );
stRect.right = stRect.left + (cx - m_a_iSizeLeft[iWnd]);
p_oWnd->MoveWindow(&stRect, FALSE);
}
/*
=======================================================================================
* resize right button controls
=======================================================================================
*/
for (iWnd = 0; iWnd < m_cNbRightButtons; iWnd ++)
{
p_oWnd = GetDlgItem( m_a_uiRightButtons[iWnd] );
p_oWnd->GetWindowRect( &stRect );
ScreenToClient( &stRect );
lWidth = stRect.right - stRect.left;
stRect.right = cx-87;
stRect.left = stRect.right - lWidth;
p_oWnd->MoveWindow(&stRect, FALSE);
}
for (iWnd = 0; iWnd < m_cNbRightBut; iWnd ++)
{
p_oWnd = GetDlgItem( m_a_uiRightBut[iWnd] );
p_oWnd->GetWindowRect( &stRect );
ScreenToClient( &stRect );
lWidth = stRect.right - stRect.left;
stRect.right = cx-69;
stRect.left = stRect.right - lWidth;
p_oWnd->MoveWindow(&stRect, FALSE);
}
/*
=======================================================================================
* resize HELP and QUIT button controls
=======================================================================================
*/
p_oWnd = GetDlgItem( IDC_QUIT );
p_oWnd->GetWindowRect( &stRect );
ScreenToClient( &stRect );
lWidth = stRect.right - stRect.left;
stRect.bottom = cy - 15;
stRect.top = stRect.bottom - 20;
stRect.right = cx-27;
stRect.left = stRect.right - lWidth;
p_oWnd->MoveWindow(&stRect, FALSE);
p_oWnd = GetDlgItem( IDC_HELPBUTTON );
p_oWnd->GetWindowRect( &stRect );
ScreenToClient( &stRect );
stRect.bottom = cy - 15;
stRect.top = stRect.bottom - 20;
stRect.right = cx-117;
stRect.left = stRect.right - lWidth;
p_oWnd->MoveWindow(&stRect, FALSE);
/*
=======================================================================================
* resize the groups
=======================================================================================
*/
for (iWnd = 0; iWnd < m_cNbGroupButtons; iWnd ++)
{
p_oWnd = GetDlgItem( m_a_uiGroupButtons[iWnd] );
p_oWnd->GetWindowRect( &stRect );
ScreenToClient( &stRect );
stRect.right = cx-68;
p_oWnd->MoveWindow(&stRect, FALSE);
}
/*
=======================================================================================
* resize the panels
=======================================================================================
*/
p_oWnd = GetDlgItem( IDC_PANEL );
p_oWnd->GetWindowRect( &stRect );
ScreenToClient( &stRect );
stRect.bottom = cy - 45;
stRect.right = cx-27;
p_oWnd->MoveWindow(&stRect, FALSE);
/*
=======================================================================================
* resize the group selection
=======================================================================================
*/
p_oWnd = GetDlgItem( IDC_STATIC_GRALL );
p_oWnd->GetWindowRect( &stRect );
ScreenToClient( &stRect );
lWidth = stRect.right - stRect.left;
stRect.right = cx-63;
stRect.left = stRect.right - lWidth;
long lDim = stRect.left;
p_oWnd->MoveWindow(&stRect, FALSE);
p_oWnd = GetDlgItem( IDC_STATIC_OPT );
p_oWnd->GetWindowRect( &stRect );
ScreenToClient( &stRect );
lWidth = stRect.right - stRect.left;
stRect.right = cx-63;
stRect.left = stRect.right - lWidth;
p_oWnd->MoveWindow(&stRect, FALSE);
p_oWnd = GetDlgItem( IDC_STATIC_COPT );
p_oWnd->GetWindowRect( &stRect );
ScreenToClient( &stRect );
lWidth = stRect.right - stRect.left;
stRect.right = cx-63;
stRect.left = stRect.right - lWidth;
p_oWnd->MoveWindow(&stRect, FALSE);
p_oWnd = GetDlgItem( IDC_STATIC_MOPT );
p_oWnd->GetWindowRect( &stRect );
ScreenToClient( &stRect );
lWidth = stRect.right - stRect.left;
stRect.right = cx-63;
stRect.left = stRect.right - lWidth;
p_oWnd->MoveWindow(&stRect, FALSE);
/*
=======================================================================================
* resize the lists
=======================================================================================
*/
p_oWnd = GetDlgItem( IDC_LIST1 );
p_oWnd->GetWindowRect( &stRect );
ScreenToClient( &stRect );
stRect.right = cx/3 - 7;
stRect.bottom = cy - 65;
p_oWnd->MoveWindow(&stRect, FALSE);
p_oWnd = GetDlgItem( IDC_STATIC_LIST1 );
p_oWnd->GetWindowRect( &stRect );
ScreenToClient( &stRect );
stRect.right = cx/3 - 7;
stRect.bottom = cy - 65;
p_oWnd->MoveWindow(&stRect, FALSE);
p_oWnd = GetDlgItem( IDC_LIST2 );
p_oWnd->GetWindowRect( &stRect );
ScreenToClient( &stRect );
stRect.left = cx/3 + 7;
stRect.right = lDim-17;
stRect.bottom = cy - 65;
p_oWnd->MoveWindow(&stRect, FALSE);
/*
=======================================================================================
* resize the result windows (Command and Result)
=======================================================================================
*/
p_oWnd = GetDlgItem( IDC_STATIC_VERS1 );
p_oWnd->GetWindowRect( &stRect );
ScreenToClient( &stRect );
lWidth = stRect.right-stRect.left;
stRect.bottom = cy - 10;
stRect.top = stRect.bottom - 20;
stRect.right = cx-197;
stRect.left = stRect.right - lWidth;
p_oWnd->MoveWindow(&stRect, FALSE);
p_oWnd = GetDlgItem( IDC_RICHEDIT_COMMAND );
p_oWnd->GetWindowRect( &stRect );
ScreenToClient( &stRect );
stRect.right = cx - 57;
stRect.bottom = cy/3;
p_oWnd->MoveWindow(&stRect, FALSE);
p_oWnd = GetDlgItem( IDC_STATIC_RES );
p_oWnd->GetWindowRect( &stRect );
ScreenToClient( &stRect );
stRect.top = cy/3 + 17;
stRect.bottom = stRect.top + 20;
p_oWnd->MoveWindow(&stRect, FALSE);
p_oWnd = GetDlgItem( IDC_RICHEDIT_RESULT );
p_oWnd->GetWindowRect( &stRect );
ScreenToClient( &stRect );
stRect.right = cx - 57;
stRect.top = cy/3 + 34;
stRect.bottom = cy-85;
p_oWnd->MoveWindow(&stRect, FALSE);
/*
=======================================================================================
* resize Progress Bar
=======================================================================================
*/
p_oWnd = GetDlgItem( IDC_STATIC_PROGRESS );
p_oWnd->GetWindowRect( &stRect );
ScreenToClient( &stRect );
lWidth = stRect.right - stRect.left;
stRect.right = cx-64;
stRect.left = stRect.right - lWidth;
stRect.top=cy-75;
stRect.bottom=cy -52;
p_oWnd->MoveWindow(&stRect, FALSE);
Invalidate();
}
}
/*
=======================================================================================
Name: OnSizing
Description: Handle function for message WM_SIZING
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::OnSizing( UINT nSide, LPRECT lpRect )
{
long lWidth = lpRect->right - lpRect->left + 1;
long lHeight= lpRect->bottom - lpRect->top + 1;
// do not permit to minimize the main window more than
// some predefined constants:C_iMainWindowWidth (520)
// and C_iMainWindowHeight (423)
// the width cannot be less than C_iMainWindowWidth
if (lWidth < C_iMainWindowWidth)
{
switch (nSide)
{
case WMSZ_LEFT:
case WMSZ_TOPLEFT:
case WMSZ_BOTTOMLEFT:
lpRect->left = lpRect->right - C_iMainWindowWidth;
break;
case WMSZ_RIGHT:
case WMSZ_TOPRIGHT:
case WMSZ_BOTTOMRIGHT:
lpRect->right = lpRect->left + C_iMainWindowWidth;
break;
}
}
// the height cannot be less than C_iMainWindowHeight
if (lHeight < C_iMainWindowHeight)
{
switch (nSide)
{
case WMSZ_BOTTOM:
case WMSZ_BOTTOMLEFT:
case WMSZ_BOTTOMRIGHT:
lpRect->bottom = lpRect->top + C_iMainWindowHeight;
break;
case WMSZ_TOP:
case WMSZ_TOPLEFT:
case WMSZ_TOPRIGHT:
lpRect->top = lpRect->bottom - C_iMainWindowHeight;
}
}
CDialog::OnSizing( nSide, lpRect );
}
/*
=======================================================================================
Name: mfn_vFreeMemoryForType()
Description: Freeing all the allocated memory for a type
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::mfn_vFreeMemoryForType(GI_Type **_p_oType)
{
if (*_p_oType)
{ int iSize=(*_p_oType)->m_oList.GetCount();
//for all the elements in the list, remove them from list and delete the object
for (int i=0; i<iSize; i++)
{ GI_Item* p_oItem = (*_p_oType)->m_oList.RemoveHead();
delete p_oItem;
}
}
if (*_p_oType)
delete *_p_oType;
}
/*
=======================================================================================
Name: mfn_vFreeMemory()
Description: Freeing all the allocated memory
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::mfn_vFreeMemory()
{
mfn_vFreeMemoryForType(&m_p_oTypeAnims ) ;
mfn_vFreeMemoryForType(&m_p_oTypeLevels ) ;
mfn_vFreeMemoryForType(&m_p_oTypeTextures ) ;
}
/*
=======================================================================================
Name: OnSelchangeListType
Description: Handle function for message LBN_SELCHANGE on list box with types
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::OnSelchangeListType()
{
// TODO: Add your control notification handler code here
char szPath[ MAX_PATH ];
//reset the contents of the list box with objects
m_oListObject->ResetContent();
int iIndex = m_oListType->GetCurSel();
m_oListType->GetText(iIndex, szPath);
GI_Type *p_oType = (GI_Type *)m_oListType->GetItemData(iIndex);
// update the list of objects corresponding to the type selected
if (m_p_oTypeAnims) m_fn_vUpdateListBox(&m_p_oTypeAnims->m_oList, szPath, "Animations");
if (m_p_oTypeTextures) m_fn_vUpdateListBox(&m_p_oTypeTextures->m_oList, szPath, "Textures");
if (m_p_oTypeLevels) m_fn_vUpdateListBox(&m_p_oTypeLevels->m_oList, szPath, "Levels");
// enable/disable the selection buttons corresponding with the current selections
if (p_oType->m_iSelected==m_oListObject->GetCount())
GetDlgItem(IDC_BUTTON_ALLINLIST)->EnableWindow(FALSE);
else
GetDlgItem(IDC_BUTTON_ALLINLIST)->EnableWindow(TRUE);
if (p_oType->m_iSelected>0)
GetDlgItem(IDC_BUTTON_CLEAR)->EnableWindow(TRUE);
else
GetDlgItem(IDC_BUTTON_CLEAR)->EnableWindow(FALSE);
}
/////////////////////////////////////////////////////////////////////
// Functions
/////////////////////////////////////////////////////////////////////
/*
=======================================================================================
Name: m_fn_vOnDrawItemListBoxType
Description: Function for changing the color of one item in the list box with types
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::m_fn_vOnDrawItemListBoxType(LPDRAWITEMSTRUCT lpDIS)
{
// TODO: Add your message handler code here and/or call default
CDC *p_oDC = CDC::FromHandle(lpDIS->hDC);
CBrush oBrush;
COLORREF xTextColor;
BOOL bSelected = (lpDIS->itemState & ODS_SELECTED );
GI_Type *p_oType= (GI_Type *)m_oListType->GetItemData( lpDIS->itemID );
oBrush.CreateSolidBrush( GetSysColor( bSelected ? COLOR_GRAYTEXT /*COLOR_HIGHLIGHT*/ : COLOR_WINDOW) );
// change the color of the type in the list box according with:
// if for that type are no objects selected, draw it in black
// if for that type are some objects selected, draw it in blue
// if of the type are all the objects selected, draw it in green
if (p_oType->m_iSelected == 0)
xTextColor = RGB(0, 0,0); //black
int iSize = p_oType->m_oList.GetCount() ;
if (p_oType->m_iSelected < iSize && p_oType->m_iSelected >0)
xTextColor = RGB(0, 0, 255); //blue
if (p_oType->m_iSelected == iSize && iSize>0)
xTextColor = RGB(0, 127,0); //green
p_oType->m_xTextColor = xTextColor;
xTextColor = p_oType->m_xTextColor;
p_oDC->FillRect( &lpDIS->rcItem, &oBrush );
p_oDC->SetBkMode( TRANSPARENT);
p_oDC->SetTextColor( xTextColor );
p_oDC->DrawText( p_oType -> m_fn_p_oGetName(), &lpDIS->rcItem, DT_SINGLELINE | DT_LEFT | DT_VCENTER );
oBrush.DeleteObject();
}
/*
=======================================================================================
Name: m_fn_vOnDrawItemListBoxObject
Description: Function for drawing the cross before of one active item in the list box with objects
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::m_fn_vOnDrawItemListBoxObject(LPDRAWITEMSTRUCT lpDIS)
{
CDC *pDC = CDC::FromHandle( lpDIS->hDC );
CListBox *pLB = m_oListObject;
BOOL bSelected = (lpDIS->itemState & ODS_SELECTED );
GI_Item *p_oItem = (GI_Item*)pLB->GetItemData( lpDIS->itemID );
pDC->FillSolidRect( &lpDIS->rcItem, GetSysColor( COLOR_WINDOW ));
//draw a cross in front of an active object
if (p_oItem -> m_bActived)
pDC->BitBlt( lpDIS->rcItem.left + 2, lpDIS->rcItem.top + 1, 12, 12, &m_oCrossDC, 0, 0, SRCAND );
pDC->SetBkMode( TRANSPARENT);
pDC->SetTextColor( GetSysColor( COLOR_WINDOWTEXT ) );
lpDIS->rcItem.left += 16;
pDC->DrawText( p_oItem -> m_fn_p_oGetName(), &lpDIS->rcItem, DT_SINGLELINE | DT_LEFT | DT_VCENTER );
//invert
lpDIS->rcItem.left -= 1;
if (bSelected)
pDC->InvertRect( &lpDIS->rcItem );
}
/*
=======================================================================================
Name: m_fn_TabC_vChangeShowControlsPanelDir
Description: Show Or Hide the buttons for the "Directories" tab
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::m_fn_TabC_vChangeShowControlsPanelDir(BOOL bChange)
{
// Show or hide the buttons from the first panel
// according to the parameter bChange
GetDlgItem(IDC_HELPBUTTON)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_BIN)->ShowWindow(bChange);
GetDlgItem(IDC_BUTTON_DEBUG)->ShowWindow(bChange);
GetDlgItem(IDC_BUTTON_RELEASE)->ShowWindow(bChange);
GetDlgItem(IDC_BUTTON_BROWSE2)->ShowWindow(bChange);
GetDlgItem(IDC_BUTTON_BROWSE3)->ShowWindow(bChange);
GetDlgItem(IDC_BUTTON_CHANGE)->ShowWindow(bChange);
GetDlgItem(IDC_STATIC_RAW)->ShowWindow(bChange);
GetDlgItem(IDC_STATIC_GAME)->ShowWindow(bChange);
GetDlgItem(IDC_STATIC_GR1)->ShowWindow(bChange);
GetDlgItem(IDC_STATIC_GR2)->ShowWindow(bChange);
GetDlgItem(IDC_STATIC_EXEC)->ShowWindow(bChange);
GetDlgItem(IDC_STATIC_VERS)->ShowWindow(bChange);
GetDlgItem(IDC_STATIC_DSC)->ShowWindow(bChange);
GetDlgItem(IDC_BUTTON_FIX)->ShowWindow(bChange);
GetDlgItem(IDC_EDIT_DESTBIND)->ShowWindow(bChange);
GetDlgItem(IDC_EDIT_SOURCE)->ShowWindow(bChange);
GetDlgItem(IDC_EDIT_EXEC)->ShowWindow(bChange);
// GetDlgItem(IDC_BUTTON_D3D)->ShowWindow(bChange);
// GetDlgItem(IDC_BUTTON_DFX)->ShowWindow(bChange);
if (m_bConversion && bChange) //is conversion
GetDlgItem(IDC_STATIC_PROGRESS)->ShowWindow(FALSE);
}
/*
=======================================================================================
Name: OnConvAnim
Description: Handle function for message BN_CLICKED on Convert Animations
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::OnConvAnim()
{
if (((CButton *)GetDlgItem(IDC_BUTTON_CONVANI))->GetCheck())
{
//if it is checked ...
bConvAnim = TRUE;
}
else
{ bConvAnim = FALSE;
}
if ((m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected && bConvAnim))
{ GetDlgItem(IDC_BUTTON_USED)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_A)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_Z)->EnableWindow(TRUE);
}
else
{ GetDlgItem(IDC_BUTTON_USED)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_A)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_Z)->EnableWindow(FALSE);
}
/* if ((m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected && (bConvAnim || bConvTextures)))
GetDlgItem(IDC_BUTTON_CONVLEVEL)->EnableWindow(TRUE);
else
GetDlgItem(IDC_BUTTON_CONVLEVEL)->EnableWindow(FALSE);
if (m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected &&
bConvAnim && GetDlgItem(IDC_BUTTON_CONVANI)->IsWindowEnabled() ||
bConvTextures && GetDlgItem(IDC_BUTTON_CONVTEX)->IsWindowEnabled()||
m_p_oTypeAnims && m_p_oTypeAnims->m_iSelected ||
m_p_oTypeTextures && m_p_oTypeTextures->m_iSelected)
GetDlgItem(IDC_BUTTON_CONVERT)->EnableWindow(TRUE);
else
GetDlgItem(IDC_BUTTON_CONVERT)->EnableWindow(FALSE);
*/
if ((m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected && !bConvAnim && !bConvTextures && !bConvLevels))
GetDlgItem(IDC_BUTTON_CONVERT)->EnableWindow(FALSE);
else
GetDlgItem(IDC_BUTTON_CONVERT)->EnableWindow(TRUE);
}
/*
=======================================================================================
Name: OnUsed
Description: Handle function for message BN_CLICKED on Used
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::OnUsed()
{
if (((CButton *)GetDlgItem(IDC_BUTTON_USED))->GetCheck())
{
//if it is checked ...
bBatch = TRUE;
}
else
bBatch = FALSE;
}
/*
=======================================================================================
Name: OnAll
Description: Handle function for message BN_CLICKED on Used
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::OnAll()
{
if (((CButton *)GetDlgItem(IDC_BUTTON_A))->GetCheck())
{
//if it is checked ...
bAll = TRUE;
}
else
bAll = FALSE;
}
/*
=======================================================================================
Name: OnTbl
Description: Handle function for message BN_CLICKED on Tbl
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::OnTbl()
{
if (((CButton *)GetDlgItem(IDC_BUTTON_Z))->GetCheck())
{
//if it is checked ...
bTbl = TRUE;
}
else
bTbl = FALSE;
}
/*
=======================================================================================
Name: OnFix
Description: Handle function for message BN_CLICKED on Fix
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::OnButtonFix()
{
if (((CButton *)GetDlgItem(IDC_BUTTON_FIX))->GetCheck())
//if it is checked ...
bFix1 = TRUE;
else
bFix1 = FALSE;
}
/*
=======================================================================================
Name: OnBMP
Description: Handle function for message BN_CLICKED on BMP
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::OnBMP()
{
if (((CButton *)GetDlgItem(IDC_BUTTON_BMP))->GetCheck())
{
//if it is checked ...
bBMP = TRUE;
}
else
bBMP = FALSE;
}
/*
=======================================================================================
Name: OnTGA
Description: Handle function for message BN_CLICKED on TGA
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::OnTGA()
{
if (((CButton *)GetDlgItem(IDC_BUTTON_TGA))->GetCheck())
{
//if it is checked ...
bTGA = TRUE;
}
else
bTGA = FALSE;
}
/*
=======================================================================================
Name: OnConvert16
Description: Handle function for message BN_CLICKED on Convert16
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::OnConvert16()
{
if (((CButton *)GetDlgItem(IDC_BUTTON_C16))->GetCheck())
{
//if it is checked ...
bConvert16 = TRUE;
}
else
bConvert16 = FALSE;
}
/*
=======================================================================================
Name: OnConvert32
Description: Handle function for message BN_CLICKED on Convert32
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::OnConvert32()
{
if (((CButton *)GetDlgItem(IDC_BUTTON_C32))->GetCheck())
{
//if it is checked ...
bConvert32 = TRUE;
}
else
bConvert32 = FALSE;
}
/*
=======================================================================================
Name: OnGenerateAuto
Description: Handle function for message BN_CLICKED on Generate auto.ini
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::OnGenerateAuto()
{
char szName[_MAX_PATH];
FILE *file;
int i, j;
BOOL bOK;
strcpy(szName, sInitialDir);
strcat(szName, "\\Auto.ini");
if (file = fopen(szName, "rt")) //the file exist
{
strcpy(sMes, "\n\tThe file Auto.ini already exist.\n");
strcat(sMes, "\nSelect yes for adding a sequence to the existing file, or no for creating a new file.");
strcpy(sOK, "Yes");
strcpy(sCancel, "No");
CDlgWarning dlgWarning;
int nResponse = dlgWarning.DoModal();
if (nResponse == IDOK)
{ bOK = TRUE;
fclose(file);
}
else if (nResponse == IDCANCEL)
{ bOK = FALSE;
fclose(file);
remove(szName);
}
}
if (file=fopen(szName, "at"))
{
fprintf(file, "ExeFile=%s\n", g_stInitialData.szExeFile);
fprintf(file, "SourceDir=%s\n", g_stInitialData.szSource);
fprintf(file, "DestDir=%s\n", szDestBinDir);
if (bDebug)
fprintf(file, "Version=Debug\n");
else
fprintf(file, "Version=Release\n");
fprintf(file, "Option=%d\n", bFix1);
fprintf(file, "BinAnims=%d\n", bConvAnim);
if (bConvAnim)
{
fprintf(file, "Batch=%d\n", bBatch);
fprintf(file, "All=%d\n", bAll);
fprintf(file, "Tbl=%d\n", bTbl);
}
fprintf(file, "BinTextures=%d\n", bConvTextures);
if (bConvTextures)
{
fprintf(file, "BMP=%d\n", bBMP);
fprintf(file, "TGA=%d\n", bTGA);
fprintf(file, "Convert16=%d\n", bConvert16);
fprintf(file, "Convert32=%d\n", bConvert32);
}
fprintf(file, "BinLevels=%d\n", bConvLevels);
fprintf(file, "Maps=");
j=0;
for (i=0; i<m_p_oTypeLevels->m_oList.GetCount(); i++)
{
GI_Item * p_oItem = m_p_oTypeLevels->m_oList.RemoveHead();
if (p_oItem->m_bActived)
{ if (!j) { fprintf(file, p_oItem->m_fn_p_oGetName());
j++;
}
else fprintf(file,",%s", p_oItem->m_fn_p_oGetName());
}
m_p_oTypeLevels->m_oList.AddTail(p_oItem);
}
fprintf(file, "\nEND\n");
fclose(file);
}
}
/*
=======================================================================================
Name: OnConvTextures
Description: Handle function for message BN_CLICKED on Convert Textures
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::OnConvTextures()
{
if (((CButton *)GetDlgItem(IDC_BUTTON_CONVTEX))->GetCheck())
{
//if it is checked ...
bConvTextures = TRUE;
}
else
bConvTextures = FALSE;
if ((m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected && bConvTextures))
{ GetDlgItem(IDC_BUTTON_BMP)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_TGA)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_C16)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_C32)->EnableWindow(TRUE);
}
else
{ GetDlgItem(IDC_BUTTON_BMP)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_TGA)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_C16)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_C32)->EnableWindow(FALSE);
}
/* if ((m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected && (bConvAnim || bConvTextures)))
GetDlgItem(IDC_BUTTON_CONVLEVEL)->EnableWindow(TRUE);
else
GetDlgItem(IDC_BUTTON_CONVLEVEL)->EnableWindow(FALSE);
if (m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected &&
bConvAnim && GetDlgItem(IDC_BUTTON_CONVANI)->IsWindowEnabled() ||
bConvTextures && GetDlgItem(IDC_BUTTON_CONVTEX)->IsWindowEnabled()||
m_p_oTypeAnims && m_p_oTypeAnims->m_iSelected ||
m_p_oTypeTextures && m_p_oTypeTextures->m_iSelected)
GetDlgItem(IDC_BUTTON_CONVERT)->EnableWindow(TRUE);
else
GetDlgItem(IDC_BUTTON_CONVERT)->EnableWindow(FALSE);
*/
if ((m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected && !bConvAnim && !bConvTextures && !bConvLevels))
GetDlgItem(IDC_BUTTON_CONVERT)->EnableWindow(FALSE);
else
GetDlgItem(IDC_BUTTON_CONVERT)->EnableWindow(TRUE);
}
/*
=======================================================================================
Name: OnConvLevels
Description: Handle function for message BN_CLICKED on Convert Levels
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::OnConvLevels()
{
if (((CButton *)GetDlgItem(IDC_BUTTON_CONVLEVEL))->GetCheck())
{
//if it is checked ...
bConvLevels = TRUE;
}
else
bConvLevels = FALSE;
if ((m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected && !bConvAnim && !bConvTextures && !bConvLevels))
GetDlgItem(IDC_BUTTON_CONVERT)->EnableWindow(FALSE);
else
GetDlgItem(IDC_BUTTON_CONVERT)->EnableWindow(TRUE);
}
/*
=======================================================================================
Name: mfn_vConvAnim
Description: Function for setting/resetting the flag telling if the animations are converted or not
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::mfn_vConvAnim()
{
if (((CButton *)GetDlgItem(IDC_BUTTON_CONVANI))->GetCheck())
{
//if it is checked, set the flag
bConvAnim = TRUE;
((CButton *)GetDlgItem(IDC_BUTTON_CONVANI))->SetCheck(0);
}
else
{
//if it is not checked, reset the flag
bConvAnim = FALSE;
((CButton *)GetDlgItem(IDC_BUTTON_CONVANI))->SetCheck(1);
}
}
/*
=======================================================================================
Name: mfn_vConvTextures
Description: Function for setting/resetting the flag telling if the textures are converted or not
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::mfn_vConvTextures()
{
if (((CButton *)GetDlgItem(IDC_BUTTON_CONVTEX))->GetCheck())
{
//if it is checked, set the flag
bConvTextures = TRUE;
((CButton *)GetDlgItem(IDC_BUTTON_CONVTEX))->SetCheck(0);
}
else
{
//if it is not checked, reset the flag
bConvTextures = FALSE;
((CButton *)GetDlgItem(IDC_BUTTON_CONVTEX))->SetCheck(1);
}
}
/*
=======================================================================================
Name: mfn_vConvLevels
Description: Function for setting/resetting the flag telling if the textures are converted or not
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::mfn_vConvLevels()
{
if (((CButton *)GetDlgItem(IDC_BUTTON_CONVLEVEL))->GetCheck())
{
//if it is checked, set the flag
bConvLevels = TRUE;
((CButton *)GetDlgItem(IDC_BUTTON_CONVLEVEL))->SetCheck(0);
}
else
{
//if it is not checked, reset the flag
bConvLevels = FALSE;
((CButton *)GetDlgItem(IDC_BUTTON_CONVLEVEL))->SetCheck(1);
}
}
/*
=======================================================================================
Name: m_fn_TabC_vChangeShowControlsPanelSel
Description: Show Or Hide the buttons for the "Selection" tab
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::m_fn_TabC_vChangeShowControlsPanelSel(BOOL bChange)
{
// Show or hide the buttons from the second panel
// according to the parameter bChange
GetDlgItem(IDC_HELPBUTTON)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_ALL)->ShowWindow(bChange);
GetDlgItem(IDC_STATIC_GRALL)->ShowWindow(bChange);
GetDlgItem(IDC_STATIC_OPT)->ShowWindow(bChange);
GetDlgItem(IDC_STATIC_COPT)->ShowWindow(bChange);
GetDlgItem(IDC_STATIC_MOPT)->ShowWindow(bChange);
GetDlgItem(IDC_BUTTON_ALLINLIST)->ShowWindow(bChange);
GetDlgItem(IDC_BUTTON_CONVERT)->ShowWindow(bChange);
GetDlgItem(IDC_BUTTON_CONVTEX)->ShowWindow(bChange);
GetDlgItem(IDC_BUTTON_CONVLEVEL)->ShowWindow(bChange);
GetDlgItem(IDC_BUTTON_CONVANI)->ShowWindow(bChange);
GetDlgItem(IDC_BUTTON_USED)->ShowWindow(bChange);
GetDlgItem(IDC_BUTTON_A)->ShowWindow(bChange);
GetDlgItem(IDC_BUTTON_Z)->ShowWindow(bChange);
GetDlgItem(IDC_BUTTON_BMP)->ShowWindow(bChange);
GetDlgItem(IDC_BUTTON_TGA)->ShowWindow(bChange);
GetDlgItem(IDC_BUTTON_C16)->ShowWindow(bChange);
GetDlgItem(IDC_BUTTON_C32)->ShowWindow(bChange);
GetDlgItem(IDC_BUTTON_AUTO)->ShowWindow(bChange);
GetDlgItem(IDC_BUTTON_CLEAR)->ShowWindow(bChange);
GetDlgItem(IDC_BUTTON_CLEARALL)->ShowWindow(bChange);
GetDlgItem(IDC_BUTTON_CONVANI)->EnableWindow(((CListBox *)GetDlgItem(IDC_LIST1))->GetCount()&& (m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected));
GetDlgItem(IDC_BUTTON_CONVTEX)->EnableWindow(((CListBox *)GetDlgItem(IDC_LIST1))->GetCount()&& (m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected));
GetDlgItem(IDC_BUTTON_CONVERT)->EnableWindow(((CListBox *)GetDlgItem(IDC_LIST1))->GetCount()&& m_iCountOfSelections && (m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected/* && (bConvAnim && GetDlgItem(IDC_BUTTON_CONVANI)->IsWindowEnabled()) || (bConvTextures && GetDlgItem(IDC_BUTTON_CONVTEX)->IsWindowEnabled())*/)
|| (m_p_oTypeAnims && m_p_oTypeAnims->m_iSelected)
|| (m_p_oTypeTextures && m_p_oTypeTextures->m_iSelected));
GetDlgItem(IDC_BUTTON_CONVLEVEL)->EnableWindow(((CListBox *)GetDlgItem(IDC_LIST1))->GetCount()&& (m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected /*&& (bConvAnim || bConvTextures)*/)); // YLG Correction
GetDlgItem(IDC_BUTTON_USED)->EnableWindow(((CListBox *)GetDlgItem(IDC_LIST1))->GetCount() && (m_p_oTypeAnims && m_p_oTypeAnims->m_iSelected) || (m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected && bConvAnim) );
GetDlgItem(IDC_BUTTON_A)->EnableWindow(((CListBox *)GetDlgItem(IDC_LIST1))->GetCount() && (m_p_oTypeAnims && m_p_oTypeAnims->m_iSelected) || (m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected && bConvAnim) );
GetDlgItem(IDC_BUTTON_Z)->EnableWindow(((CListBox *)GetDlgItem(IDC_LIST1))->GetCount() && (m_p_oTypeAnims && m_p_oTypeAnims->m_iSelected) || (m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected && bConvAnim) );
GetDlgItem(IDC_BUTTON_BMP)->EnableWindow(((CListBox *)GetDlgItem(IDC_LIST1))->GetCount() && (m_p_oTypeAnims && m_p_oTypeAnims->m_iSelected) || (m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected && bConvTextures) );
GetDlgItem(IDC_BUTTON_TGA)->EnableWindow(((CListBox *)GetDlgItem(IDC_LIST1))->GetCount() && (m_p_oTypeAnims && m_p_oTypeAnims->m_iSelected) || (m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected && bConvTextures) );
GetDlgItem(IDC_BUTTON_C16)->EnableWindow(((CListBox *)GetDlgItem(IDC_LIST1))->GetCount() && (m_p_oTypeAnims && m_p_oTypeAnims->m_iSelected) || (m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected && bConvTextures) );
GetDlgItem(IDC_BUTTON_C32)->EnableWindow(((CListBox *)GetDlgItem(IDC_LIST1))->GetCount() && (m_p_oTypeAnims && m_p_oTypeAnims->m_iSelected) || (m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected && bConvTextures) );
GetDlgItem(IDC_BUTTON_AUTO)->EnableWindow(((CListBox *)GetDlgItem(IDC_LIST1))->GetCount() && (m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected));
GetDlgItem(IDC_BUTTON_CLEAR)->EnableWindow(((CListBox *)GetDlgItem(IDC_LIST1))->GetCount()&& m_iCountOfSelections);
GetDlgItem(IDC_BUTTON_CLEARALL)->EnableWindow(((CListBox *)GetDlgItem(IDC_LIST1))->GetCount()&& m_iCountOfSelections);
if (bChange)
{ // show/hide the buttons or enable/disable buttons
GetDlgItem(IDC_LIST1)->ShowWindow(!(((CListBox *)GetDlgItem(IDC_LIST1))->GetCount()==0));
GetDlgItem(IDC_STATIC_LIST1)->ShowWindow(((CListBox *)GetDlgItem(IDC_LIST1))->GetCount()==0);
GetDlgItem(IDC_LIST2)->ShowWindow(!((CListBox *)GetDlgItem(IDC_LIST1))->GetCount()==0);
GetDlgItem(IDC_BUTTON_ALL)->EnableWindow(!((CListBox *)GetDlgItem(IDC_LIST1))->GetCount()==0);
GetDlgItem(IDC_BUTTON_ALLINLIST)->EnableWindow(!((CListBox *)GetDlgItem(IDC_LIST1))->GetCount()==0);
}
else
{ GetDlgItem(IDC_LIST1)->ShowWindow(bChange);
GetDlgItem(IDC_STATIC_LIST1)->ShowWindow(bChange);
GetDlgItem(IDC_LIST2)->ShowWindow(bChange);
}
GetDlgItem(IDC_STATIC_PROGRESS)->ShowWindow(FALSE);
}
/*
=======================================================================================
Name: m_fn_TabC_vChangeShowControlsPanelRes
Description: Show Or Hide the buttons for the "Result" tab
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::m_fn_TabC_vChangeShowControlsPanelRes(BOOL bChange)
{
// Show or hide the buttons from the third panel
// according to the parameter bChange
GetDlgItem(IDC_HELPBUTTON)->EnableWindow(FALSE);
GetDlgItem(IDC_STATIC_RES)->ShowWindow(bChange);
GetDlgItem(IDC_STATIC_COM)->ShowWindow(bChange);
GetDlgItem(IDC_RICHEDIT_COMMAND)->ShowWindow(bChange);
GetDlgItem(IDC_RICHEDIT_RESULT)->ShowWindow(bChange);
if (m_bConversion && bChange) //is conversion
GetDlgItem(IDC_STATIC_PROGRESS)->ShowWindow(TRUE);
}
/*
=======================================================================================
Name: m_fn_TabC_vShowControlsPanelDir
Description: Show only the buttons for the "Directories" tab
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::m_fn_TabC_vShowControlsPanelDir()
{
// when is selected the first panel show only its controls
m_fn_TabC_vChangeShowControlsPanelDir(TRUE);
m_fn_TabC_vChangeShowControlsPanelSel(FALSE);
m_fn_TabC_vChangeShowControlsPanelRes(FALSE);
}
/*
=======================================================================================
Name: m_fn_TabC_vShowControlsPanelSel
Description: Show only the buttons for the "Selection" tab
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::m_fn_TabC_vShowControlsPanelSel()
{
// when is selected the second panel show only its controls
m_fn_TabC_vChangeShowControlsPanelDir(FALSE);
m_fn_TabC_vChangeShowControlsPanelSel(TRUE);
m_fn_TabC_vChangeShowControlsPanelRes(FALSE);
}
/*
=======================================================================================
Name: m_fn_TabC_vShowControlsPanelRes
Description: Show only the buttons for the "Result" tab
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::m_fn_TabC_vShowControlsPanelRes()
{
// when is selected the third panel show only its controls
m_fn_TabC_vChangeShowControlsPanelDir(FALSE);
m_fn_TabC_vChangeShowControlsPanelSel(FALSE);
m_fn_TabC_vChangeShowControlsPanelRes(TRUE);
}
/*
=======================================================================================
Name: m_fn_ComRes_vWriteLine
Description: Add a line of the specified color in the rich edit box specified
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::m_fn_ComRes_vWriteLine( char *szLine, char cLineType ,CRichEditCtrl* _oRichEdit,
CHARFORMAT* _stCharFormat)
{
long lOldLength;
long lNewLength;
long lSize;
_stCharFormat->crTextColor = gs_a_xLineColor[ cLineType ];
_stCharFormat->dwEffects = 0;
// write a line in the rich edit control
// with different color (red or black) for Ok or for Error
lOldLength = _oRichEdit->GetTextLength();
lNewLength = lOldLength + strlen( szLine );
lSize = _oRichEdit->GetLimitText();
if (lNewLength > lSize)
{
lSize += 10000;
_oRichEdit->LimitText( lSize );
}
_oRichEdit->ReplaceSel( szLine );
_oRichEdit->SetSel( lOldLength, -1 );
_oRichEdit->SetSelectionCharFormat( *_stCharFormat );
_oRichEdit->SetSel( lNewLength, lNewLength );
}
/*
=======================================================================================
Name: m_fn_ComRes_vDeleteLines
Description: Delete all the text in the rich edir box control
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::m_fn_ComRes_vDeleteLines( CRichEditCtrl *_oRichEdit)
{
//delete the content of the rich edit control (result and command)
_oRichEdit->SetWindowText( "" );
}
/*
=======================================================================================
Name: m_fn_vChange
Description: Change the state of one object (item), and the total/local number of selections
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::m_fn_vChange(GI_Item *p_oItem, GI_Type *p_oType, BOOL bSet )
{
// set/reset the state of the object,
// increment/decrement the local (p_oType->m_iSelected) and
// total number of selections (m_iCountOfSelections)
if (!bSet)
{ p_oItem->m_bActived = TRUE;
m_iCountOfSelections++;
p_oType->m_iSelected++;
}
else
{ p_oItem->m_bActived = FALSE;
m_iCountOfSelections--;
p_oType->m_iSelected--;
}
}
/*
=======================================================================================
Name: m_fn_bOnChangeActivation
Description: Change the state of an object similar with the selection from the vss checkout window under visual c
Author: Mihaela Tancu
=======================================================================================
*/
BOOL CDlgMain::m_fn_bOnChangeActivation(GI_Item *_p_oItem, int iIndexItem )
{
BOOL bResult = TRUE;
CListBox *pLB = m_oListObject;
int iNbSel = pLB -> GetSelCount();
GI_Item *p_oItem;
int iIndex = m_oListType->GetCurSel();
GI_Type *p_oType = (GI_Type *)m_oListType->GetItemData(iIndex);
int iSize = p_oType->m_oList.GetCount();
if( iNbSel > 0 )
{ // if there are selection(s) in the list box
int *a_iSel = (int*) malloc( iNbSel * sizeof( int ) );
pLB -> GetSelItems( iNbSel, a_iSel );
if ( iNbSel == 1 )
{
// only one selection
p_oItem = (GI_Item *) pLB -> GetItemData( a_iSel[0] );
// change the state of the item in front of which the user clicked
if (p_oItem==_p_oItem)
m_fn_vChange(p_oItem, p_oType, p_oItem->m_bActived );
else
m_fn_vChange(_p_oItem, p_oType, _p_oItem->m_bActived );
pLB->Invalidate(TRUE);
}
else // several objects selected
{
BOOL bActivate = ! _p_oItem -> m_bActived;
GI_Item **p_oItemMul;
p_oItemMul = (GI_Item **)malloc (iNbSel * sizeof( GI_Item* ) );
BOOL bIs=FALSE;
for ( int iIndex = 0 ; iIndex < iNbSel ; iIndex++ )
{
p_oItemMul[iIndex] = (GI_Item *) pLB -> GetItemData( a_iSel[iIndex] );
if (p_oItemMul[iIndex]==_p_oItem)
bIs = TRUE;
}
for (iIndex = 0 ; iIndex < iNbSel ; iIndex++ )
{
if (bIs) //if the user clicked in front of one of the selected items
{ if( !bActivate && p_oItemMul[iIndex] -> m_bActived )
{ p_oItemMul[iIndex]->m_bActived = FALSE;
m_iCountOfSelections--;
p_oType->m_iSelected--;
}
else if (bActivate && !p_oItemMul[iIndex] -> m_bActived )
{ p_oItemMul[iIndex]->m_bActived = TRUE;
m_iCountOfSelections++;
p_oType->m_iSelected++;
}
}
pLB->Invalidate(TRUE);
}
// if the user clicked in front of an item which is not
// selected
if (!bIs)
m_fn_vChange(_p_oItem, p_oType, _p_oItem->m_bActived );
}
free( a_iSel );
// after modifying the state of the objects, enable/disable the selection buttons
m_fn_vEnableButtonAll();
m_fn_vEnableButtonConvert();
if (p_oType->m_iSelected==m_oListObject->GetCount())
GetDlgItem(IDC_BUTTON_ALLINLIST)->EnableWindow(FALSE);
else
GetDlgItem(IDC_BUTTON_ALLINLIST)->EnableWindow(TRUE);
if (p_oType->m_iSelected>0)
GetDlgItem(IDC_BUTTON_CLEAR)->EnableWindow(TRUE);
else
GetDlgItem(IDC_BUTTON_CLEAR)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_USED)->EnableWindow(((CListBox *)GetDlgItem(IDC_LIST1))->GetCount() && (m_p_oTypeAnims && m_p_oTypeAnims->m_iSelected) || (m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected && bConvAnim) );
GetDlgItem(IDC_BUTTON_A)->EnableWindow(((CListBox *)GetDlgItem(IDC_LIST1))->GetCount() && (m_p_oTypeAnims && m_p_oTypeAnims->m_iSelected) || (m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected && bConvAnim) );
GetDlgItem(IDC_BUTTON_Z)->EnableWindow(((CListBox *)GetDlgItem(IDC_LIST1))->GetCount() && (m_p_oTypeAnims && m_p_oTypeAnims->m_iSelected) || (m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected && bConvAnim) );
GetDlgItem(IDC_BUTTON_CONVANI)->EnableWindow(((CListBox *)GetDlgItem(IDC_LIST1))->GetCount()&& (m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected));
GetDlgItem(IDC_BUTTON_BMP)->EnableWindow(((CListBox *)GetDlgItem(IDC_LIST1))->GetCount() && (m_p_oTypeTextures && m_p_oTypeTextures->m_iSelected) || (m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected && bConvTextures) );
GetDlgItem(IDC_BUTTON_TGA)->EnableWindow(((CListBox *)GetDlgItem(IDC_LIST1))->GetCount() && (m_p_oTypeTextures && m_p_oTypeTextures->m_iSelected) || (m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected && bConvTextures) );
GetDlgItem(IDC_BUTTON_C16)->EnableWindow(((CListBox *)GetDlgItem(IDC_LIST1))->GetCount() && (m_p_oTypeTextures && m_p_oTypeTextures->m_iSelected) || (m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected && bConvTextures) );
GetDlgItem(IDC_BUTTON_AUTO)->EnableWindow(((CListBox *)GetDlgItem(IDC_LIST1))->GetCount() && (m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected));
GetDlgItem(IDC_BUTTON_C32)->EnableWindow(((CListBox *)GetDlgItem(IDC_LIST1))->GetCount() && (m_p_oTypeTextures && m_p_oTypeTextures->m_iSelected) || (m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected && bConvTextures) );
GetDlgItem(IDC_BUTTON_CONVTEX)->EnableWindow(((CListBox *)GetDlgItem(IDC_LIST1))->GetCount()&& (m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected));
if (m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected/* &&
bConvAnim && GetDlgItem(IDC_BUTTON_CONVANI)->IsWindowEnabled() ||
bConvTextures && GetDlgItem(IDC_BUTTON_CONVTEX)->IsWindowEnabled()*/||
m_p_oTypeAnims && m_p_oTypeAnims->m_iSelected ||
m_p_oTypeTextures && m_p_oTypeTextures->m_iSelected)
GetDlgItem(IDC_BUTTON_CONVERT)->EnableWindow(TRUE);
else
GetDlgItem(IDC_BUTTON_CONVERT)->EnableWindow(FALSE);
}
m_oListType->Invalidate(TRUE);
return bResult ;
}
/*
=======================================================================================
Name: m_fn_bWarningUser
Description: Inform the user, if the exe file and the directories does not exist or are not set
Author: Mihaela Tancu
=======================================================================================
*/
BOOL CDlgMain::m_fn_bWarningUser()
{
//init the strings for the edit box controls
char _szMessage[5000];
BOOL bSet=TRUE, bDisplay=FALSE;
// tests if the local path for the executable file exists, if not inform user and set it to c:
// if the executable file does not exist inform the user to choose an executable file
//tests all the directories if they exist
sprintf( _szMessage,"Warning(s) : \n\n");
int iSize= strlen(_szMessage);
/* if (b3DCard)
if (bDebug)
m_fn_vShowPartialWarning(SetCurrentDirectory( g_stInitialData.szDestBinDD3D ),"DestBinDD3D", _szMessage, &bDisplay, IDC_EDIT_DESTBIND, g_stInitialData.szDestBinDD3D);
else
m_fn_vShowPartialWarning(SetCurrentDirectory( g_stInitialData.szDestBinRD3D ),"DestBinRD3D", _szMessage, &bDisplay, IDC_EDIT_DESTBIND, g_stInitialData.szDestBinRD3D);
else
*/ if (bDebug)
m_fn_vShowPartialWarning(SetCurrentDirectory( g_stInitialData.szDestBinDDFX ),"DestBinDDFX", _szMessage, &bDisplay, IDC_EDIT_DESTBIND, g_stInitialData.szDestBinDDFX);
else
m_fn_vShowPartialWarning(SetCurrentDirectory( g_stInitialData.szDestBinRDFX ),"DestBinRDFX", _szMessage, &bDisplay, IDC_EDIT_DESTBIND, g_stInitialData.szDestBinRDFX);
m_fn_vShowPartialWarning(SetCurrentDirectory( g_stInitialData.szSource ),"Source", _szMessage, &bDisplay, IDC_EDIT_SOURCE, g_stInitialData.szSource);
if (!m_fn_bExistDirectories(g_stInitialData.szSource))
sprintf( _szMessage,"\tYou have to select another source directory, because it does not contain any directories !\n\n");
if (bDisplay) AfxMessageBox( _szMessage, MB_OK | MB_ICONSTOP );
return bDisplay;
}
/*
=======================================================================================
Name: m_fn_vTestIniDatas
Description: Call the function m_fn_bWarningUser
Author: Mihaela Tancu
=======================================================================================
*/
BOOL CDlgMain::m_fn_vTestIniDatas()
{
return m_fn_bWarningUser();
}
/*
=======================================================================================
Name: m_fn_vUpdateListBox
Description: Add the objects from the list with objects to the list box with objects
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::m_fn_vUpdateListBox(CList<GI_Item *,GI_Item *> *_oListObjects,
char *szPath, char *szType)
{
GI_Item *p_oItem;
int iSize=_oListObjects->GetCount();
// only if the szPath is the same as szType
if (!strcmp(szPath, szType))
{
for (int i=0; i<iSize; i++)
{
// add the objects in the list box with objects
p_oItem = _oListObjects->RemoveHead();
int iIndex = m_oListObject -> AddString(p_oItem->m_fn_p_oGetName());
if( iIndex != LB_ERR )
m_oListObject -> SetItemData( iIndex, (DWORD) p_oItem );
_oListObjects->AddTail(p_oItem);
}
// implicitly the first object in the second list box is selected!!!
m_oListObject -> SetSel( 0);
}
}
/*
=======================================================================================
Name: m_fn_iAddTestDirType
Description: Find the number of elements for a type (written, because is possible to have a
Banks directory which can contain directories instead of files *.mod and in this way
it appeared in the list without any elements. Using this function every type appears
in the list box only if it contained the corresponding data!!!
Author: Mihaela Tancu
=======================================================================================
*/
int CDlgMain::m_fn_iAddTestDirType(char* szFiles)
{
HANDLE hHandle;
WIN32_FIND_DATA stFindFileData;
if (!m_fn_bGetFiles(szFiles, &hHandle, &stFindFileData)) return 0;
int iTypes=0;
// determine if in the directory is something useful for the selected type
do if(stFindFileData.dwFileAttributes)
{
if(strlen(stFindFileData.cFileName) == 0) break;
if(strcmp(stFindFileData.cFileName, ".") == 0) continue;
if(strcmp(stFindFileData.cFileName, "..") == 0) continue;
iTypes++;
}
while(FindNextFile(hHandle, &stFindFileData));
// return the number of the useful information
FindClose(hHandle);
return iTypes;
}
/*
=======================================================================================
Name: m_fn_vSetTypeInList
Description: If the number of useful information is not null, add that type in the list box with types
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::m_fn_vSetTypeInList(GI_Type ** _p_oType, char *szType, int iNumber)
{
if (m_oListType->FindString(-1, szType)==LB_ERR )
{
if (iNumber)
{ // only if the iNumber is not equal to 0
int iIndex = m_oListType -> AddString(szType);
GI_Type *p_oType = new GI_Type(szType, 0, RGB(0, 0, 0));
if( iIndex != LB_ERR )
{ // add the new type in the list box with types
m_oListType -> SetItemData( iIndex, (DWORD) p_oType );
*_p_oType = p_oType;
}
}
}
}
/*
=======================================================================================
Name: m_fn_vAddType
Description: Add a type in the list box with types
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::m_fn_vAddType(GI_Type * p_oType, char *szReturn, char *szType, char *szDir, int *iNumber)
{
char _szType[MAX_PATH];
strcpy(_szType, g_stInitialData.szSource);
strcat (_szType, szDir);
if (SetCurrentDirectory(_szType))
{ // if the directory exist
// if the directory contain datas (directories for anims, families and levels,
// or files *.mod for banks and classes !!!
int iTextures=0, iAnims=0, iLevels=0;
// for Anims
if (!strcmp(szType, "Animations"))
{ iAnims=m_fn_iAddTestDirType("*.*");
m_fn_vSetTypeInList(&m_p_oTypeAnims, szType, iAnims);
}
// for Textures
if (!strcmp(szType, "Textures"))
{ iTextures=m_fn_iAddTestDirType("*.*");
m_fn_vSetTypeInList(&m_p_oTypeTextures, szType, iTextures);
}
// for Levels
if (!strcmp(szType, "Levels"))
{ iLevels=m_fn_iAddTestDirType("*.*");
m_fn_vSetTypeInList(&m_p_oTypeLevels, szType, iLevels);
}
(*iNumber)++;
// increment the number of types
}
strcpy(szReturn, _szType);
}
/*
=======================================================================================
Name: m_fn_vGetAllTypes
Description: Get all types for the list box with types.
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::m_fn_vGetAllTypes()
{
char szAnims[MAX_PATH];
char szTextures[MAX_PATH];
char szLevels[MAX_PATH];
int iNumber=0;
// set all the lists with objects
m_fn_vAddType(m_p_oTypeAnims, szAnims, "Animations","\\World\\Levels\\_Common\\Families" , &iNumber);
m_fn_vAddType(m_p_oTypeTextures, szTextures, "Textures","\\World\\Graphics\\Textures" , &iNumber);
m_fn_vAddType(m_p_oTypeLevels, szLevels, "Levels","\\World\\Levels" , &iNumber);
if (!iNumber )
// in the list boxes will be nothing, so reset its contents
{ ((CListBox *)GetDlgItem(IDC_LIST1))->ResetContent();
((CListBox *)GetDlgItem(IDC_LIST2))->ResetContent();
}
m_fn_vGetSetDatasInList(szAnims, szTextures, szLevels);
}
/*
=======================================================================================
Name: m_fn_vGetSetDatasInList
Description: Get the datas from the directories and set the lists with objects
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::m_fn_vGetSetDatasInList( char *szAnims, char *szTextures, char *szLevels)
{
if (m_oListType->GetCount())
{ // get all datas for all the existing types in the list box with types
m_fn_vGetDatas(strcat(szAnims, "\\*.*"));
m_fn_vGetDatas(strcat(szLevels, "\\*.*"));
m_fn_vGetDatas(strcat(szTextures, "\\*.*"));
}
}
/*
=======================================================================================
Name: m_fn_vCreateLists
Description: Add an item to the list, if is satisfied the following condition: the string szAnims is found in szPath
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::m_fn_vCreateLists( CList<GI_Item *,GI_Item *> *_oListObject, char *szPath, char *szType, GI_Item * _p_oItem )
{
char *Pdest = strstr( szPath, szType );
if (!Pdest) return;
if ((Pdest!=NULL) && (strstr(Pdest, "_Common")))
return;
// add an item to the list, if the szAnims is found in
// the szPath string
if (!_p_oItem) return;
if ( Pdest != NULL )
_oListObject -> AddTail( _p_oItem);
}
/*
=======================================================================================
Name: m_fn_vGetDatas
Description: Get all datas (objects) for all the types
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::m_fn_vGetDatas(char *szPath)
{
HANDLE hHandle;
WIN32_FIND_DATA stFindFileData;
if (!m_fn_bGetFiles(szPath, &hHandle, &stFindFileData)) return;
// get the datas for the banks and classes
// get the datas for the anims, textures and levels
do if(stFindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
if(strlen(stFindFileData.cFileName) == 0) break;
if(strcmp(stFindFileData.cFileName, ".") == 0) continue;
if(strcmp(stFindFileData.cFileName, "..") == 0) continue;
if (m_oListObject -> FindString(-1,stFindFileData.cFileName)== LB_ERR )
{ // create the lists with objects associated with a type, by looking in the
// directory and taking the names of the files it contains.
GI_Item * p_oItem = new GI_Item(FALSE, stFindFileData.cFileName);
if (m_p_oTypeAnims)
m_fn_vCreateLists(&m_p_oTypeAnims->m_oList, szPath, "Families", p_oItem);
if (m_p_oTypeTextures)
m_fn_vCreateLists(&m_p_oTypeTextures->m_oList, szPath, "Textures", p_oItem);
if (m_p_oTypeLevels && strcmp(p_oItem->m_szName, "_Common")&& strcmp(p_oItem->m_szName, "_common"))
m_fn_vCreateLists(&m_p_oTypeLevels->m_oList, szPath, "Levels", p_oItem);
if (!strcmp(p_oItem->m_szName, "_Common") || !strcmp(p_oItem->m_szName, "_common"))
delete p_oItem;
}
}
while(FindNextFile(hHandle, &stFindFileData));
FindClose(hHandle);
}
/*
=======================================================================================
Name: m_fn_iGetAllFamilies
Description: Get the total number of animations
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::m_fn_iGetAllFamilies(GI_Item * p_oItem)
{
int i;
char szFile[500];
sprintf(szFile, "%s\\World\\Levels\\%s\\%s.alw", g_stInitialData.szSource, p_oItem->m_szName, p_oItem->m_szName);
MLT_vLoadALWFileInLib(szFile);
for(i=0; i<g_lAlwaysIndex; i++)
if (!p_oItem->m_oListOfFamilies.IsEmpty() && !p_oItem->m_oListOfFamilies.Find(g_hAlwaysInFile[i]->sLinkCharacter))
p_oItem->m_oListOfFamilies.AddTail(g_hAlwaysInFile[i]->sLinkCharacter);
else if (p_oItem->m_oListOfFamilies.IsEmpty())
p_oItem->m_oListOfFamilies.AddTail(g_hAlwaysInFile[i]->sLinkCharacter);
sprintf(szFile, "%s\\World\\Levels\\%s\\%s.lvl", g_stInitialData.szSource, p_oItem->m_szName, p_oItem->m_szName);
MLT_vLoadLVLFileInLib(szFile);
for(i=0; i<g_lInsertCharacterIndex; i++)
if (!p_oItem->m_oListOfFamilies.IsEmpty() && !p_oItem->m_oListOfFamilies.Find(g_hInsertCharacterInFile[i]->sLinkCharacter))
p_oItem->m_oListOfFamilies.AddTail(g_hInsertCharacterInFile[i]->sLinkCharacter);
else if (p_oItem->m_oListOfFamilies.IsEmpty())
p_oItem->m_oListOfFamilies.AddTail(g_hInsertCharacterInFile[i]->sLinkCharacter);
}
/*
=======================================================================================
Name: m_fn_iGetAllAnimations
Description: Get the total number of animations
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::m_fn_iGetAllAnimations(GI_Item * p_oItem)
{
int i;
char szFile[500];
sprintf(szFile, "%s\\World\\Levels\\_Common\\Families\\%s\\%s.sta", g_stInitialData.szSource, p_oItem->m_szName, p_oItem->m_szName);
MLT_vLoadSTAFileInLib(szFile);
for(i=0; i<g_lAnimIndex; i++)
{
if ( strcmp(g_hAnimInFile[i]->sAnimation, "") &&
!p_oItem->m_oListOfAnimations.IsEmpty() &&
(!p_oItem->m_oListOfAnimations.Find(g_hAnimInFile[i]->sAnimation)))
p_oItem->m_oListOfAnimations.AddTail(g_hAnimInFile[i]->sAnimation);
else
if (p_oItem->m_oListOfAnimations.IsEmpty())
p_oItem->m_oListOfAnimations.AddTail(g_hAnimInFile[i]->sAnimation);
}
}
/*
=======================================================================================
Name: m_fn_iGetAllObjects
Description: Get the total number of objects in all lists
Author: Mihaela Tancu
=======================================================================================
*/
int CDlgMain::m_fn_iGetAllObjects()
{
int iResult=0;
// for all the types in the list box with types, add the size of the list box at the iResult
if (m_p_oTypeAnims)
iResult = m_p_oTypeAnims->m_oList.GetCount();
if (m_p_oTypeTextures)
iResult += m_p_oTypeTextures->m_oList.GetCount();
if (m_p_oTypeLevels)
iResult += m_p_oTypeLevels->m_oList.GetCount();
return iResult;
}
/*
=======================================================================================
Name: m_fn_vSelectAllInList
Description: Select/deselect the items in the list according with the parameter bSet
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::m_fn_vSelectAllInList(GI_Type * _p_oType, BOOL bSet)
{
int iSize, j=0;
if (_p_oType)
{ iSize = _p_oType->m_oList.GetCount();
// for all the items (objects) in the list box, make them active/inactive according to the bSet flag.
for (int i=0; i< iSize; i++)
{
GI_Item *p_oItem = _p_oType->m_oList.RemoveHead();
if (p_oItem->m_bActived)
j++;
p_oItem->m_bActived = bSet;
_p_oType->m_oList.AddTail(p_oItem);
}
// modify the number of selected objects in the list according with the flag bSet
if (bSet)
_p_oType->m_iSelected = _p_oType->m_oList.GetCount();
else
_p_oType->m_iSelected = 0;
m_oListObject->Invalidate(TRUE);
// update the total number of selections (for all the lists with objects)
if (bSet)
m_iCountOfSelections += iSize - j;
else
m_iCountOfSelections -= j; //Size;
}
}
/*
=======================================================================================
Name: m_fn_vSelectAll
Description: Select/deselect all the objects in all lists according with parameter bSet
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::m_fn_vSelectAll(BOOL bSet)
{
// call the function for all the existing types in the list box
// with type
m_fn_vSelectAllInList(m_p_oTypeAnims, bSet);
m_fn_vSelectAllInList(m_p_oTypeLevels, bSet);
m_fn_vSelectAllInList(m_p_oTypeTextures, bSet);
}
/*
=======================================================================================
Name: m_fn_vEnableButtons
Description: Modify the state of the selection buttons
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::m_fn_vEnableButtons(BOOL bSet)
{
// enable/disable selections buttons according to bSet
GetDlgItem(IDC_BUTTON_ALLINLIST)->EnableWindow(!bSet);
GetDlgItem(IDC_BUTTON_ALL)->EnableWindow(!bSet);
GetDlgItem(IDC_BUTTON_CLEAR)->EnableWindow(bSet);
GetDlgItem(IDC_BUTTON_CLEARALL)->EnableWindow(bSet);
GetDlgItem(IDC_BUTTON_CONVERT)->EnableWindow(bSet);
GetDlgItem(IDC_BUTTON_CONVTEX)->EnableWindow(bSet);
GetDlgItem(IDC_BUTTON_CONVANI)->EnableWindow(bSet);
GetDlgItem(IDC_BUTTON_USED)->EnableWindow(bSet);
GetDlgItem(IDC_BUTTON_CONVLEVEL)->EnableWindow(bSet);
GetDlgItem(IDC_BUTTON_A)->EnableWindow(bSet);
GetDlgItem(IDC_BUTTON_Z)->EnableWindow(bSet);
GetDlgItem(IDC_BUTTON_BMP)->EnableWindow(bSet);
GetDlgItem(IDC_BUTTON_TGA)->EnableWindow(bSet);
GetDlgItem(IDC_BUTTON_C16)->EnableWindow(bSet);
GetDlgItem(IDC_BUTTON_C32)->EnableWindow(bSet);
GetDlgItem(IDC_BUTTON_AUTO)->EnableWindow(bSet);
}
/*
=======================================================================================
Name: m_fn_vSelectAllForType
Description: Select all the items (objects) for a selected type and change the color of the type (if it is necessary)
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::m_fn_vSelectAllForType(BOOL bSet)
{
char szPath[MAX_PATH];
// get the selected type
int iIndex = m_oListType->GetCurSel();
m_oListType->GetText(iIndex, szPath);
GI_Type *p_oType = (GI_Type *)m_oListType->GetItemData(iIndex);
// for the selected type, select all its objects
m_fn_vSelectAllInList(p_oType, bSet);
m_oListType->Invalidate(TRUE);
}
/*
=======================================================================================
Name: m_fn_bGetFiles
Description: Test if the directory contain any data
Author: Mihaela Tancu
=======================================================================================
*/
BOOL CDlgMain::m_fn_bGetFiles(char *szFile, HANDLE *hHandle, WIN32_FIND_DATA *stFindFileData)
{
memset(&(*stFindFileData),0,sizeof(*stFindFileData));
*hHandle = FindFirstFile(szFile, &(*stFindFileData));
//return a boolean for telling if some files *.* exists in the directory or not
if( *hHandle == INVALID_HANDLE_VALUE)
return FALSE;
return TRUE;
}
/*
=======================================================================================
Name: m_fn_vEnableButtonAll
Description: Change the state of the button All
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::m_fn_vEnableButtonAll()
{ // enable/disable the All button according to total number of selections
if (m_iCountOfSelections==m_fn_iGetAllObjects())
GetDlgItem(IDC_BUTTON_ALL)->EnableWindow(FALSE);
else
GetDlgItem(IDC_BUTTON_ALL)->EnableWindow(TRUE);
}
/*
=======================================================================================
Name: m_fn_vEnableButtonConvert
Description: Change the state for the Convert and Clear all buttons
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::m_fn_vEnableButtonConvert()
{
// enable/disable the All button according to total number of selections
if (!m_iCountOfSelections)
{ GetDlgItem(IDC_BUTTON_CONVERT)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_CONVTEX)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_CONVLEVEL)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_CONVANI)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_CLEARALL)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_USED)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_A)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_Z)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_BMP)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_TGA)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_C16)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_C32)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_AUTO)->EnableWindow(FALSE);
}
else
{ // YLG Correction
/*
if (m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected)
GetDlgItem(IDC_BUTTON_CONVTEX)->EnableWindow(TRUE);
else
GetDlgItem(IDC_BUTTON_CONVTEX)->EnableWindow(FALSE);
if (m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected && (bConvAnim || bConvTextures))
GetDlgItem(IDC_BUTTON_CONVLEVEL)->EnableWindow(TRUE);
else
GetDlgItem(IDC_BUTTON_CONVLEVEL)->EnableWindow(FALSE);
if (m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected)
{ GetDlgItem(IDC_BUTTON_CONVANI)->EnableWindow(TRUE);
}
else
{ GetDlgItem(IDC_BUTTON_CONVANI)->EnableWindow(FALSE);
}
if ((m_p_oTypeAnims && m_p_oTypeAnims->m_iSelected) ||
(m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected && bConvAnim))
{ GetDlgItem(IDC_BUTTON_USED)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_A)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_Z)->EnableWindow(TRUE);
}
else
{ GetDlgItem(IDC_BUTTON_USED)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_A)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_Z)->EnableWindow(FALSE);
}
if ((m_p_oTypeTextures && m_p_oTypeTextures->m_iSelected) ||
(m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected && bConvTextures))
{ GetDlgItem(IDC_BUTTON_BMP)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_TGA)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_C16)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_C32)->EnableWindow(TRUE);
}
else
{ GetDlgItem(IDC_BUTTON_BMP)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_TGA)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_C16)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_C32)->EnableWindow(FALSE);
}
if (m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected &&
bConvAnim && GetDlgItem(IDC_BUTTON_CONVANI)->IsWindowEnabled() ||
bConvTextures && GetDlgItem(IDC_BUTTON_CONVTEX)->IsWindowEnabled()||
m_p_oTypeAnims && m_p_oTypeAnims->m_iSelected ||
m_p_oTypeTextures && m_p_oTypeTextures->m_iSelected)
GetDlgItem(IDC_BUTTON_CONVERT)->EnableWindow(TRUE);
else
GetDlgItem(IDC_BUTTON_CONVERT)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_CLEARALL)->EnableWindow(TRUE);
*/
if (m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected)
{ GetDlgItem(IDC_BUTTON_CONVLEVEL)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_AUTO)->EnableWindow(TRUE);
}
else
{ GetDlgItem(IDC_BUTTON_CONVLEVEL)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_AUTO)->EnableWindow(FALSE);
}
if ((m_p_oTypeAnims && m_p_oTypeAnims->m_iSelected) ||
(m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected && bConvAnim))
{ GetDlgItem(IDC_BUTTON_USED)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_A)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_Z)->EnableWindow(TRUE);
}
else
{ GetDlgItem(IDC_BUTTON_USED)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_A)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_Z)->EnableWindow(FALSE);
}
if ((m_p_oTypeTextures && m_p_oTypeTextures->m_iSelected) ||
(m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected && bConvTextures))
{ GetDlgItem(IDC_BUTTON_BMP)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_TGA)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_C16)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_C32)->EnableWindow(TRUE);
}
else
{ GetDlgItem(IDC_BUTTON_BMP)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_TGA)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_C16)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_C32)->EnableWindow(FALSE);
}
if (bConvTextures)
GetDlgItem(IDC_BUTTON_CONVTEX)->EnableWindow(TRUE);
else
GetDlgItem(IDC_BUTTON_CONVTEX)->EnableWindow(FALSE);
if (m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected ||
// bConvTextures && GetDlgItem(IDC_BUTTON_CONVTEX)->IsWindowEnabled()||
m_p_oTypeAnims && m_p_oTypeAnims->m_iSelected ||
m_p_oTypeTextures && m_p_oTypeTextures->m_iSelected)
GetDlgItem(IDC_BUTTON_CONVERT)->EnableWindow(TRUE);
else
GetDlgItem(IDC_BUTTON_CONVERT)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_CLEARALL)->EnableWindow(TRUE);
}
}
/*
=======================================================================================
Name: m_fn_vBrowseDirectory()
Description: browse the directory
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::m_fn_vBrowseDirectory(char* szPath, int *p_iResult, ITEMIDLIST *p_stItemRoot)
{
BROWSEINFO stBI;
ITEMIDLIST *p_stItem;
char szDisplayName[ MAX_PATH ];
// prepare the structure for the browsing
stBI.hwndOwner = this->GetSafeHwnd();
stBI.pidlRoot = p_stItemRoot;
stBI.pszDisplayName = szDisplayName;
stBI.lpszTitle = "Choose Target Path";
stBI.ulFlags = 0;
stBI.lpfn = NULL;
*p_iResult = 0;
if ((p_stItem = SHBrowseForFolder( &stBI )) != NULL)
{
// obtain the new path
SHGetPathFromIDList( p_stItem, szPath );
*p_iResult = 1;
}
}
/*
=======================================================================================
Name: m_fn_bExistDirectories
Description: Test if in a given directory are any directories (used for RawData directory, it have to have sub-directories)
Author: Mihaela Tancu
=======================================================================================
*/
BOOL CDlgMain::m_fn_bExistDirectories(char *_szPath)
{
int i=0;
char szPath[MAX_PATH];
strcpy(szPath, _szPath);
strcat (szPath, "\\*");
HANDLE hHandle;
WIN32_FIND_DATA stFindFileData;
if (!m_fn_bGetFiles(szPath, &hHandle, &stFindFileData)) return FALSE;
// if there is a directory different from . and .. than increment
// the number of the sub-directories
do if(stFindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
if(strcmp(stFindFileData.cFileName, ".") == 0) continue;
if(strcmp(stFindFileData.cFileName, "..") == 0) continue;
i++;
}
while(FindNextFile(hHandle, &stFindFileData));
FindClose(hHandle);
return i;
}
/*
=======================================================================================
Name: m_fn_vUpdateAll
Description: Update all the datas
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::m_fn_vUpdateAll()
{
m_fn_vGetAllTypes();
// select the first type in the list box
m_oListType->SetCurSel( 0 );
char szPath[MAX_PATH];
m_oListType->GetText(0, szPath);
// update the lists with objects (for the existing types).
if (m_p_oTypeAnims) m_fn_vUpdateListBox(&m_p_oTypeAnims->m_oList, szPath, "Animations");
if (m_p_oTypeLevels) m_fn_vUpdateListBox(&m_p_oTypeLevels->m_oList, szPath, "Levels");
if (m_p_oTypeTextures) m_fn_vUpdateListBox(&m_p_oTypeTextures->m_oList, szPath, "Textures");
}
/*
=======================================================================================
Name: OnButtonBrowseExeFile
Description: Handle function for message BN_CLICKED on Change button
Author: Mihaela Tancu
=======================================================================================
*/
void CDlgMain::OnButtonBrowseExeFile()
{
// TODO: Add your control notification handler code here
static char BASED_CODE szFilter[] = "Executable file(*.exe)|*.exe||";
char szFileName[ _MAX_PATH ];
char *p_szShortName;
DWORD dwFlags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY | OFN_NOCHANGEDIR;
CFileDialog oFD( TRUE, "exe", g_stInitialData.szExeFile, dwFlags, szFilter, this);
// changing the executable file
if (SetCurrentDirectory( sInitialDir ))
{
if (oFD.DoModal() == IDOK)
{
strcpy ( szFileName, (char *) (LPCTSTR) oFD.GetPathName() );
// obtain the name of the executable without its path
p_szShortName = strrchr(szFileName,'\\');
if( p_szShortName )
{
*p_szShortName = '\0';
p_szShortName++;
}
else
p_szShortName = szFileName;
// after obtaining the local path and the name of the executable file
// set this value in the variable for it:g_stInitialData.szLocalPath
// and set the new name of the executable in edit box control
if (stricmp(szFileName, sInitialDir)) //_access( p_szShortName, 0) == -1)) //the file does not exist
strcpy(p_szShortName, g_stInitialData.szExeFile);
if (bDebug)
fn_IniData_vSetSPDebug( p_szShortName );
else
fn_IniData_vSetSPRelease( p_szShortName );
strcpy( g_stInitialData.szExeFile, p_szShortName);
GetDlgItem( IDC_EDIT_EXEC )->SetWindowText( p_szShortName );
}
}
}