/*========================================================================= * * DlgMain3.cpp - implementation file for main window class * Other functions * * Version 1.0 * Revision date * *=======================================================================*/ #include #include #include "stdafx.h" #include "DlgMain.h" #include "system.h" #include "print.h" #include "IniData.h" //--------------------------------------------------------------------------- //==================================================// // WARNINGS // //==================================================// /**************************************************************************** * Description: all the function m_fn_bWarningUser * * Parameters: *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ BOOL CDlgMain::m_fn_vTestIniDatas() { return m_fn_bWarningUser(); } /**************************************************************************** * Description: Inform the user, if the exe file and the directories does not exist or are not set * * Parameters: *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ BOOL CDlgMain::m_fn_bWarningUser() { //init the strings for the edit box controls BOOL bDisplay = FALSE; char _szMessage[500]; char szPath[MAX_PATH]; xString sDir; if(!m_bConversion) { sprintf( _szMessage,"Warning(s) : \n\n"); int iSize= strlen(_szMessage); GetCurrentDirectory(256, sDir); //tests all the directories if they exist if (SetCurrentDirectory( g_stInitialData.szGameSpecific1 )) GetDlgItem(IDC_EDIT_GAMESPECIFIC1)->SetWindowText( g_stInitialData.szGameSpecific1 ); if (SetCurrentDirectory( g_stInitialData.szGameSpecific2 )) GetDlgItem(IDC_EDIT_GAMESPECIFIC2)->SetWindowText( g_stInitialData.szGameSpecific2 ); if (SetCurrentDirectory( g_stInitialData.szRawSpecific1 )) GetDlgItem(IDC_EDIT_RAWSPECIFIC1)->SetWindowText( g_stInitialData.szRawSpecific1 ); if (SetCurrentDirectory( g_stInitialData.szRawSpecific2 )) GetDlgItem(IDC_EDIT_RAWSPECIFIC2)->SetWindowText( g_stInitialData.szRawSpecific2 ); m_fn_vShowPartialWarning(SetCurrentDirectory( g_stInitialData.szGameData ),"GameData", _szMessage, &bDisplay, IDC_EDIT_GAMEDATA, g_stInitialData.szGameData); m_fn_vShowPartialWarning(SetCurrentDirectory( g_stInitialData.szRawData ),"RawData", _szMessage, &bDisplay, IDC_EDIT_RAWDATA, g_stInitialData.szRawData); strcpy(szPath, g_stInitialData.szGameData ); strcat(szPath, "\\"); if (!m_fn_bExistDirectories(g_stInitialData.szGameData)) sprintf( _szMessage,"\tYou have to select another GameData directory, because it does not contain any directories !\n\n"); if (bDisplay) AfxMessageBox( _szMessage, MB_OK | MB_ICONSTOP ); SetCurrentDirectory( sDir); } return bDisplay; } /**************************************************************************** * Description: Show a message for the directories (if they don't exist or are not set) * * Parameters: bSet : flag to set the path * szPath : path for the directory * _szMessage : warning message * bDisplay : returns the state * iID : ID of the control to update * szDir : path for the directory *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ void CDlgMain::m_fn_vShowPartialWarning (BOOL bSet, char *szPath, char *_szMessage, BOOL * bDisplay, int iID, char *szDir) { if (bSet) GetDlgItem(iID)->SetWindowText( szDir ); else { int iSize= strlen(_szMessage); if ((!strcmp(szPath, "Textures"))||(!strcmp(szPath, "Default"))) sprintf( _szMessage+iSize, "\tThe sub-directory %s of GameData directory, does not exist (or is not set). Please, choose another %s sub-directory!\n\n", szPath, szPath ); else 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; } } //==================================================// // MAIN PANEL : SHOW CONTROLS // //==================================================// /**************************************************************************** * Description: Show only the buttons for the "Options" panel * * Parameters: *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ void CDlgMain::m_fn_TabC_vShowControlsPanelDir() { m_fn_TabC_vChangeShowControlsPanelDir(TRUE); m_fn_TabC_vChangeShowControlsPanelSel(FALSE); m_fn_TabC_vChangeShowControlsPanelRes(FALSE); } /**************************************************************************** * Description: Show only the buttons for the "Selection" panel * * Parameters: *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ void CDlgMain::m_fn_TabC_vShowControlsPanelSel() { m_fn_TabC_vChangeShowControlsPanelDir(FALSE); m_fn_TabC_vChangeShowControlsPanelSel(TRUE); m_fn_TabC_vChangeShowControlsPanelRes(FALSE); m_fn_vUpdateForSelectConfig(); } /**************************************************************************** * Description: Show only the buttons for the "Result" panel * * Parameters: *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ void CDlgMain::m_fn_TabC_vShowControlsPanelRes() { m_fn_TabC_vChangeShowControlsPanelDir(FALSE); m_fn_TabC_vChangeShowControlsPanelSel(FALSE); m_fn_TabC_vChangeShowControlsPanelRes(TRUE); } //==================================================// // MAIN PANEL : CHANGE CONTROLS // //==================================================// /**************************************************************************** * Description: Show or hide the buttons for the "Options" panel * * Parameters: bChange : show or hide *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ void CDlgMain::m_fn_TabC_vChangeShowControlsPanelDir(BOOL bChange) { GetDlgItem(IDC_GROUP_SOURCEDIRECTORIES)->ShowWindow(bChange); GetDlgItem(IDC_GROUP_DESTDIRECTORIES)->ShowWindow(bChange); m_oConfigPanel.BringWindowToTop(); m_oConfigPanel.ShowWindow(bChange); if (bChange) { switch(m_oConfigPanel.GetCurSel()) { case 0: m_fn_vShowControlsPanelCurrent(); m_oButtonRegisterOption.ShowWindow(FALSE); m_oButtonCreateOption.ShowWindow(FALSE); break; case 1: m_fn_vShowControlsPanelCustom(); m_oButtonRegisterOption.ShowWindow(TRUE); m_oButtonCreateOption.ShowWindow(TRUE); break; } } else { m_fn_vChangeShowControlsPanelCurrent(FALSE); m_fn_vChangeShowControlsPanelCustom(FALSE); } m_oEditRegisterOption.ShowWindow(FALSE); m_oEditCreateOption.ShowWindow(FALSE); m_oEditRegisterSelect.ShowWindow(FALSE); m_oEditCreateSelect.ShowWindow(FALSE); GetDlgItem(IDC_STATIC_GAMEDATA)->ShowWindow(bChange); m_oCheckGameData.ShowWindow(bChange); m_oCheckGameSP1.ShowWindow(bChange); m_oCheckGameSP2.ShowWindow(bChange); GetDlgItem(IDC_EDIT_GAMEDATA)->ShowWindow(bChange); GetDlgItem(IDC_EDIT_GAMESPECIFIC1)->ShowWindow(bChange); GetDlgItem(IDC_EDIT_GAMESPECIFIC2)->ShowWindow(bChange); GetDlgItem(IDC_BROWSE_GAMEDATA)->ShowWindow(bChange); GetDlgItem(IDC_BROWSE_GAMESPECIFIC1)->ShowWindow(bChange); GetDlgItem(IDC_BROWSE_GAMESPECIFIC2)->ShowWindow(bChange); m_oEditGameSp1.ShowWindow(bChange); m_oEditGameSp2.ShowWindow(bChange); GetDlgItem(IDC_GROUP_MAINOPTIONS)->ShowWindow(bChange); m_oCheckRayman2.ShowWindow(bChange); m_oCheckModifLst.ShowWindow(bChange); m_oCheckEraseMdf.ShowWindow(bChange); if (m_bConversion && bChange) GetDlgItem(IDC_STATIC_PROGRESS)->ShowWindow(FALSE); if (m_bConversion) //the conversion is on { m_oCheckRayman2.EnableWindow(FALSE); m_oCheckModifLst.EnableWindow(FALSE); m_oCheckEraseMdf.EnableWindow(FALSE); } else { m_oCheckRayman2.EnableWindow(TRUE); m_oCheckModifLst.EnableWindow(TRUE); m_oCheckEraseMdf.EnableWindow(TRUE); } } /**************************************************************************** * Description: Show or hide the buttons for the "Selection" panel * * Parameters: bChange : show or hide *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ void CDlgMain::m_fn_TabC_vChangeShowControlsPanelSel(BOOL bChange) { GetDlgItem(IDC_STATIC_LISTMESSAGE)->ShowWindow(bChange && !m_oListType->GetCount()); m_oListType->ShowWindow(bChange && m_oListType->GetCount()); m_oListObject->ShowWindow(bChange && m_oListType->GetCount()); GetDlgItem(IDC_GROUP_SELECTIONCONFIG)->ShowWindow(bChange); m_oEditRegisterSelect.ShowWindow(FALSE); m_oEditCreateSelect.ShowWindow(FALSE); m_oButtonRegisterSelect.ShowWindow(bChange); m_oButtonCreateSelect.ShowWindow(bChange); m_oButtonDeleteSelect.ShowWindow(bChange); m_oButtonSaveSelect.ShowWindow(bChange); m_oComboChooseSelect.ShowWindow(bChange); GetDlgItem(IDC_GROUP_SELECTION)->ShowWindow(bChange); m_oSelectAll.ShowWindow(bChange); m_oSelectList.ShowWindow(bChange); m_oClearList.ShowWindow(bChange); m_oClearAll.ShowWindow(bChange); m_oConvert.ShowWindow(bChange); GetDlgItem(IDC_GROUP_CONFLICT)->ShowWindow(bChange); GetDlgItem(IDC_STATIC_ZOO)->ShowWindow(bChange); GetDlgItem(IDC_STATIC_SCT)->ShowWindow(bChange); GetDlgItem(IDC_STATIC_SPO)->ShowWindow(bChange); GetDlgItem(IDC_STATIC_GMT)->ShowWindow(bChange); GetDlgItem(IDC_STATIC_VMT)->ShowWindow(bChange); m_oCheckZooMax.ShowWindow(bChange); m_oCheckZooEds.ShowWindow(bChange); m_oCheckSctMax.ShowWindow(bChange); m_oCheckSctEds.ShowWindow(bChange); m_oCheckSpoMax.ShowWindow(bChange); m_oCheckSpoEds.ShowWindow(bChange); m_oCheckGmtMax.ShowWindow(bChange); m_oCheckGmtEds.ShowWindow(bChange); m_oCheckVmtMax.ShowWindow(bChange); m_oCheckVmtEds.ShowWindow(bChange); GetDlgItem(IDC_GROUP_OPTIONS)->ShowWindow(bChange); m_oCheckCopyAnims.ShowWindow(bChange); m_oCheckCopyTextures.ShowWindow(bChange); m_oCheckGenerateRLI.ShowWindow(bChange); m_oCheckUpdateGameDsc.ShowWindow(bChange); m_oCheckCreateFamily.ShowWindow(bChange); GetDlgItem(IDC_GROUP_ERASE)->ShowWindow(bChange); m_oCheckEraseDup.ShowWindow(bChange); m_oCheckEraseUnused.ShowWindow(bChange); GetDlgItem(IDC_GROUP_FAMILIES)->ShowWindow(bChange); m_oCheckAskFamily.ShowWindow(bChange); m_oCheckCommon.ShowWindow(bChange); m_oCheckSpecific.ShowWindow(bChange); GetDlgItem(IDC_GROUP_CONFIG)->ShowWindow(bChange); m_oEditRegisterOption.ShowWindow(FALSE); m_oEditCreateOption.ShowWindow(FALSE); m_oButtonRegisterOption.ShowWindow(bChange); m_oButtonCreateOption.ShowWindow(bChange); m_oButtonDeleteOption.ShowWindow(bChange); m_oButtonSaveOption.ShowWindow(bChange); m_oComboChooseOption.ShowWindow(bChange); if (m_bConversion && bChange) { m_fn_TabC_vDisableSelButtons() ; GetDlgItem(IDC_STATIC_PROGRESS)->ShowWindow(FALSE); } else { m_oButtonRegisterSelect.EnableWindow(m_oListType->GetCount() && !m_bConversion); m_oButtonCreateSelect.EnableWindow(m_oListType->GetCount() && !m_bConversion); m_oButtonDeleteSelect.EnableWindow(m_oListType->GetCount() && !m_bConversion && g_iCurrentIndexSelect); m_oButtonSaveSelect.EnableWindow(m_oListType->GetCount() && !m_bConversion && g_iCurrentIndexSelect); m_oComboChooseSelect.EnableWindow(m_oListType->GetCount() && !m_bConversion); m_oClearList.EnableWindow(m_oListType->GetCount()&& m_iCountOfSelections); m_oClearAll.EnableWindow(m_oListType->GetCount()&& m_iCountOfSelections); if (bChange) { m_oSelectAll.EnableWindow(m_oListType->GetCount()); m_oSelectList.EnableWindow(m_oListType->GetCount()); } m_oConvert.EnableWindow(m_oListType->GetCount()&& m_iCountOfSelections); m_oCheckZooMax.EnableWindow(m_oListType->GetCount()&& (m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected)||(m_p_oTypeClasses && m_p_oTypeClasses->m_iSelected)||(m_p_oTypeFamilies && m_p_oTypeFamilies->m_iSelected)); m_oCheckZooEds.EnableWindow(m_oListType->GetCount()&& (m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected)||(m_p_oTypeClasses && m_p_oTypeClasses->m_iSelected)||(m_p_oTypeFamilies && m_p_oTypeFamilies->m_iSelected)); m_oCheckSctMax.EnableWindow(m_oListType->GetCount()&&(m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected && g_bRaymanII)) ; m_oCheckSctEds.EnableWindow(m_oListType->GetCount()&&(m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected && g_bRaymanII)) ; m_oCheckSpoMax.EnableWindow(m_oListType->GetCount()&&(m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected)) ; m_oCheckSpoEds.EnableWindow(m_oListType->GetCount()&&(m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected)) ; m_oCheckGmtMax.EnableWindow(m_oListType->GetCount()&&(m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected)||(m_p_oTypeClasses && m_p_oTypeClasses->m_iSelected)||(m_p_oTypeBanks && m_p_oTypeBanks->m_iSelected)) ; m_oCheckGmtEds.EnableWindow(m_oListType->GetCount()&&(m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected)||(m_p_oTypeClasses && m_p_oTypeClasses->m_iSelected)||(m_p_oTypeBanks && m_p_oTypeBanks->m_iSelected)) ; m_oCheckVmtMax.EnableWindow(m_oListType->GetCount()&&(m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected)||(m_p_oTypeClasses && m_p_oTypeClasses->m_iSelected)||(m_p_oTypeBanks && m_p_oTypeBanks->m_iSelected)) ; m_oCheckVmtEds.EnableWindow(m_oListType->GetCount()&&(m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected)||(m_p_oTypeClasses && m_p_oTypeClasses->m_iSelected)||(m_p_oTypeBanks && m_p_oTypeBanks->m_iSelected)) ; m_oCheckCopyAnims.EnableWindow(m_oListType->GetCount()&&(m_p_oTypeFamilies && m_p_oTypeFamilies->m_iSelected)) ; m_oCheckCopyTextures.EnableWindow(m_oListType->GetCount()&&((m_p_oTypeBanks && m_p_oTypeBanks->m_iSelected) || (m_p_oTypeClasses && m_p_oTypeClasses->m_iSelected) || (m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected))) ; m_oCheckGenerateRLI.EnableWindow(m_oListType->GetCount() && (!m_bConversion && m_iCountOfSelections && (((m_p_oTypeBanks && m_p_oTypeBanks->m_iSelected) && g_bGenerateRLI) || (m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected)))) ; m_oCheckUpdateGameDsc.EnableWindow(m_oListType->GetCount()&&(m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected)); m_oCheckCreateFamily.EnableWindow(m_oListType->GetCount()&&(m_p_oTypeBanks && m_p_oTypeBanks->m_iSelected)) ; m_oCheckEraseDup.EnableWindow(m_oListType->GetCount()&&(m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected)) ; m_oCheckEraseUnused.EnableWindow(m_oListType->GetCount()&&(m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected)) ; m_oCheckAskFamily.EnableWindow(m_oListType->GetCount()&&(m_p_oTypeFamilies && m_p_oTypeFamilies->m_iSelected)); m_oCheckCommon.EnableWindow(m_oListType->GetCount()&&(m_p_oTypeFamilies && m_p_oTypeFamilies->m_iSelected)); m_oCheckSpecific.EnableWindow(m_oListType->GetCount()&&(m_p_oTypeFamilies && m_p_oTypeFamilies->m_iSelected)); m_oButtonRegisterOption.EnableWindow(m_oListType->GetCount() && !m_bConversion); m_oButtonCreateOption.EnableWindow(m_oListType->GetCount() && !m_bConversion); m_oButtonDeleteOption.EnableWindow(m_oListType->GetCount() && !m_bConversion && g_iCurrentIndexOption); m_oButtonSaveOption.EnableWindow(m_oListType->GetCount() && !m_bConversion && g_iCurrentIndexOption); m_oComboChooseOption.EnableWindow(m_oListType->GetCount() && !m_bConversion); GetDlgItem(IDC_STATIC_PROGRESS)->ShowWindow(FALSE); } } /**************************************************************************** * Description: Show or hide the buttons for the "Result" panel * * Parameters: bChange : show or hide *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ void CDlgMain::m_fn_TabC_vChangeShowControlsPanelRes(BOOL bChange) { if (bChange) { GetDlgItem(IDC_STATIC_COMMAND)->ShowWindow(SW_SHOW); GetDlgItem(IDC_RICHEDIT_COMMAND)->ShowWindow(SW_SHOW); GetDlgItem(IDC_STATIC_RESULT)->ShowWindow(SW_SHOW); GetDlgItem(IDC_RICHEDIT_RESULT)->ShowWindow(SW_SHOW); } else { GetDlgItem(IDC_STATIC_COMMAND)->ShowWindow(SW_HIDE); GetDlgItem(IDC_RICHEDIT_COMMAND)->ShowWindow(SW_HIDE); GetDlgItem(IDC_STATIC_RESULT)->ShowWindow(SW_HIDE); GetDlgItem(IDC_RICHEDIT_RESULT)->ShowWindow(SW_HIDE); } if (m_bConversion && bChange) GetDlgItem(IDC_STATIC_PROGRESS)->ShowWindow(TRUE); } //==================================================// // MAIN PANEL : ENABLE BUTTONS // //==================================================// /**************************************************************************** * Description: Enable the buttons for all the tabs * * Parameters: *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ void CDlgMain::m_fn_TabC_vEnableButtons() { GetDlgItem(IDC_BROWSE_RAWDATA)->EnableWindow(TRUE); GetDlgItem(IDC_BROWSE_RAWSPECIFIC1)->EnableWindow(TRUE); GetDlgItem(IDC_BROWSE_RAWSPECIFIC2)->EnableWindow(TRUE); GetDlgItem(IDC_BROWSE_GAMEDATA)->EnableWindow(TRUE); GetDlgItem(IDC_BROWSE_GAMESPECIFIC1)->EnableWindow(TRUE); GetDlgItem(IDC_BROWSE_GAMESPECIFIC2)->EnableWindow(TRUE); GetDlgItem(IDC_BROWSE_ANIMS)->EnableWindow(TRUE); GetDlgItem(IDC_BROWSE_BANKS)->EnableWindow(TRUE); GetDlgItem(IDC_BROWSE_CLASSES)->EnableWindow(TRUE); GetDlgItem(IDC_BROWSE_FAMILIES)->EnableWindow(TRUE); GetDlgItem(IDC_BROWSE_LEVELS)->EnableWindow(TRUE); GetDlgItem(IDC_BROWSE_TEXTURES)->EnableWindow(TRUE); GetDlgItem(IDC_BUTTON_HELP)->EnableWindow(TRUE); GetDlgItem(IDC_BUTTON_QUIT)->EnableWindow(TRUE); m_oCheckRayman2.EnableWindow(TRUE); m_oCheckModifLst.EnableWindow(TRUE); m_oCheckEraseMdf.EnableWindow(TRUE); m_oButtonRegisterDir.EnableWindow(TRUE); m_oButtonCreateDir.EnableWindow(TRUE); m_oButtonDeleteDir.EnableWindow(g_iCurrentIndexDir); m_oButtonSaveDir.EnableWindow(g_iCurrentIndexDir); m_oComboChooseDir.EnableWindow(TRUE); m_oButtonRegisterSelect.EnableWindow(TRUE); m_oButtonCreateSelect.EnableWindow(TRUE); m_oButtonDeleteSelect.EnableWindow(g_iCurrentIndexSelect); m_oButtonSaveSelect.EnableWindow(g_iCurrentIndexSelect); m_oComboChooseSelect.EnableWindow(TRUE); m_oButtonRegisterOption.EnableWindow(TRUE); m_oButtonCreateOption.EnableWindow(TRUE); m_oButtonDeleteOption.EnableWindow(g_iCurrentIndexOption); m_oButtonSaveOption.EnableWindow(g_iCurrentIndexOption); m_oComboChooseOption.EnableWindow(TRUE); m_oCheckRawSP1.EnableWindow(TRUE); m_oCheckRawSP2.EnableWindow(TRUE); m_oCheckGameSP1.EnableWindow(TRUE); m_oCheckGameSP2.EnableWindow(TRUE); m_oEditRawSp1.EnableWindow(TRUE); m_oEditRawSp2.EnableWindow(TRUE); m_oEditGameSp1.EnableWindow(TRUE); m_oEditGameSp2.EnableWindow(TRUE); m_oCheckRawData.EnableWindow(TRUE); m_oCheckGameData.EnableWindow(TRUE); } /**************************************************************************** * Description: Disable the buttons for all the tabs * * Parameters: *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ void CDlgMain::m_fn_TabC_vDisableAllButtons() { m_oEditRawSp1.EnableWindow(FALSE); m_oEditRawSp2.EnableWindow(FALSE); m_oCheckRawData.EnableWindow(FALSE); m_oCheckRawSP1.EnableWindow(FALSE); m_oCheckRawSP2.EnableWindow(FALSE); GetDlgItem(IDC_BROWSE_RAWDATA)->EnableWindow(FALSE); GetDlgItem(IDC_BROWSE_RAWSPECIFIC1)->EnableWindow(FALSE); GetDlgItem(IDC_BROWSE_RAWSPECIFIC2)->EnableWindow(FALSE); m_oButtonRegisterDir.EnableWindow(FALSE); m_oButtonCreateDir.EnableWindow(FALSE); m_oButtonDeleteDir.EnableWindow(FALSE); m_oButtonSaveDir.EnableWindow(FALSE); m_oComboChooseDir.EnableWindow(FALSE); GetDlgItem(IDC_BROWSE_ANIMS)->EnableWindow(FALSE); GetDlgItem(IDC_BROWSE_BANKS)->EnableWindow(FALSE); GetDlgItem(IDC_BROWSE_CLASSES)->EnableWindow(FALSE); GetDlgItem(IDC_BROWSE_FAMILIES)->EnableWindow(FALSE); GetDlgItem(IDC_BROWSE_LEVELS)->EnableWindow(FALSE); GetDlgItem(IDC_BROWSE_TEXTURES)->EnableWindow(FALSE); m_oEditGameSp1.EnableWindow(FALSE); m_oEditGameSp2.EnableWindow(FALSE); m_oCheckGameData.EnableWindow(FALSE); m_oCheckGameSP1.EnableWindow(FALSE); m_oCheckGameSP2.EnableWindow(FALSE); GetDlgItem(IDC_BROWSE_GAMEDATA)->EnableWindow(FALSE); GetDlgItem(IDC_BROWSE_GAMESPECIFIC1)->EnableWindow(FALSE); GetDlgItem(IDC_BROWSE_GAMESPECIFIC2)->EnableWindow(FALSE); m_oCheckRayman2.EnableWindow(FALSE); m_oCheckModifLst.EnableWindow(FALSE); m_oCheckEraseMdf.EnableWindow(FALSE); m_fn_TabC_vDisableSelButtons(); GetDlgItem(IDC_BUTTON_HELP)->EnableWindow(FALSE); GetDlgItem(IDC_BUTTON_QUIT)->EnableWindow(FALSE); } /**************************************************************************** * Description: Disable the buttons for the second panel * * Parameters: *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ void CDlgMain::m_fn_TabC_vDisableSelButtons() { m_oButtonRegisterSelect.EnableWindow(FALSE); m_oButtonCreateSelect.EnableWindow(FALSE); m_oButtonDeleteSelect.EnableWindow(FALSE); m_oButtonSaveSelect.EnableWindow(FALSE); m_oComboChooseSelect.EnableWindow(FALSE); m_oSelectAll.EnableWindow(FALSE); m_oSelectList.EnableWindow(FALSE); m_oClearList.EnableWindow(FALSE); m_oClearAll.EnableWindow(FALSE); m_oConvert.EnableWindow(FALSE); m_oCheckZooMax.EnableWindow(FALSE); m_oCheckZooEds.EnableWindow(FALSE); m_oCheckSctMax.EnableWindow(FALSE); m_oCheckSctEds.EnableWindow(FALSE); m_oCheckSpoMax.EnableWindow(FALSE); m_oCheckSpoEds.EnableWindow(FALSE); m_oCheckGmtMax.EnableWindow(FALSE); m_oCheckGmtEds.EnableWindow(FALSE); m_oCheckVmtMax.EnableWindow(FALSE); m_oCheckVmtEds.EnableWindow(FALSE); m_oCheckCopyAnims.EnableWindow(FALSE); m_oCheckCopyTextures.EnableWindow(FALSE); m_oCheckGenerateRLI.EnableWindow(FALSE); m_oCheckUpdateGameDsc.EnableWindow(FALSE); m_oCheckCreateFamily.EnableWindow(FALSE); m_oCheckEraseDup.EnableWindow(FALSE); m_oCheckEraseUnused.EnableWindow(FALSE); m_oCheckAskFamily.EnableWindow(FALSE); m_oCheckCommon.EnableWindow(FALSE); m_oCheckSpecific.EnableWindow(FALSE); m_oButtonRegisterOption.EnableWindow(FALSE); m_oButtonCreateOption.EnableWindow(FALSE); m_oButtonDeleteOption.EnableWindow(FALSE); m_oButtonSaveOption.EnableWindow(FALSE); m_oComboChooseOption.EnableWindow(FALSE); } //==================================================// // CONFIG PANEL : SHOW CONTROLS // //==================================================// /**************************************************************************** * Description: Show only the buttons for the "Current" panel * * Parameters: *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ void CDlgMain::m_fn_vShowControlsPanelCurrent() { m_fn_vChangeShowControlsPanelCurrent(TRUE); m_fn_vChangeShowControlsPanelCustom(FALSE); } /**************************************************************************** * Description: Show only the buttons for the "Custom" panel * * Parameters: *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ void CDlgMain::m_fn_vShowControlsPanelCustom() { m_fn_vChangeShowControlsPanelCurrent(FALSE); m_fn_vChangeShowControlsPanelCustom(TRUE); m_oButtonDeleteDir.EnableWindow(g_iCurrentIndexDir); m_oButtonSaveDir.EnableWindow(g_iCurrentIndexDir); // update directory pahs for Default config if (!g_iCurrentIndexDir) m_fn_vSetDefaultDirConfig(); } //==================================================// // CONFIG PANEL : CHANGE CONTROLS // //==================================================// /**************************************************************************** * Description: Show or hide the buttons for the "Current" panel * * Parameters: bChange : show or hide *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ void CDlgMain::m_fn_vChangeShowControlsPanelCurrent(BOOL bChange) { GetDlgItem(IDC_STATIC_RAWDATA)->ShowWindow(bChange); GetDlgItem(IDC_STATIC_RAWDATA)->BringWindowToTop(); m_oCheckRawData.ShowWindow(bChange); m_oCheckRawSP1.ShowWindow(bChange); m_oCheckRawSP2.ShowWindow(bChange); GetDlgItem(IDC_EDIT_RAWDATA)->ShowWindow(bChange); GetDlgItem(IDC_EDIT_RAWSPECIFIC1)->ShowWindow(bChange); GetDlgItem(IDC_EDIT_RAWSPECIFIC2)->ShowWindow(bChange); GetDlgItem(IDC_BROWSE_RAWDATA)->ShowWindow(bChange); GetDlgItem(IDC_BROWSE_RAWSPECIFIC1)->ShowWindow(bChange); GetDlgItem(IDC_BROWSE_RAWSPECIFIC2)->ShowWindow(bChange); m_oEditRawSp1.ShowWindow(bChange); m_oEditRawSp2.ShowWindow(bChange); } /**************************************************************************** * Description: Show or hide the buttons for the "Custom" panel * * Parameters: bChange : show or hide *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ void CDlgMain::m_fn_vChangeShowControlsPanelCustom(BOOL bChange) { //buttons from the panel Custom m_oEditRegisterDir.ShowWindow(FALSE); m_oEditCreateDir.ShowWindow(FALSE); m_oButtonRegisterDir.ShowWindow(bChange); m_oButtonCreateDir.ShowWindow(bChange); m_oButtonDeleteDir.ShowWindow(bChange); m_oButtonSaveDir.ShowWindow(bChange); m_oComboChooseDir.ShowWindow(bChange); GetDlgItem(IDC_BROWSE_ANIMS)->ShowWindow(bChange); GetDlgItem(IDC_EDIT_ANIMS)->ShowWindow(bChange); GetDlgItem(IDC_STATIC_ANIMS)->ShowWindow(bChange); GetDlgItem(IDC_STATIC_ANIMS)->BringWindowToTop(); GetDlgItem(IDC_BROWSE_BANKS)->ShowWindow(bChange); GetDlgItem(IDC_EDIT_BANKS)->ShowWindow(bChange); GetDlgItem(IDC_STATIC_BANKS)->ShowWindow(bChange); GetDlgItem(IDC_STATIC_BANKS)->BringWindowToTop(); GetDlgItem(IDC_BROWSE_CLASSES)->ShowWindow(bChange); GetDlgItem(IDC_EDIT_CLASSES)->ShowWindow(bChange); GetDlgItem(IDC_STATIC_CLASSES)->ShowWindow(bChange); GetDlgItem(IDC_STATIC_CLASSES)->BringWindowToTop(); GetDlgItem(IDC_BROWSE_FAMILIES)->ShowWindow(bChange); GetDlgItem(IDC_EDIT_FAMILIES)->ShowWindow(bChange); GetDlgItem(IDC_STATIC_FAMILIES)->ShowWindow(bChange); GetDlgItem(IDC_STATIC_FAMILIES)->BringWindowToTop(); GetDlgItem(IDC_BROWSE_LEVELS)->ShowWindow(bChange); GetDlgItem(IDC_EDIT_LEVELS)->ShowWindow(bChange); GetDlgItem(IDC_STATIC_LEVELS)->ShowWindow(bChange); GetDlgItem(IDC_STATIC_LEVELS)->BringWindowToTop(); GetDlgItem(IDC_BROWSE_TEXTURES)->ShowWindow(bChange); GetDlgItem(IDC_EDIT_TEXTURES)->ShowWindow(bChange); GetDlgItem(IDC_STATIC_TEXTURES)->ShowWindow(bChange); GetDlgItem(IDC_STATIC_TEXTURES)->BringWindowToTop(); } //==================================================// // BROWSE FUNCTIONS // //==================================================// /**************************************************************************** * Description: browse starting with the specified directory . * * Parameters: szPath : directory to start from * p_iResult : result of the search *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ void CDlgMain::m_fn_vBrowseStartingFromDirectory(char* szPath, int *p_iResult) { ITEMIDLIST *p_stItemRoot; unsigned long p_sNumber; IShellFolder* p_ShellFolder; SHGetDesktopFolder( &p_ShellFolder ); // transform a usual string to an unicode string int nLen = MultiByteToWideChar(CP_ACP, 0,g_stInitialData.szGameData, -1, NULL, NULL); LPWSTR lpszW = new WCHAR[nLen]; MultiByteToWideChar(CP_ACP, 0, g_stInitialData.szGameData, -1, lpszW, nLen); // prepare the structure for browsing starting from one specific directory p_ShellFolder->ParseDisplayName( m_hWnd, NULL, lpszW , &p_sNumber, &p_stItemRoot, NULL); delete[] lpszW; m_fn_vBrowseDirectory(szPath, p_iResult, p_stItemRoot) ; } /**************************************************************************** * Description: browse the specified directory . * * Parameters: szPath : directory to start from * p_iResult : result of the search * p_stItemRoot : root item *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ 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 path for directory"; 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; } } //==================================================// // SEARCH FUNCTIONS // //==================================================// /**************************************************************************** * Description: Test if in a given directory are any directories * * Parameters: _szPath : name of the directory *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ BOOL CDlgMain::m_fn_bExistDirectories(char *_szPath) { int i=0; char szPath[MAX_PATH]; HANDLE hHandle; WIN32_FIND_DATA stFindFileData; strcpy(szPath, _szPath); strcat (szPath, "\\*"); if (!m_fn_bGetFiles(szPath, &hHandle, &stFindFileData)) return FALSE; 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; } /**************************************************************************** * Description: Test if the directory contain any data. * * Parameters: szFile : name of the directory * hHandle : search handle * stFindFileData : search data *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ 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; } //==================================================// // GET DATA & TYPES // //==================================================// /**************************************************************************** * Description: Get all available types for the list box with types. * * Parameters: szName : name of the directory * szObject : object to search *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ void CDlgMain::m_fn_vGetAllTypes() { char szAnims[MAX_PATH]; char szBanks[MAX_PATH]; char szClasses[MAX_PATH]; char szFamilies[MAX_PATH]; char szLevels[MAX_PATH]; char szTextures[MAX_PATH]; int iNumber=0; // set all the lists with objects m_fn_vAddType(m_p_oTypeAnims, szAnims, "Anims","\\World\\Graphics\\Anims" , &iNumber); m_fn_vAddType(m_p_oTypeBanks, szBanks, "Banks","\\World\\Graphics\\Objects\\Banks" , &iNumber); m_fn_vAddType(m_p_oTypeClasses, szClasses, "Classes","\\World\\Graphics\\Objects\\Classes" , &iNumber); m_fn_vAddType(m_p_oTypeFamilies, szFamilies, "Families","\\World\\Families" , &iNumber); m_fn_vAddType(m_p_oTypeLevels, szLevels, "Levels","\\World\\Levels" , &iNumber); m_fn_vAddType(m_p_oTypeTextures, szTextures, "Textures","\\World\\Graphics\\Textures" , &iNumber); if (!iNumber ) { m_oListType->ResetContent(); m_oListObject->ResetContent(); } m_fn_vGetSetDatasInList(szAnims, szBanks, szClasses, szFamilies, szLevels, szTextures); } /**************************************************************************** * Description: Get all datas (objects) for all the types. * * Parameters: szName : name of the directory *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ void CDlgMain::m_fn_vGetDatas(char *szType, char *szPath) { HANDLE hHandle; WIN32_FIND_DATA stFindFileData; if (!m_fn_bGetFiles(szPath, &hHandle, &stFindFileData)) return; // get the datas for the banks and classes if (!strcmp(szType, "Banks")||!strcmp(szType, "Classes")) { do if(stFindFileData.dwFileAttributes) { 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 ) { GI_Item * p_oItem = new GI_Item(FALSE, MLT_p_cGetFileNameWithoutExt(stFindFileData.cFileName)); if (m_p_oTypeBanks && !strcmp(szType, "Banks")) m_fn_vCreateLists(&m_p_oTypeBanks->m_oList, szPath, "Banks", p_oItem); if (m_p_oTypeClasses && !strcmp(szType, "Classes")) m_fn_vCreateLists(&m_p_oTypeClasses->m_oList, szPath, "Classes", p_oItem); } } while(FindNextFile(hHandle, &stFindFileData)); } else { // get the datas for the anims, families 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 ) { GI_Item * p_oItem = new GI_Item(FALSE, stFindFileData.cFileName); if (m_p_oTypeAnims && !strcmp(szType, "Anims")) m_fn_vCreateLists(&m_p_oTypeAnims->m_oList, szPath, "Anims", p_oItem); if (m_p_oTypeFamilies && !strcmp(szType, "Families")) m_fn_vCreateLists(&m_p_oTypeFamilies->m_oList, szPath, "Families", p_oItem); if (m_p_oTypeLevels && !strcmp(szType, "Levels")) m_fn_vCreateLists(&m_p_oTypeLevels->m_oList, szPath, "Levels", p_oItem); if (m_p_oTypeTextures && !strcmp(szType, "Textures")) m_fn_vCreateLists(&m_p_oTypeTextures->m_oList, szPath, "Textures", p_oItem); } } while(FindNextFile(hHandle, &stFindFileData)); } FindClose(hHandle); } /**************************************************************************** * Description: Get the datas from the directories and set the lists with objects. * * Parameters: szAnims : anims directory * szBanks : banks directory * szClasses : classes directory * szFamilies : families directory * szLevels : levels directory * szTextures : textures directory *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ void CDlgMain::m_fn_vGetSetDatasInList( char *szAnims, char *szBanks, char *szClasses, char *szFamilies, char *szLevels, char * szTextures) { if (m_oListType->GetCount()) { // get all datas for all the existing types in the list box with types m_fn_vGetDatas("Anims", strcat(szAnims, "\\*.*")); m_fn_vGetDatas("Banks", strcat(szBanks, "\\*.mod")); m_fn_vGetDatas("Classes", strcat(szClasses, "\\*.mod")); m_fn_vGetDatas("Families", strcat(szFamilies, "\\*.*")); m_fn_vGetDatas("Levels", strcat(szLevels, "\\*.*")); m_fn_vGetDatas("Textures", strcat(szTextures, "\\*.*")); } } //==================================================// // CREATE LISTS // //==================================================// /**************************************************************************** * Description: Find the number of elements for a type. * * Parameters: szFiles : name of the directory *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ int CDlgMain::m_fn_iAddTestDirType(char* szFiles) { int iTypes=0; HANDLE hHandle; WIN32_FIND_DATA stFindFileData; if (!m_fn_bGetFiles(szFiles, &hHandle, &stFindFileData)) return 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; } /**************************************************************************** * Description: Add an item to the list * * Parameters: _oListObject : obejct list * szPath : directory * szType : name of type * _p_oItem :new object *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ void CDlgMain::m_fn_vCreateLists(CList *_oListObject, char *szPath, char *szType, GI_Item * _p_oItem ) { // add an item to the list _oListObject -> AddTail( _p_oItem); } /**************************************************************************** * Description: add that type in the list box with types * * Parameters: _p_oType : pointer on the new type * szType : name of type * iNumber : number of data for this type *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ 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 *_p_oType = p_oType; m_oListType -> SetItemData( iIndex, (DWORD) *_p_oType ); } } } } /**************************************************************************** * Description: add that type in the list box with types * * Parameters: _p_oType : new type * szReturn : returns the seult * szType : name of type * szDir : name of directory * iNumber : number of data for this type *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ void CDlgMain::m_fn_vAddType(GI_Type * p_oType, char *szReturn, char *szType, char *szDir, int *iNumber) { char _szType[MAX_PATH]; xString sDir; switch(g_iRaw) { case 0: strcpy(_szType, g_stInitialData.szRawData); break; case 1: strcpy(_szType, g_stInitialData.szRawSpecific1); break; case 2: strcpy(_szType, g_stInitialData.szRawSpecific2); break; } strcat (_szType, szDir); GetCurrentDirectory(256, sDir); if (SetCurrentDirectory(_szType)) { int iBanks=0, iAnims=0, iClasses=0, iFamilies=0, iLevels=0, iTextures = 0; // for Anims if (!strcmp(szType, "Anims")) { iAnims=m_fn_iAddTestDirType("*.*"); m_fn_vSetTypeInList(&m_p_oTypeAnims, szType, iAnims); } // for Banks if (!strcmp(szType, "Banks")) { iBanks=m_fn_iAddTestDirType("*.mod"); m_fn_vSetTypeInList(&m_p_oTypeBanks, szType, iBanks); } // for Classes if (!strcmp(szType, "Classes")) { iClasses=m_fn_iAddTestDirType("*.mod"); m_fn_vSetTypeInList(&m_p_oTypeClasses, szType, iClasses); } // for Families if (!strcmp(szType, "Families")) { iFamilies=m_fn_iAddTestDirType("*.*"); m_fn_vSetTypeInList(&m_p_oTypeFamilies, szType, iFamilies); } // for Levels if (!strcmp(szType, "Levels")) { iLevels=m_fn_iAddTestDirType("*.*"); m_fn_vSetTypeInList(&m_p_oTypeLevels, szType, iLevels); } // for Textures if (!strcmp(szType, "Textures")) { iTextures=m_fn_iAddTestDirType("*.*"); m_fn_vSetTypeInList(&m_p_oTypeTextures, szType, iTextures); } // increment the number of types (*iNumber)++; } strcpy(szReturn, _szType); SetCurrentDirectory(sDir); } /**************************************************************************** * Description: add anims type in the list box with types * * Parameters: *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ void CDlgMain::m_fn_vAddAnim(void) { int iObjects=0; xString sDir; GetCurrentDirectory(256, sDir); if (SetCurrentDirectory(g_szAnims)) { iObjects=m_fn_iAddTestDirType("*.*"); m_fn_vSetTypeInList(&m_p_oTypeAnims, "Anims", iObjects); } SetCurrentDirectory(sDir); } /**************************************************************************** * Description: add all anims * *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ void CDlgMain::m_fn_vAddAnims(void) { xString sDir; m_fn_vAddAnim(); strcpy(sDir, g_szAnims); strcat(sDir, "\\*.*"); if (m_oListType->GetCount()) m_fn_vGetDatas("Anims", sDir); if (m_p_oTypeAnims) if (!m_p_oTypeAnims->m_oList.GetCount()) //delete the anims from the type list box!!! m_oListType->DeleteString(m_oListType->FindString(-1, "Anims")); } /**************************************************************************** * Description: add banks type in the list box with types * * Parameters: *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ void CDlgMain::m_fn_vAddBank(void) { int iBanks=0; xString sDir; GetCurrentDirectory(256, sDir); if (SetCurrentDirectory(g_szBanks)) { iBanks=m_fn_iAddTestDirType("*.*"); m_fn_vSetTypeInList(&m_p_oTypeBanks, "Banks", iBanks); } SetCurrentDirectory(sDir); } /**************************************************************************** * Description: add all banks * *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ void CDlgMain::m_fn_vAddBanks(void) { xString sDir; m_fn_vAddBank(); strcpy(sDir, g_szBanks); strcat(sDir, "\\*.mod"); if (m_oListType->GetCount()) m_fn_vGetDatas("Banks", sDir); if (m_p_oTypeBanks) if (!m_p_oTypeBanks->m_oList.GetCount()) //delete the banks from the type list box!!! m_oListType->DeleteString(m_oListType->FindString(-1, "Banks")); } /**************************************************************************** * Description: add classes type in the list box with types * * Parameters: *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ void CDlgMain::m_fn_vAddClass(void) { int iClass=0; xString sDir; GetCurrentDirectory(256, sDir); if (SetCurrentDirectory(g_szClasses)) { iClass=m_fn_iAddTestDirType("*.*"); m_fn_vSetTypeInList(&m_p_oTypeClasses, "Classes", iClass); } SetCurrentDirectory(sDir); } /**************************************************************************** * Description: add all classes * *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ void CDlgMain::m_fn_vAddClasses(void) { xString sDir; m_fn_vAddClass(); strcpy(sDir, g_szClasses); strcat(sDir, "\\*.mod"); if (m_oListType->GetCount()) m_fn_vGetDatas("Classes", sDir); if (m_p_oTypeClasses) if( !m_p_oTypeClasses->m_oList.GetCount()) //delete the classes from the type list box!!! m_oListType->DeleteString(m_oListType->FindString(-1, "Classes")); } /**************************************************************************** * Description: add family type in the list box with types * * Parameters: *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ void CDlgMain::m_fn_vAddFamily(void) { int iFamilies=0; xString sDir; GetCurrentDirectory(256, sDir); if (SetCurrentDirectory(g_szFamilies)) { iFamilies=m_fn_iAddTestDirType("*.*"); m_fn_vSetTypeInList(&m_p_oTypeFamilies, "Families", iFamilies); } SetCurrentDirectory(sDir); } /**************************************************************************** * Description: add all families * *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ void CDlgMain::m_fn_vAddFamilies(void) { xString sDir; m_fn_vAddFamily(); strcpy(sDir, g_szFamilies); strcat(sDir, "\\*.*"); if (m_oListType->GetCount()) m_fn_vGetDatas("Families", sDir); if (m_p_oTypeFamilies) if (!m_p_oTypeFamilies->m_oList.GetCount()) //delete the families from the type list box!!! m_oListType->DeleteString(m_oListType->FindString(-1, "Families")); } /**************************************************************************** * Description: add levels type in the list box with types * * Parameters: *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ void CDlgMain::m_fn_vAddLevel(void) { int iLevels=0; xString sDir; GetCurrentDirectory(256, sDir); if (SetCurrentDirectory(g_szLevels)) { iLevels=m_fn_iAddTestDirType("*.*"); m_fn_vSetTypeInList(&m_p_oTypeLevels, "Levels", iLevels); } SetCurrentDirectory(sDir); } /**************************************************************************** * Description: add all levels * *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ void CDlgMain::m_fn_vAddLevels(void) { xString sDir; m_fn_vAddLevel(); strcpy(sDir, g_szLevels); strcat(sDir, "\\*.*"); if (m_oListType->GetCount()) m_fn_vGetDatas("Levels", sDir); if (m_p_oTypeLevels) if (!m_p_oTypeLevels->m_oList.GetCount()) //delete the levels from the type list box!!! m_oListType->DeleteString(m_oListType->FindString(-1, "Levels")); } /**************************************************************************** * Description: add textures type in the list box with types * * Parameters: *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ void CDlgMain::m_fn_vAddTexture(void) { int iTextures=0; xString sDir; GetCurrentDirectory(256, sDir); if (SetCurrentDirectory(g_szTextures)) { iTextures=m_fn_iAddTestDirType("*.*"); m_fn_vSetTypeInList(&m_p_oTypeTextures, "Textures", iTextures); } SetCurrentDirectory(sDir); } /**************************************************************************** * Description: add all textures * *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ void CDlgMain::m_fn_vAddTextures(void) { xString sDir; m_fn_vAddTexture(); strcpy(sDir, g_szTextures); strcat(sDir, "\\*.*"); if (m_oListType->GetCount()) m_fn_vGetDatas("Textures", sDir); if (m_p_oTypeTextures) if (!m_p_oTypeTextures->m_oList.GetCount()) //delete the textures from the type list box!!! m_oListType->DeleteString(m_oListType->FindString(-1, "Textures")); } //==================================================// // GET NUMBER OF OBJECTS // //==================================================// /**************************************************************************** * Description: Get the total number of objects in all lists. * * Parameters: *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ 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_oTypeBanks) iResult += m_p_oTypeBanks->m_oList.GetCount(); if (m_p_oTypeClasses) iResult += m_p_oTypeClasses->m_oList.GetCount(); if (m_p_oTypeFamilies) iResult += m_p_oTypeFamilies->m_oList.GetCount(); if (m_p_oTypeLevels) iResult += m_p_oTypeLevels->m_oList.GetCount(); if (m_p_oTypeTextures) iResult += m_p_oTypeTextures->m_oList.GetCount(); return iResult; } //==================================================// // UPDATE LIST BOXES // //==================================================// /**************************************************************************** * Description: Add the objects to the list box * * Parameters: _oListObjects : object list * szPath : directory * szType : type *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ void CDlgMain::m_fn_vUpdateListBox(CList *_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; iRemoveHead(); 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); } } /**************************************************************************** * Description: Update all the datas * * Parameters: *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ void CDlgMain::m_fn_vUpdateAll() { if (g_bStandardConfig) m_fn_vGetAllTypes(); else { m_fn_vAddAnims(); m_fn_vAddTextures(); m_fn_vAddBanks(); m_fn_vAddClasses(); m_fn_vAddFamilies(); m_fn_vAddLevels(); } // 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, "Anims"); if (m_p_oTypeBanks) m_fn_vUpdateListBox(&m_p_oTypeBanks->m_oList, szPath, "Banks"); if (m_p_oTypeClasses) m_fn_vUpdateListBox(&m_p_oTypeClasses->m_oList, szPath, "Classes"); if (m_p_oTypeFamilies) m_fn_vUpdateListBox(&m_p_oTypeFamilies->m_oList, szPath, "Families"); 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"); } //==================================================// // DRAW ITEMS IN LIST BOX // //==================================================// /**************************************************************************** * Description: Function for changing the color of one item in the list box with types * * Parameters: lpDIS : item to draw *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ void CDlgMain::m_fn_vOnDrawItemListBoxType(LPDRAWITEMSTRUCT lpDIS) { 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_WINDOW) ); // change the color of the type in the list box according if (p_oType->m_iSelected == 0) xTextColor = RGB(0, 0,0); int iSize = p_oType->m_oList.GetCount() ; if (p_oType->m_iSelected < iSize && p_oType->m_iSelected >0) xTextColor = RGB(0, 0, 255); if (p_oType->m_iSelected == iSize && iSize>0) xTextColor = RGB(0, 127,0); 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(); } /**************************************************************************** * Description: Function for drawing the cross before of one active item * * Parameters: lpDIS : item to draw *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ void CDlgMain::m_fn_vOnDrawItemListBoxObject(LPDRAWITEMSTRUCT lpDIS) { CDC *pDC = CDC::FromHandle( lpDIS->hDC ); CListBox *pLB = m_oListObject; GI_Item *p_oItem = (GI_Item*)pLB->GetItemData( lpDIS->itemID ); COLORREF xTextColor; pDC->SetBkColor( GetSysColor( COLOR_WINDOWTEXT ) ); pDC->FillSolidRect( &lpDIS->rcItem, GetSysColor( COLOR_WINDOW )); //draw a cross in front of an active object if (p_oItem -> m_bActived) { xTextColor = RGB(0, 0, 255); pDC->SetTextColor( xTextColor ); } else { xTextColor = RGB(0, 0, 0); pDC->SetTextColor( xTextColor ); } 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; if (p_oItem -> m_bActived) { xTextColor = RGB(0, 0, 255); pDC->SetTextColor( xTextColor ); } else { xTextColor = RGB(0, 0, 0); pDC->SetTextColor( xTextColor ); } pDC->DrawText( p_oItem -> m_fn_p_oGetName(), &lpDIS->rcItem, DT_SINGLELINE | DT_LEFT | DT_VCENTER ); } //==================================================// // UPDATE STATE OF OBJECTS // //==================================================// /**************************************************************************** * Description: Change the state of an object * * Parameters: _p_oItem : item to change * iIndexItem : index of the item *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ BOOL CDlgMain::m_fn_bOnChangeActivation(GI_Item *_p_oItem, int iIndexItem ) { int file; int iNbSel; int iSize; int iIndex = m_oListType->GetCurSel(); BOOL bResult = TRUE; xString sName; GI_Item *p_oItem; GI_Type *p_oType = (GI_Type *)m_oListType->GetItemData(iIndex); CListBox *pLB = m_oListObject; iNbSel = pLB->GetSelCount(); 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(p_oItemMul); } 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()) m_oSelectList.EnableWindow(FALSE); else m_oSelectList.EnableWindow(TRUE); if (p_oType->m_iSelected>0) m_oClearList.EnableWindow(TRUE); else m_oClearList.EnableWindow(FALSE); // g_bGenerateRLI = FALSE; if (m_p_oTypeBanks && m_p_oTypeBanks->m_iSelected) { for (int i=0; im_oList.GetCount(); i++) { // add the objects in the list box with objects p_oItem = m_p_oTypeBanks->m_oList.RemoveHead(); if (p_oItem->m_bActived) { if (g_bStandardConfig) { switch (g_iRaw) { case 0: sprintf(sName, "%s\\World\\Graphics\\Objects\\Banks\\%s.spo", g_stInitialData.szRawData , p_oItem->m_szName); break; case 1: sprintf(sName, "%s\\World\\Graphics\\Objects\\Banks\\%s.spo", g_stInitialData.szRawSpecific1 , p_oItem->m_szName); break; case 2: sprintf(sName, "%s\\World\\Graphics\\Objects\\Banks\\%s.spo", g_stInitialData.szRawSpecific2 , p_oItem->m_szName); break; } } else sprintf(sName, "%s\\%s.spo", g_szBanks, p_oItem->m_szName); if ((file = open(sName, O_RDONLY))!=-1) { g_bGenerateRLI = TRUE; close(file); } } m_p_oTypeBanks->m_oList.AddTail(p_oItem); } } if ((m_p_oTypeBanks && m_p_oTypeBanks->m_iSelected && g_bGenerateRLI)||(m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected)) m_oCheckGenerateRLI.EnableWindow(TRUE); else m_oCheckGenerateRLI.EnableWindow(FALSE); if (m_p_oTypeBanks && m_p_oTypeBanks->m_iSelected) m_oCheckCreateFamily.EnableWindow(TRUE); else m_oCheckCreateFamily.EnableWindow(FALSE); } m_oListType->Invalidate(TRUE); g_bChangeComboSelect = TRUE; return bResult ; } /**************************************************************************** * Description: Change the state of one object * * Parameters: _p_oItem : item to change * p_oType : type * bSet : new state *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ void CDlgMain::m_fn_vChange(GI_Item *p_oItem, GI_Type *p_oType, BOOL bSet ) { 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--; } } //==================================================// // SELECTION OF THE ITEMS // //==================================================// /**************************************************************************** * Description: reset the content of the dialogs *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ void CDlgMain::m_fn_vResetSelection() { //remove all the elements in the lists with objects m_fn_vFreeMemory(); m_p_oTypeAnims = NULL; m_p_oTypeBanks = NULL; m_p_oTypeClasses = NULL; m_p_oTypeFamilies = NULL; m_p_oTypeLevels = NULL; m_p_oTypeTextures = NULL; //reset the contains of the list boxes m_oListType->ResetContent(); m_oListObject->ResetContent(); m_fn_vUpdateAll(); //reset the total number of selections m_iCountOfSelections = 0; } /**************************************************************************** * Description: Select/deselect all the objects in all lists according with parameter bSet * * Parameters: bSet : selection flag *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ void CDlgMain::m_fn_vSelectAll(BOOL bSet) { m_fn_vSelectAllInList(m_p_oTypeAnims, bSet); m_fn_vSelectAllInList(m_p_oTypeBanks, bSet); m_fn_vSelectAllInList(m_p_oTypeClasses, bSet); m_fn_vSelectAllInList(m_p_oTypeFamilies, bSet); m_fn_vSelectAllInList(m_p_oTypeLevels, bSet); m_fn_vSelectAllInList(m_p_oTypeTextures, bSet); } /**************************************************************************** * Description: Select all the items (objects) for a selected type * * Parameters: bSet : selection flag *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ void CDlgMain::m_fn_vSelectAllForType(BOOL bSet) { char szPath[MAX_PATH]; int iIndex = m_oListType->GetCurSel(); GI_Type *p_oType = (GI_Type *)m_oListType->GetItemData(iIndex); m_oListType->GetText(iIndex, szPath); m_fn_vSelectAllInList(p_oType, bSet); m_oListType->Invalidate(TRUE); } /**************************************************************************** * Description: Select/deselect the items in the list according with the parameter bSet * * Parameters: _p_oType : type * bSet : selection flag *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ 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; } } //==================================================// // ENABLE / DISABLE BUTTONS // //==================================================// /**************************************************************************** * Description: Modify the state of the selection buttons. * * Parameters: szName : name of the directory * szObject : object to search *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ void CDlgMain::m_fn_vEnableButtons(BOOL bSet) { m_oSelectList.EnableWindow(!bSet); m_oSelectAll.EnableWindow(!bSet); m_oClearList.EnableWindow(bSet); m_oClearAll.EnableWindow(bSet); m_oCheckZooMax.EnableWindow(bSet); m_oCheckZooEds.EnableWindow(bSet); m_oCheckSctMax.EnableWindow(bSet); m_oCheckSctEds.EnableWindow(bSet); m_oCheckSpoMax.EnableWindow(bSet); m_oCheckSpoEds.EnableWindow(bSet); m_oCheckGmtMax.EnableWindow(bSet); m_oCheckGmtEds.EnableWindow(bSet); m_oCheckVmtMax.EnableWindow(bSet); m_oCheckVmtEds.EnableWindow(bSet); m_oCheckCopyTextures.EnableWindow(bSet); m_oCheckGenerateRLI.EnableWindow(bSet); m_oCheckUpdateGameDsc.EnableWindow(bSet); m_oCheckAskFamily.EnableWindow(bSet); m_oCheckCommon.EnableWindow(bSet&&!g_iData&&!g_bAskFamily); m_oCheckSpecific.EnableWindow(bSet&&!g_iData&&!g_bAskFamily); m_oCheckCreateFamily.EnableWindow(bSet); m_oConvert.EnableWindow(bSet); } /**************************************************************************** * Description: Change the state of the button All * * Parameters: szName : name of the directory * szObject : object to search *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ void CDlgMain::m_fn_vEnableButtonAll() { if (m_iCountOfSelections==m_fn_iGetAllObjects()) m_oSelectAll.EnableWindow(FALSE); else m_oSelectAll.EnableWindow(TRUE); } /**************************************************************************** * Description: Change the state for the Convert button * * Parameters: szName : name of the directory * szObject : object to search *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ void CDlgMain::m_fn_vEnableButtonConvert() { // enable/disable the All button according to total number of selections if (!m_iCountOfSelections) { m_oConvert.EnableWindow(FALSE); m_oCheckZooMax.EnableWindow(FALSE); m_oCheckZooEds.EnableWindow(FALSE); m_oCheckSpoMax.EnableWindow(FALSE); m_oCheckSpoEds.EnableWindow(FALSE); m_oCheckGmtMax.EnableWindow(FALSE); m_oCheckGmtEds.EnableWindow(FALSE); m_oCheckVmtMax.EnableWindow(FALSE); m_oCheckVmtEds.EnableWindow(FALSE); m_oClearAll.EnableWindow(FALSE); m_oCheckAskFamily.EnableWindow(FALSE); m_oCheckCommon.EnableWindow(FALSE); m_oCheckSpecific.EnableWindow(FALSE); m_oCheckCopyAnims.EnableWindow(FALSE); m_oCheckCopyTextures.EnableWindow(FALSE); m_oCheckGenerateRLI.EnableWindow(FALSE); m_oCheckUpdateGameDsc.EnableWindow(FALSE); m_oCheckEraseDup.EnableWindow(FALSE); m_oCheckEraseUnused.EnableWindow(FALSE); m_oCheckCreateFamily.EnableWindow(FALSE); if (g_bRaymanII) { m_oCheckSctMax.EnableWindow(FALSE); m_oCheckSctEds.EnableWindow(FALSE); } } else { m_oConvert.EnableWindow(TRUE); m_oClearAll.EnableWindow(TRUE); if ((m_p_oTypeBanks && m_p_oTypeBanks->m_iSelected)||(m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected)) m_oCheckGenerateRLI.EnableWindow(TRUE); else m_oCheckGenerateRLI.EnableWindow(FALSE); if ((m_p_oTypeBanks && m_p_oTypeBanks->m_iSelected) || (m_p_oTypeClasses && m_p_oTypeClasses->m_iSelected) || (m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected)) m_oCheckCopyTextures.EnableWindow(TRUE); else m_oCheckCopyTextures.EnableWindow(FALSE); if (m_p_oTypeFamilies && m_p_oTypeFamilies->m_iSelected) { m_oCheckCopyAnims.EnableWindow(TRUE); m_oCheckAskFamily.EnableWindow(TRUE); if (!g_iData && !g_bAskFamily) m_oCheckCommon.EnableWindow(TRUE); if (g_iData && !g_bAskFamily) m_oCheckSpecific.EnableWindow(TRUE); } else { m_oCheckCopyAnims.EnableWindow(FALSE); m_oCheckAskFamily.EnableWindow(FALSE); if (!g_iData && g_bAskFamily) m_oCheckCommon.EnableWindow(FALSE); if (g_iData && g_bAskFamily) m_oCheckSpecific.EnableWindow(FALSE); } if (m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected) { m_oCheckSpoMax.EnableWindow(TRUE); m_oCheckSpoEds.EnableWindow(TRUE); if (g_bRaymanII) { m_oCheckSctMax.EnableWindow(TRUE); m_oCheckSctEds.EnableWindow(TRUE); } m_oCheckUpdateGameDsc.EnableWindow(TRUE); m_oCheckEraseDup.EnableWindow(TRUE); m_oCheckEraseUnused.EnableWindow(TRUE); } else { m_oCheckSpoMax.EnableWindow(FALSE); m_oCheckSpoEds.EnableWindow(FALSE); if (g_bRaymanII) { m_oCheckSctMax.EnableWindow(FALSE); m_oCheckSctEds.EnableWindow(FALSE); } m_oCheckUpdateGameDsc.EnableWindow(FALSE); m_oCheckEraseDup.EnableWindow(FALSE); m_oCheckEraseUnused.EnableWindow(FALSE); } if ((m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected) || (m_p_oTypeBanks && m_p_oTypeBanks->m_iSelected) || (m_p_oTypeClasses && m_p_oTypeClasses->m_iSelected)) { m_oCheckGmtMax.EnableWindow(TRUE); m_oCheckGmtEds.EnableWindow(TRUE); m_oCheckVmtMax.EnableWindow(TRUE); m_oCheckVmtEds.EnableWindow(TRUE); } else { m_oCheckGmtMax.EnableWindow(FALSE); m_oCheckGmtEds.EnableWindow(FALSE); m_oCheckVmtMax.EnableWindow(FALSE); m_oCheckVmtEds.EnableWindow(FALSE); } if (m_p_oTypeBanks && m_p_oTypeBanks->m_iSelected) m_oCheckCreateFamily.EnableWindow(TRUE); else m_oCheckCreateFamily.EnableWindow(FALSE); if ((m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected) || (m_p_oTypeFamilies && m_p_oTypeFamilies->m_iSelected) || (m_p_oTypeClasses && m_p_oTypeClasses->m_iSelected)) { m_oCheckZooMax.EnableWindow(TRUE); m_oCheckZooEds.EnableWindow(TRUE); } else { m_oCheckZooMax.EnableWindow(FALSE); m_oCheckZooEds.EnableWindow(FALSE); } } } //==================================================// // OPTIONS // //==================================================// /**************************************************************************** * Description: set all the control buttons from the second list box * * Parameters: *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ void CDlgMain::m_fn_vSetOptions() { m_oCheckZooEds.SetCheck(!g_bIgnoreZoo); m_oCheckZooMax.SetCheck(g_bIgnoreZoo); m_oCheckSctEds.SetCheck(!g_bIgnoreSct); m_oCheckSctMax.SetCheck(g_bIgnoreSct); m_oCheckSpoEds.SetCheck(!g_bIgnoreSpo); m_oCheckSpoMax.SetCheck(g_bIgnoreSpo); m_oCheckGmtEds.SetCheck(!g_bIgnoreGmt); m_oCheckGmtMax.SetCheck(g_bIgnoreGmt); m_oCheckVmtEds.SetCheck(!g_bIgnoreTex); m_oCheckVmtMax.SetCheck(g_bIgnoreTex); m_oCheckCopyAnims.SetCheck(g_bCopyAnims); m_oCheckCopyTextures.SetCheck(g_bCopyTextures); m_oCheckGenerateRLI.SetCheck(g_bGenerateRLI); m_oCheckUpdateGameDsc.SetCheck(g_bUpdateGameDSC); m_oCheckCreateFamily.SetCheck(g_bCreateBasicFamily); m_oCheckEraseDup.SetCheck(g_bEraseDuplicated); m_oCheckEraseUnused.SetCheck(g_bEraseUnused); m_oCheckCommon.SetCheck(g_bCommonFamily); m_oCheckSpecific.SetCheck(g_bSpecificFamily); m_oCheckAskFamily.SetCheck(g_bAskFamily); } /**************************************************************************** * Description: Function for setting/resetting the flag for ignore options * * Parameters: iId : control ID * bChange : corresponding flag *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ void CDlgMain::m_fn_vChangeCheck(int iId, int iId1, BOOL *bChange) { *bChange = ! ((CButton *)GetDlgItem(iId))->GetCheck(); ((CButton *)GetDlgItem(iId1))->SetCheck(!(*bChange)); ((CButton *)GetDlgItem(iId))->SetCheck((*bChange)); if (iId==IDC_CHECK_RAYMAN2) { m_oCheckSctMax.EnableWindow((*bChange)); m_oCheckSctEds.EnableWindow((*bChange)); } } /**************************************************************************** * Description: Function for setting/resetting the flag for ignore options * * Parameters: iId : control ID * bChange : corresponding flag *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ void CDlgMain::m_fn_vChangeCheckButton(int iId, BOOL *bChange) { *bChange = ! ((CButton *)GetDlgItem(iId))->GetCheck(); ((CButton *)GetDlgItem(iId))->SetCheck((*bChange)); } //==================================================// // FREE ALLOCATED MEMORY // //==================================================// /**************************************************************************** * Description: Free all the allocated memory. * * Parameters: *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ void CDlgMain::m_fn_vFreeMemory() { m_fn_vFreeMemoryForType(&m_p_oTypeAnims ) ; m_fn_vFreeMemoryForType(&m_p_oTypeBanks ) ; m_fn_vFreeMemoryForType(&m_p_oTypeClasses ) ; m_fn_vFreeMemoryForType(&m_p_oTypeFamilies ) ; m_fn_vFreeMemoryForType(&m_p_oTypeLevels ) ; m_fn_vFreeMemoryForType(&m_p_oTypeTextures ) ; } /**************************************************************************** * Description: Free all the allocated memory for a type. * * Parameters: _p_oType : type *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ void CDlgMain::m_fn_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; im_oList.RemoveHead(); delete p_oItem; } } if (*_p_oType) delete *_p_oType; } //==================================================// // WRITE THE LOG FILE FROM RICH EDIT // //==================================================// /**************************************************************************** * Description: Write in the Win_M23D.log file the informations from the third panel * * Parameters: bTest : flag to check directory *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ int CDlgMain::m_fn_vWriteInFile( BOOL bTest) { FILE *fileW; xString sDirectory; // save the current directory GetCurrentDirectory(256, sDirectory); switch (g_iData) { case 0: SetCurrentDirectory(g_sGameCommon); break; case 1: if (bTest) SetCurrentDirectory(g_sGameCommon); else SetCurrentDirectory(g_sGameSpecific1); break; case 2: if (bTest) SetCurrentDirectory(g_sGameCommon); else SetCurrentDirectory(g_sGameSpecific2); break; } fileW = fopen("Win_M23D.log", "at+"); int nIndex = m_oRichEditRes.GetLineCount(); char szBuffer[500]; for (int k=m_nIndexLast; kFindStringExact( -1, szName ); m_oListType->SetCurSel(iIndex); OnSelchangeListType() ; } j=0; for (i=0; iFindStringExact( -1, szSel[i] ); if (iIndex == LB_ERR) { j++; 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; } if (g_bStandardConfig) if (j==iNbSel && j) AfxMessageBox( "The .ini file contains only objects that cannot be found in rawdata directory!", MB_OK); m_fn_vEnableButtonAll(); m_fn_vEnableButtonConvert(); if (p_oType->m_iSelected==m_oListObject->GetCount()) m_oSelectList.EnableWindow(FALSE); else m_oSelectList.EnableWindow(TRUE); if (p_oType->m_iSelected>0) m_oClearList.EnableWindow(TRUE); else m_oClearList.EnableWindow(FALSE); // g_bGenerateRLI = FALSE; if (m_p_oTypeBanks && m_p_oTypeBanks->m_iSelected) { p_oItem = m_p_oTypeBanks->m_oList.GetHead(); POSITION pos= m_p_oTypeBanks->m_oList.GetHeadPosition( ); for (i=0; im_oList.GetCount(); i++) { // add the objects in the list box with objects if (p_oItem->m_bActived) { if (g_bStandardConfig) sprintf(sName, "%s\\World\\Graphics\\Objects\\Banks\\%s.spo", g_stInitialData.szRawData, p_oItem->m_szName); else sprintf(sName, "%s\\%s.spo", g_szBanks, p_oItem->m_szName); if ((file = open(sName, O_RDONLY))!=-1) { g_bGenerateRLI = TRUE; close(file); } } if (pos) m_p_oTypeBanks->m_oList.GetNext( pos ); } } if ((m_p_oTypeBanks && m_p_oTypeBanks->m_iSelected && g_bGenerateRLI)||(m_p_oTypeLevels && m_p_oTypeLevels->m_iSelected)) m_oCheckGenerateRLI.EnableWindow(TRUE); else m_oCheckGenerateRLI.EnableWindow(FALSE); if (bTwo) { m_oListType->SetCurSel(0); OnSelchangeListType(); } m_oListObject->Invalidate(TRUE); } /**************************************************************************** * Description: Search the .ini file for an object specified. * * Parameters: szName : name of the directory * szObject : object to search *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ BOOL CDlgMain::m_fn_bSearchInFile(char *szName, char *szObject) { char sFileName[20], *sNb; FILE *fileR; xString sDirectory, sRead, sDir; GetCurrentDirectory(256, sDirectory); m_fn_vSelectDir(sDir, szName); strcpy(sFileName, szName); strcat(sFileName, ".ini"); fileR = fopen(sFileName, "rt"); if (!fileR) { SetCurrentDirectory(sDirectory); return FALSE; } switch (g_iData) { case 0: while((fgets(sRead, 256, fileR) != NULL) && !strstr(sRead, "[GameSpecific1]") ) { sRead[strlen(sRead)-1]='\0'; if (!strcmp(sRead, szObject)) { fclose(fileR); SetCurrentDirectory(sDirectory); return TRUE; } } break; case 1: while((fgets(sRead, 256, fileR) != NULL) && !strstr(sRead, "[GameSpecific1]")); sNb = fgets(sRead, 256, fileR); while((sNb != NULL) && !strstr(sRead, "[GameSpecific2]") ) { sRead[strlen(sRead)-1]='\0'; if (!strcmp(sRead, szObject)) { fclose(fileR); SetCurrentDirectory(sDirectory); return TRUE; } sNb = fgets(sRead, 256, fileR); } break; case 2: while((fgets(sRead, 256, fileR) != NULL) && !strstr(sRead, "[GameSpecific2]")); while(fgets(sRead, 256, fileR) != NULL) { sRead[strlen(sRead)-1]='\0'; if (!strcmp(sRead, szObject)) { fclose(fileR); SetCurrentDirectory(sDirectory); return TRUE; } } break; } fclose(fileR); SetCurrentDirectory(sDirectory); return FALSE; } /**************************************************************************** * Description: Set the objects selected in the .ini file specified. * * Parameters: szName : name of the directory * szObject : object to search *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ void CDlgMain::m_fn_vSetFromFileList(char *szName, char *szObject) { if (!stricmp(szName, "All")) { int iIndex = m_oListType->FindString(-1, szObject); if (iIndex==LB_ERR) if (AfxMessageBox( "There is nothing to convert! Please, choose another type of object for conversion", MB_OK)) return; GI_Type *p_oType = (GI_Type *)m_oListType->GetItemData(iIndex); m_fn_vSelectAllInList(p_oType, TRUE); } if (!stricmp(szName, "fList")) { int iIndex = m_oListType->FindString(-1, szObject); if (iIndex==LB_ERR) if (AfxMessageBox( "There is nothing to convert! Please, choose another type of object for conversion", MB_OK)) return; GI_Type *p_oType = (GI_Type *)m_oListType->GetItemData( iIndex ); char szName[20]; strcpy(szName, p_oType -> m_fn_p_oGetName()); m_fn_vReadIniFile(szName, p_oType, 1); } } /**************************************************************************** * Description: Set the objects selected in the .ini file specified. * * Parameters: sDir : returs directory * szName : type name *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ void CDlgMain::m_fn_vSelectDir(xString sDir, char *szName) { if (g_bStandardConfig) { switch (g_iRaw) { case 0: if (!strcmp(szName, "Anims")|| !strcmp(szName, "Textures")) sprintf(sDir, "%s\\World\\Graphics\\%s\\", g_stInitialData.szRawData, szName); if (!strcmp(szName, "Banks") || !strcmp(szName, "Classes")) sprintf(sDir, "%s\\World\\Graphics\\Objects\\%s\\", g_stInitialData.szRawData, szName); if (!strcmp(szName, "Families") || !strcmp(szName, "Levels")) sprintf(sDir, "%s\\World\\%s\\", g_stInitialData.szRawData, szName); SetCurrentDirectory(sDir); break; case 1: if (!strcmp(szName, "Anims")|| !strcmp(szName, "Textures")) sprintf(sDir, "%s\\World\\Graphics\\%s\\", g_stInitialData.szRawSpecific1, szName); if (!strcmp(szName, "Banks") || !strcmp(szName, "Classes")) sprintf(sDir, "%s\\World\\Graphics\\Objects\\%s\\", g_stInitialData.szRawSpecific1, szName); if (!strcmp(szName, "Families") || !strcmp(szName, "Levels")) sprintf(sDir, "%s\\World\\%s\\", g_stInitialData.szRawSpecific1, szName); SetCurrentDirectory(sDir); break; case 2: if (!strcmp(szName, "Anims")|| !strcmp(szName, "Textures")) sprintf(sDir, "%s\\World\\Graphics\\%s\\", g_stInitialData.szRawSpecific2, szName); if (!strcmp(szName, "Banks") || !strcmp(szName, "Classes")) sprintf(sDir, "%s\\World\\Graphics\\Objects\\%s\\", g_stInitialData.szRawSpecific2, szName); if (!strcmp(szName, "Families") || !strcmp(szName, "Levels")) sprintf(sDir, "%s\\World\\%s\\", g_stInitialData.szRawSpecific2, szName); SetCurrentDirectory(sDir); break; } } else { if (!strcmp(szName, "Anims")) sprintf(sDir, "%s\\", g_szAnims); if (!strcmp(szName, "Banks")) sprintf(sDir, "%s\\", g_szBanks); if (!strcmp(szName, "Classes")) sprintf(sDir, "%s\\", g_szClasses); if (!strcmp(szName, "Families")) sprintf(sDir, "%s\\", g_szFamilies); if (!strcmp(szName, "Levels")) sprintf(sDir, "%s\\", g_szLevels); if (!strcmp(szName, "Textures")) sprintf(sDir, "%s\\", g_szTextures); SetCurrentDirectory(sDir); } }