// EdIRSave.cpp : implementation of the CEdIAFrame class // #include "stdafx.h" // Shaitan FastC { #define D_Brain_StructureDefine //End Shaitan FastC } #include "Defines.hpp" #ifdef D_ED_IR_ACTIVE #include "EdIRSave.hpp" #include "EdIRStrg.hpp" #include "EdIRBeEn.hpp" #include "EdIRBELs.hpp" #include "EdIRBeha.hpp" #include "EdIRIRD.hpp" #include "EdIRDVLs.hpp" #include "EdIRFrm.hpp" #include "EdIRBtVw.hpp" #include "EdIR2Eng.hpp" #include "EdIRBis.hpp" #include "EdIRGlob.hpp" #include "EdIRCsLs.hpp" #include "EdIRIAWd.hpp" #include "Ctl.h" #include "ai_intf.hpp" #include "x:\cpa\main\inc\_EditID.h" #include "_Ainterf.hpp" #include "EDACDoc.hpp" #include "EDACModl.hpp" #include "TFA.h" #include "incAI.h" #include "_Actors.hpp" #include "DPT.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////// // TEST DEFINE // DO NOT DEFINE THEM // DO NOT DELETE THEM ///////////////////////////////// //#define _SAVE_DEFAULT_IN_COMMENT_ //#define _SHOW_WARNING_ ///////////////////////////////// ///////////////////////////////// #define M_SAVEENTRY1PARM(a,b) SCR_M_SvL0_SaveEntry(p_tdstFile, \ M_MAKECHAR(a), \ SCR_CC_C_Cfg_NoChar); \ SCR_fn_v_SvL0_SaveParameters_MP(p_tdstFile, \ SCR_EF_SvL0_Normal, \ 1, \ M_MAKECHAR(b)); #define M_SAVEENTRY2PARMS(a,b,c) SCR_M_SvL0_SaveEntry(p_tdstFile, \ M_MAKECHAR(a), \ SCR_CC_C_Cfg_NoChar); \ SCR_fn_v_SvL0_SaveParameters_MP(p_tdstFile, \ SCR_EF_SvL0_Normal, \ 2, \ M_MAKECHAR(b), \ M_MAKECHAR(c)); #define M_SAVEENTRY3PARMS(a,b,c,d) SCR_M_SvL0_SaveEntry(p_tdstFile, \ M_MAKECHAR(a), \ SCR_CC_C_Cfg_NoChar); \ SCR_fn_v_SvL0_SaveParameters_MP(p_tdstFile, \ SCR_EF_SvL0_Normal, \ 3, \ M_MAKECHAR(b), \ M_MAKECHAR(c), \ M_MAKECHAR(d)); #define M_SAVEENTRY4PARMS(a,b,c,d,e) SCR_M_SvL0_SaveEntry(p_tdstFile, \ M_MAKECHAR(a), \ SCR_CC_C_Cfg_NoChar); \ SCR_fn_v_SvL0_SaveParameters_MP(p_tdstFile, \ SCR_EF_SvL0_Normal, \ 4, \ M_MAKECHAR(b), \ M_MAKECHAR(c), \ M_MAKECHAR(d), \ M_MAKECHAR(e)); #define M_SAVEENTRY5PARMS(a,b,c,d,e,f) SCR_M_SvL0_SaveEntry(p_tdstFile, \ M_MAKECHAR(a), \ SCR_CC_C_Cfg_NoChar); \ SCR_fn_v_SvL0_SaveParameters_MP(p_tdstFile, \ SCR_EF_SvL0_Normal, \ 5, \ M_MAKECHAR(b), \ M_MAKECHAR(c), \ M_MAKECHAR(d), \ M_MAKECHAR(e), \ M_MAKECHAR(f)); /**********************************************************************************/ #if defined(_SAVE_DEFAULT_IN_COMMENT_) // { static char gs_szComment[255]; #define M_SAVECOMMENT1PARM(a,b)\ sprintf (gs_szComment,"%s(%s)",M_MAKECHAR(a),M_MAKECHAR(b));\ SCR_M_SvL0_SaveComment(p_tdstFile,gs_szComment); #define M_SAVECOMMENT2PARMS(a,b,c)\ sprintf (gs_szComment,"%s(%s,%s)",M_MAKECHAR(a),M_MAKECHAR(b),M_MAKECHAR(c));\ SCR_M_SvL0_SaveComment(p_tdstFile,gs_szComment); #define M_SAVECOMMENT3PARMS(a,b,c,d)\ sprintf (gs_szComment,"%s(%s,%s,%s)",M_MAKECHAR(a),M_MAKECHAR(b),M_MAKECHAR(c),M_MAKECHAR(d));\ SCR_M_SvL0_SaveComment(p_tdstFile,gs_szComment); #define M_SAVECOMMENT4PARMS(a,b,c,d,e)\ sprintf (gs_szComment,"%s(%s,%s,%s,%s)",M_MAKECHAR(a),M_MAKECHAR(b),M_MAKECHAR(c),M_MAKECHAR(d),M_MAKECHAR(e));\ SCR_M_SvL0_SaveComment(p_tdstFile,gs_szComment); #define M_SAVECOMMENT5PARMS(a,b,c,d,e,f)\ sprintf (gs_szComment,"%s(%s,%s,%s,%s,%s)",M_MAKECHAR(a),M_MAKECHAR(b),M_MAKECHAR(c),M_MAKECHAR(d),M_MAKECHAR(e),M_MAKECHAR(f));\ SCR_M_SvL0_SaveComment(p_tdstFile,gs_szComment); #endif // _SAVE_DEFAULT_IN_COMMENT_ } /**********************************************************************************/ void fn_vSaveInfos(SCR_tdst_File_Description *p_tdstFile) { //Saves version number SCR_M_SvL0_SaveComment(p_tdstFile,C_VERSION); SCR_M_SvL0_SaveBlankLine(p_tdstFile); //Computes date SYSTEMTIME stSystemTime; ::GetLocalTime(&stSystemTime); CTime cTime(stSystemTime); CString csDate=cTime.Format("%A,%B,%d,%Y,%Hh%Mm"); CString csLine="Save date:"+csDate; SCR_M_SvL0_SaveComment(p_tdstFile,M_MAKECHAR(csLine)); SCR_M_SvL0_SaveBlankLine(p_tdstFile); } /**********************************************************************************/ void CPA_EdIR_MainBehaviourList::m_fn_vSaveBehaviourList(SCR_tdst_File_Description *p_tdstFile, CString csFamilyName, CString csModelName, CString csSectionName) { //Computes file name for text CString csRulesFileName=csFamilyName+"\\"+csModelName+"\\"+csModelName; if(csSectionName==g_c_csIntelligenceSectionName) csRulesFileName+=g_c_csIntelligenceTextFileExtension; else if(csSectionName==g_c_csReflexSectionName) csRulesFileName+=g_c_csReflexTextFileExtension; else if(csSectionName==g_c_csDeclarationSectionName) csRulesFileName+=g_c_csDeclarationTextFileExtension; POSITION pos=GetHeadPosition(); long lOffset=0; while(pos!=NULL) { CPA_EdIR_MainBehaviour *p_clMainBehaviour=GetNext(pos); if(p_clMainBehaviour->m_pclBehaviour) { p_clMainBehaviour->m_csText=p_clMainBehaviour->m_pclBehaviour->m_fn_csGetRules(); p_clMainBehaviour->m_crPosition=p_clMainBehaviour->m_pclBehaviour->m_fn_crGetBoundingBox(); } SCR_M_SvL0_SaveBeginSection(p_tdstFile, M_MAKECHAR(g_c_csBehaviourSectionName+":"), SCR_CC_C_Cfg_EOL); //Writes Language M_SAVEENTRY1PARM(g_c_csBehaviourLanguage,g_pclAIInterface->M_GetMainWorld()->GetInterface()->fn_csGetCurrentLanguage()); //Writes name CString csName=p_clMainBehaviour->GetName(); M_SAVEENTRY1PARM(g_c_csBehaviourName,csName); //Writes bounding box CRect crBoundingBox=p_clMainBehaviour->m_crPosition; CString csPosLeft; CString csPosTop; CString csPosRight; CString csPosBottom; csPosLeft.Format("%ld",crBoundingBox.left); csPosTop.Format("%ld",crBoundingBox.top); csPosRight.Format("%ld",crBoundingBox.right); csPosBottom.Format("%ld",crBoundingBox.bottom); M_SAVEENTRY4PARMS(g_c_csBehaviourBoundingBox, csPosLeft, csPosTop, csPosRight, csPosBottom); //Writes infos about text CString csRules=p_clMainBehaviour->m_csText; csRules=fn_csReplaceChar(csRules,'\"','\''); long lIndex=0; CString csLine; //BOOL bMore=fn_bGetLine(csRules,lLineNumber,csLine); BOOL bMore=fn_bGetNextLine(csRules,lIndex,csLine); while(bMore) { M_SAVEENTRY1PARM(g_c_csBehaviourText,csLine); //lLineNumber++; //bMore=fn_bGetLine(csRules,lLineNumber,csLine); bMore=fn_bGetNextLine(csRules,lIndex,csLine); } /* CString csOffset; csOffset.Format("%ld",lOffset); long lTextLen=csRules.GetLength(); CString csTextLen; csTextLen.Format("%ld",lTextLen); M_SAVEENTRY3PARMS(g_c_csBehaviourText, csRulesFileName, csOffset, csTextLen); lOffset+=lTextLen;*/ SCRIPT_vSaveEndSection(p_tdstFile); } } /**********************************************************************************/ void CPA_EdIR_Brain::m_fn_vSaveEditorAIDeclaration(SCR_tdst_File_Description *p_tdstFile, char *p_szSectionName, void *p_vData, SCR_tde_Ntfy_Action eAction) { CPA_EdIR_Brain *pclBrain=(CPA_EdIR_Brain *)p_vData; CPA_Actor *pclActor=pclBrain->m_fn_pclGetModel(); CString csFamilyName=pclActor->m_pub_fn_pclGetFamily()->GetName(); CString csModelName=pclActor->GetName(); CString csMsg="Saving IA of "+csFamilyName+"@"+csModelName+" (Editor)"; fn_vDisplayInfoInStatusBar(csMsg,C_STATUS_NORMAL); SCR_M_SvL0_SaveScriptFileHeader(p_tdstFile); fn_vSaveInfos(p_tdstFile); SCR_M_SvL0_SaveBeginSection(p_tdstFile, M_MAKECHAR(g_c_csDeclarationSectionName+":"), SCR_CC_C_Cfg_EOL); pclBrain->m_clListOfDeclarations.m_fn_vSaveBehaviourList(p_tdstFile, pclBrain->m_pclModel->m_pub_fn_pclGetFamily()->GetName(), pclBrain->m_fn_csGetModelName(), g_c_csDeclarationSectionName); SCRIPT_vSaveEndSection(p_tdstFile); /* CHRISTOPHE QUICK SAVE MODIFICATIONS { */ //Deletes quick save file CString csPathName=CString(fn_szGetFamiliesDataPath())+"\\"+csFamilyName+"\\"+csModelName+"\\"; CString csFileName=csPathName+csModelName+g_c_csDeclarationFileExtensionQS; DeleteFile(csFileName); /* } END CHRISTOPHE QUICK SAVE MODIFICATIONS */ } // BEGIN CPA2 Cristi Petrescu 98-03- /**********************************************************************************/ void CPA_EdIR_Brain::m_fn_vSaveEditorAIMacros(SCR_tdst_File_Description *p_tdstFile, char *p_szSectionName, void *p_vData, SCR_tde_Ntfy_Action eAction) { CPA_EdIR_Brain *pclBrain=(CPA_EdIR_Brain *)p_vData; CPA_Actor *pclActor=pclBrain->m_fn_pclGetModel(); CString csFamilyName=pclActor->m_pub_fn_pclGetFamily()->GetName(); CString csModelName=pclActor->GetName(); CString csMsg="Saving IA of "+csFamilyName+"@"+csModelName+" (Editor)"; fn_vDisplayInfoInStatusBar(csMsg,C_STATUS_NORMAL); SCR_M_SvL0_SaveScriptFileHeader(p_tdstFile); fn_vSaveInfos(p_tdstFile); SCR_M_SvL0_SaveBeginSection(p_tdstFile, M_MAKECHAR(g_c_csMacroSectionName+":"), SCR_CC_C_Cfg_EOL); pclBrain->m_clListOfMacros.m_fn_vSaveBehaviourList(p_tdstFile, pclBrain->m_pclModel->m_pub_fn_pclGetFamily()->GetName(), pclBrain->m_fn_csGetModelName(), g_c_csMacroSectionName); SCRIPT_vSaveEndSection(p_tdstFile); //Deletes quick save file CString csPathName=CString(fn_szGetFamiliesDataPath())+"\\"+csFamilyName+"\\"+csModelName+"\\"; CString csFileName=csPathName+csModelName+g_c_csMacroFileExtensionQS; DeleteFile(csFileName); } // END CPA2 Cristi Petrescu 98-03- // BEGIN ROMTEAM CPA2 Cristi Petrescu 98-04- /**********************************************************************************/ void CPA_EdIR_Brain::m_fn_vSaveEditorAISubrs(SCR_tdst_File_Description *p_tdstFile, char *p_szSectionName, void *p_vData, SCR_tde_Ntfy_Action eAction) { CPA_EdIR_Brain *pclBrain=(CPA_EdIR_Brain *)p_vData; CPA_Actor *pclActor=pclBrain->m_fn_pclGetModel(); CString csFamilyName=pclActor->m_pub_fn_pclGetFamily()->GetName(); CString csModelName=pclActor->GetName(); CString csMsg="Saving IA of "+csFamilyName+"@"+csModelName+" (Editor)"; fn_vDisplayInfoInStatusBar(csMsg,C_STATUS_NORMAL); SCR_M_SvL0_SaveScriptFileHeader(p_tdstFile); fn_vSaveInfos(p_tdstFile); SCR_M_SvL0_SaveBeginSection(p_tdstFile, M_MAKECHAR(g_c_csSubrSectionName+":"), SCR_CC_C_Cfg_EOL); pclBrain->m_clListOfSubrs.m_fn_vSaveBehaviourList(p_tdstFile, pclBrain->m_pclModel->m_pub_fn_pclGetFamily()->GetName(), pclBrain->m_fn_csGetModelName(), g_c_csSubrSectionName); SCRIPT_vSaveEndSection(p_tdstFile); //Deletes quick save file CString csPathName=CString(fn_szGetFamiliesDataPath())+"\\"+csFamilyName+"\\"+csModelName+"\\"; CString csFileName=csPathName+csModelName+g_c_csSubrFileExtensionQS; DeleteFile(csFileName); } // END ROMTEAM CPA2 Cristi Petrescu 98-04- /**********************************************************************************/ void CPA_EdIR_Brain::m_fn_vSaveEditorAIRules(SCR_tdst_File_Description *p_tdstFile, char *p_szSectionName, void *p_vData, SCR_tde_Ntfy_Action eAction) { CPA_EdIR_Brain *pclBrain=(CPA_EdIR_Brain *)p_vData; CPA_Actor *pclActor=pclBrain->m_fn_pclGetModel(); CString csFamilyName=pclActor->m_pub_fn_pclGetFamily()->GetName(); CString csModelName=pclActor->GetName(); CString csMsg="Saving IA of "+csFamilyName+"@"+csModelName+" (Editor)"; fn_vDisplayInfoInStatusBar(csMsg,C_STATUS_NORMAL); SCR_M_SvL0_SaveScriptFileHeader(p_tdstFile); fn_vSaveInfos(p_tdstFile); SCR_M_SvL0_SaveBeginSection(p_tdstFile, M_MAKECHAR(g_c_csIntelligenceSectionName+":"), SCR_CC_C_Cfg_EOL); pclBrain->m_clListOfIntelligenceBehaviours.m_fn_vSaveBehaviourList(p_tdstFile, pclBrain->m_pclModel->m_pub_fn_pclGetFamily()->GetName(), pclBrain->m_fn_csGetModelName(), g_c_csIntelligenceSectionName); SCRIPT_vSaveEndSection(p_tdstFile); /* CHRISTOPHE QUICK SAVE MODIFICATIONS { */ //Deletes quick save file CString csPathName=CString(fn_szGetFamiliesDataPath())+"\\"+csFamilyName+"\\"+csModelName+"\\"; CString csFileName=csPathName+csModelName+g_c_csIntelligenceFileExtensionQS; DeleteFile(csFileName); /* } END CHRISTOPHE QUICK SAVE MODIFICATIONS */ } /**********************************************************************************/ void CPA_EdIR_Brain::m_fn_vSaveEditorAIReflexes(SCR_tdst_File_Description *p_tdstFile, char *p_szSectionName, void *p_vData, SCR_tde_Ntfy_Action eAction) { CPA_EdIR_Brain *pclBrain=(CPA_EdIR_Brain *)p_vData; CPA_Actor *pclActor=pclBrain->m_fn_pclGetModel(); CString csFamilyName=pclActor->m_pub_fn_pclGetFamily()->GetName(); CString csModelName=pclActor->GetName(); CString csMsg="Saving IA of "+csFamilyName+"@"+csModelName+" (Editor)"; fn_vDisplayInfoInStatusBar(csMsg,C_STATUS_NORMAL); SCR_M_SvL0_SaveScriptFileHeader(p_tdstFile); fn_vSaveInfos(p_tdstFile); SCR_M_SvL0_SaveBeginSection(p_tdstFile, M_MAKECHAR(g_c_csReflexSectionName+":"), SCR_CC_C_Cfg_EOL); pclBrain->m_clListOfReflexBehaviours.m_fn_vSaveBehaviourList(p_tdstFile, pclBrain->m_pclModel->m_pub_fn_pclGetFamily()->GetName(), pclBrain->m_fn_csGetModelName(), g_c_csReflexSectionName); SCRIPT_vSaveEndSection(p_tdstFile); /* CHRISTOPHE QUICK SAVE MODIFICATIONS { */ //Deletes quick save file CString csPathName=CString(fn_szGetFamiliesDataPath())+"\\"+csFamilyName+"\\"+csModelName+"\\"; CString csFileName=csPathName+csModelName+g_c_csReflexFileExtensionQS; DeleteFile(csFileName); /* } END CHRISTOPHE QUICK SAVE MODIFICATIONS */ } /* CHRISTOPHE QUICK SAVE MODIFICATIONS { */ /**********************************************************************************/ void CPA_EdIR_Brain::m_fn_vQuickSave() { SCR_tdst_Ntfy_Description stNotify; CString csFamilyName=m_fn_pclGetModel()->m_pub_fn_pclGetFamily()->GetName(); CString csModelName=m_fn_pclGetModel()->GetName(); CString csPathName=CString(fn_szGetFamiliesDataPath())+"\\"+csFamilyName+"\\"+csModelName+"\\"; CString csFileName=csPathName+csModelName+g_c_csReflexFileExtension; AfxGetApp()->DoWaitCursor(1); ::SetCapture(g_pclAIInterface->m_pclIRMainFrame->m_hWnd); //Declaration csFileName=csPathName+csModelName+g_c_csDeclarationFileExtensionQS; strcpy(stNotify.a_szSectionName,M_MAKECHAR(csFileName)); stNotify.pfn_vCallback=CPA_EdIR_Brain::m_fn_vSaveEditorAIDeclaration; stNotify.p_vData=this; stNotify.eAction=SCR_EA_Ntfy_RebuildSection; fn_v_SvL1_UpdateOneNotify(&stNotify,SCR_EA_Ntfy_RebuildSection); CString csMsg="Quick save OK"; fn_vDisplayInfoInStatusBar(csMsg,C_STATUS_NORMAL); //Rules csFileName=csPathName+csModelName+g_c_csIntelligenceFileExtensionQS; strcpy(stNotify.a_szSectionName,M_MAKECHAR(csFileName)); stNotify.pfn_vCallback=CPA_EdIR_Brain::m_fn_vSaveEditorAIRules; stNotify.p_vData=this; stNotify.eAction=SCR_EA_Ntfy_RebuildSection; fn_v_SvL1_UpdateOneNotify(&stNotify,SCR_EA_Ntfy_RebuildSection); fn_vDisplayInfoInStatusBar(csMsg,C_STATUS_NORMAL); //Reflex csFileName=csPathName+csModelName+g_c_csReflexFileExtensionQS; strcpy(stNotify.a_szSectionName,M_MAKECHAR(csFileName)); stNotify.pfn_vCallback=CPA_EdIR_Brain::m_fn_vSaveEditorAIReflexes; stNotify.p_vData=this; stNotify.eAction=SCR_EA_Ntfy_RebuildSection; fn_v_SvL1_UpdateOneNotify(&stNotify,SCR_EA_Ntfy_RebuildSection); fn_vDisplayInfoInStatusBar(csMsg,C_STATUS_NORMAL); // BEGIN CPA2 Cristi Petrescu 98-03- //Macro csFileName=csPathName+csModelName+g_c_csMacroFileExtensionQS; strcpy(stNotify.a_szSectionName,M_MAKECHAR(csFileName)); stNotify.pfn_vCallback=CPA_EdIR_Brain::m_fn_vSaveEditorAIMacros; stNotify.p_vData=this; stNotify.eAction=SCR_EA_Ntfy_RebuildSection; fn_v_SvL1_UpdateOneNotify(&stNotify,SCR_EA_Ntfy_RebuildSection); fn_vDisplayInfoInStatusBar(csMsg,C_STATUS_NORMAL); // END CPA2 Cristi Petrescu 98-03- // BEGIN ROMTEAM CPA2 Cristi Petrescu 98-04- //Subr csFileName=csPathName+csModelName+g_c_csSubrFileExtensionQS; strcpy(stNotify.a_szSectionName,M_MAKECHAR(csFileName)); stNotify.pfn_vCallback=CPA_EdIR_Brain::m_fn_vSaveEditorAISubrs; stNotify.p_vData=this; stNotify.eAction=SCR_EA_Ntfy_RebuildSection; fn_v_SvL1_UpdateOneNotify(&stNotify,SCR_EA_Ntfy_RebuildSection); fn_vDisplayInfoInStatusBar(csMsg,C_STATUS_NORMAL); // END ROMTEAM CPA2 Cristi Petrescu 98-04- ::ReleaseCapture(); AfxGetApp()->DoWaitCursor(-1); } /* } END CHRISTOPHE QUICK SAVE MODIFICATIONS */ /****************************************************************************/ BOOL CPA_EdIR_MainBehaviourList::m_fn_bSaveIA(SCR_tdst_File_Description *p_tdstFile,AI_tdstMind *pstMind,tdeTypeText eTypeText) { POSITION pos=GetHeadPosition(); BOOL bNoError=TRUE; long lCurrentBehaviour=0; //BEGIN ROMTEAM Cristi Petrescu 98-04- CString csCurrentBehaviour; //END ROMTEAM Cristi Petrescu 98-04- while(pos!=NULL && bNoError) { CPA_EdIR_Behaviour *pclBehaviour=GetNext(pos)->m_pclBehaviour; //BEGIN ROMTEAM Cristi Petrescu 98-04- if (eTypeText == SubrText) { csCurrentBehaviour.Format("%ld",lCurrentBehaviour); } //END ROMTEAM Cristi Petrescu 98-04- else if(!pclBehaviour->m_bDeclaration && eTypeText != Macro_2_Text && eTypeText != CRRGeneration) { //BEGIN ROMTEAM Cristi Petrescu 98-04- //CString csCurrentBehaviour; //END ROMTEAM Cristi Petrescu 98-04- csCurrentBehaviour.Format("%ld",lCurrentBehaviour); long lNbRules=fn_lGetNbRules(pclBehaviour->m_fn_csGetRules()); CString csNbRules; csNbRules.Format("%ld",lNbRules); SCR_M_SvL0_SaveBeginSection(p_tdstFile, M_MAKECHAR(g_c_csBehavSectionName+":"+pclBehaviour->m_fn_csGetName()), SCR_CC_C_Cfg_NoChar); SCR_fn_v_SvL0_SaveParameters_MP(p_tdstFile, SCR_EF_SvL0_Normal, 2, M_MAKECHAR(csCurrentBehaviour), M_MAKECHAR(csNbRules)); } //BEGIN ROMTEAM Cristi Petrescu 98-04- bNoError=pclBehaviour->m_fn_bSaveIA(p_tdstFile,pstMind,eTypeText,csCurrentBehaviour); //END ROMTEAM Cristi Petrescu 98-04- //BEGIN ROMTEAM Cristi Petrescu 98-04- if(!pclBehaviour->m_bDeclaration && eTypeText != Macro_2_Text && eTypeText != SubrText && eTypeText != CRRGeneration) //END ROMTEAM Cristi Petrescu 98-04- { SCRIPT_vSaveEndSection(p_tdstFile); } lCurrentBehaviour++; } return bNoError; } /**********************************************************************************/ void CPA_EdIR_Brain::m_fn_vSaveEngineAI(SCR_tdst_File_Description *p_tdstFile, char *p_szSectionName, void *p_vData, SCR_tde_Ntfy_Action eAction) { CPA_EdIR_Brain *pclBrain=(CPA_EdIR_Brain *)p_vData; CPA_Actor *pclActor=pclBrain->m_fn_pclGetModel(); CString csFamilyName=pclActor->m_pub_fn_pclGetFamily()->GetName(); CString csModelName=pclActor->GetName(); long CFast_bIsC ; CString csMsg="Saving IA of "+csFamilyName+"@"+csModelName+" (Engine)"; fn_vDisplayInfoInStatusBar(csMsg,C_STATUS_NORMAL); SCR_M_SvL0_SaveScriptFileHeader(p_tdstFile); fn_vSaveInfos(p_tdstFile); SCR_M_SvL0_SaveBeginSection(p_tdstFile, M_MAKECHAR(g_c_csAISectionName+":"), SCR_CC_C_Cfg_EOL); M_SAVEENTRY1PARM(g_c_csAIDecSectionName, csFamilyName+"\\"+csModelName+"\\"+csModelName+g_c_csAIDecFileExtension); M_SAVEENTRY1PARM(g_c_csAIRulSectionName, csFamilyName+"\\"+csModelName+"\\"+csModelName+g_c_csAIRulFileExtension); M_SAVEENTRY1PARM(g_c_csAIRfxSectionName, csFamilyName+"\\"+csModelName+"\\"+csModelName+g_c_csAIRfxFileExtension); //BEGIN ROMTEAM Cristi Petrescu 98-04- if (! pclBrain -> m_clListOfSubrs . IsEmpty ()) { M_SAVEENTRY1PARM(g_c_csAISubrSectionName, csFamilyName+"\\"+csModelName+"\\"+csModelName+g_c_csAISubrFileExtension); } //END ROMTEAM Cristi Petrescu 98-04- // Shaitan FastC { CFast_bIsC = pclActor->GetStruct()->h_Brain->p_stMind->p_stAIModel->CFast_bIsC ; if ( CFast_bIsC ) { M_SAVEENTRY1PARM(g_c_csAICrrSectionName, csFamilyName+"\\"+csModelName+"\\"+csModelName+g_c_csAICrrFileExtension); M_SAVEENTRY1PARM( g_c_csAINodeSectionName, csFamilyName+"\\"+csModelName+"\\"+csModelName+g_c_csAINodeFileExtension ); } CString csFast_IsC; CString csFast_FunctionIndex; csFast_IsC.Format("%ld", CFast_bIsC); M_SAVEENTRY1PARM(g_c_csAIFastIsC_SectionName, csFast_IsC); csFast_FunctionIndex.Format("%ld", pclActor->GetStruct()->h_Brain->p_stMind->p_stAIModel->CFast_lFunction); M_SAVEENTRY1PARM(g_c_csAIFastFId_SectionName, csFast_FunctionIndex); //End Shaitan FastC } SCRIPT_vSaveEndSection(p_tdstFile); } /**********************************************************************************/ void fn_vSaveSaveType(SCR_tdst_File_Description *p_tdstFile,CPA_Actor *pclModel,CPA_EdIR_MainBehaviourList *pclDeclarationsList) { if(!pclDeclarationsList->IsEmpty()) { //Gets Designer Variable MainBehaviour (first element in the list) CPA_EdIR_MainBehaviour *pclMainBehaviour=pclDeclarationsList->GetHead(); //Gets declaration text without any comments CString csIn; if(pclMainBehaviour->m_pclBehaviour!=NULL) csIn=pclMainBehaviour->m_pclBehaviour->m_fn_csGetRules(); else csIn=pclMainBehaviour->m_csText; csIn=fn_csGetCodeWithoutComments(csIn); //Saves "save type" for DsgVar //Analyses dsg var declarations if(pclDeclarationsList->m_fn_bCheckIA(DsgVarText)) { //Saves entries EdActors_EditorActor *pclEditorActor=pclModel->m_fn_pclGetEditorActor(); CTL_Editor_DataList *pclDsgVarListType=pclEditorActor->m_pclListOfDesignerVariableType; long lCurrentIndex=0; //ROMTEAM Cristi Petrescu THIS STINKS!!! You should use the PARSER to analyze your code //ROMTEAM Cristi Petrescu This way you cannot use #define in this section //ROMTEAM Cristi Petrescu You may redefine the fn_csGetNextWord function to ignore #define //ROMTEAM Cristi Petrescu or write fn_csGetCodeWithoutCommentsAndDefines, but your #define will VANISH //ROMTEAM Cristi Petrescu So, you are in troubles... CString csWord=fn_csGetNextWord(csIn,lCurrentIndex); long lNoDsgVar=0; while(!csWord.IsEmpty()) { // checks for "Private" variables if (!csWord.CompareNoCase("Private")) csWord = fn_csGetNextWord(csIn,lCurrentIndex); //Gets Type tdeDsgVarTypeId eDsgVarTypeId=(tdeDsgVarTypeId)fn_lGetDsgVarTypeIdFromEditorName(csWord); //Gets Name CString csDsgVarName=fn_csGetNextWord(csIn,lCurrentIndex); //Computes Index CString csDsgVarIndex; csDsgVarIndex.Format("%ld",lNoDsgVar); //Skips Initial Value CString csInitValue=fn_csGetNextWord(csIn,lCurrentIndex); //Saves only if different from "None" CTL_Editor_Data *pclBaseData=pclDsgVarListType->m_fn_pclGetDataFromName(csDsgVarName+g_c_csDsgVarSaveTypeText); if(pclBaseData!=NULL) { ASSERT(pclBaseData->m_pub_fn_tdeGetDataType()==CTL_DATA_TYPE__ENUM); if(pclBaseData->m_pub_fn_tdeGetDataType()==CTL_DATA_TYPE__ENUM) { CTL_Editor_EnumData *pclDataEnum=(CTL_Editor_EnumData *)pclBaseData; if(pclDataEnum->m_pclCurrentValue!=NULL) { // Shaitan => Check Save type EdActors_EditorActorModel *pModel = (EdActors_EditorActorModel *)(pclModel->m_fn_pclGetEditorActor()); POSITION pos = pModel->m_clInstancesList.GetHeadPosition(); CString csMessage; BOOL bAlways = FALSE; BOOL bCommon = TRUE; while (pos) { EdActors_EditorActorInstance *pclInstance = pModel->m_clInstancesList.GetNext(pos); // an always must have no save type if (pclInstance->m_pclActor->m_fn_bIsAnAlways()) bAlways = TRUE; // a level actor can have only "level" or "non" save type else if (!pclInstance->m_pclActor->m_pub_fn_bIsCommon()) bCommon = FALSE; } if (bAlways) { if (pclDataEnum->m_pclCurrentValue->m_pub_fn_lGetValue() != 0) { csMessage.Format("The always model %s was using a wrong Save Type.\nIt was changed to the default one", pclModel->GetName()); MessageBox(NULL, csMessage, "WARNING SAVE TYPE", MB_ICONEXCLAMATION); pclDataEnum->m_pclCurrentValue = pclDataEnum->m_fn_pclGetEnumDescriptor()->GetHead(); pclDataEnum->m_fn_vUpdateMotorData(); } } // a level actor can have only "level" or "non" save type else if (!bCommon) { if (pclDataEnum->m_pclCurrentValue->m_pub_fn_lGetValue() == SAI_ePlayerSaveCurrentValue) { csMessage.Format("The model %s is not in fix, and uses the Save Type 'Player'.\nAre you sure you want to keep this value ?", pclModel->GetName()); int iRes = MessageBox(NULL, csMessage, "WARNING SAVE TYPE", MB_ICONEXCLAMATION | MB_YESNO ); if (iRes == IDNO) { pclDataEnum->m_pclCurrentValue = pclDataEnum->m_fn_pclGetEnumDescriptor()->GetHead(); pclDataEnum->m_fn_vUpdateMotorData(); } } } // End Shaitan => Check Save type long lSaveTypeValue=pclDataEnum->m_pclCurrentValue->m_pub_fn_lGetValue(); CString csSaveTypeValue=fn_szFindScriptNameFromSaveType((enum SAI_tdeFlags_)lSaveTypeValue); if(lSaveTypeValue!=fn_eFindSaveTypeFromSaveTypeNumber(fn_ucDefaultSaveTypeNumber())) { M_SAVEENTRY2PARMS(g_c_csDecSaveTypeEntryName, csDsgVarIndex, csSaveTypeValue); } #if defined(_SAVE_DEFAULT_IN_COMMENT_) // { else { M_SAVECOMMENT2PARMS(g_c_csDecSaveTypeEntryName, csDsgVarIndex, csSaveTypeValue); } #endif /* _SAVE_DEFAULT_IN_COMMENT_ } */ } } } if(eDsgVarTypeId==eDsgVarType_Vector) { //Skips x,y,z components fn_csGetNextWord(csIn,lCurrentIndex); fn_csGetNextWord(csIn,lCurrentIndex); fn_csGetNextWord(csIn,lCurrentIndex); } //Skips Next Type csWord=fn_csGetNextWord(csIn,lCurrentIndex); lNoDsgVar++; } } } } /**********************************************************************************/ void fn_vSaveInitType(SCR_tdst_File_Description *p_tdstFile,CPA_Actor *pclModel,CPA_EdIR_MainBehaviourList *pclDeclarationsList) { if(!pclDeclarationsList->IsEmpty()) { //Gets Designer Variable MainBehaviour (first element in the list) CPA_EdIR_MainBehaviour *pclMainBehaviour=pclDeclarationsList->GetHead(); //Gets declaration text without any comments CString csIn; if(pclMainBehaviour->m_pclBehaviour!=NULL) csIn=pclMainBehaviour->m_pclBehaviour->m_fn_csGetRules(); else csIn=pclMainBehaviour->m_csText; csIn=fn_csGetCodeWithoutComments(csIn); //Saves "init type" for DsgVar //Analyses dsg var declarations if(pclDeclarationsList->m_fn_bCheckIA(DsgVarText)) { //Saves entries EdActors_EditorActor *pclEditorActor=pclModel->m_fn_pclGetEditorActor(); CTL_Editor_DataList *pclDsgVarListType=pclEditorActor->m_pclListOfDesignerVariableType; long lCurrentIndex=0; //ROMTEAM Cristi Petrescu THIS STINKS!!! You should use the PARSER to analyze your code //ROMTEAM Cristi Petrescu This way you cannot use #define in this section //ROMTEAM Cristi Petrescu You may redefine the fn_csGetNextWord function to ignore #define //ROMTEAM Cristi Petrescu or write fn_csGetCodeWithoutCommentsAndDefines, but your #define will VANISH //ROMTEAM Cristi Petrescu So, you are in troubles... CString csWord=fn_csGetNextWord(csIn,lCurrentIndex); long lNoDsgVar=0; while(!csWord.IsEmpty()) { // checks for "Private" variables if (!csWord.CompareNoCase("Private")) csWord = fn_csGetNextWord(csIn,lCurrentIndex); //Gets Type tdeDsgVarTypeId eDsgVarTypeId=(tdeDsgVarTypeId)fn_lGetDsgVarTypeIdFromEditorName(csWord); //Gets Name CString csDsgVarName=fn_csGetNextWord(csIn,lCurrentIndex); //Computes Index CString csDsgVarIndex; csDsgVarIndex.Format("%ld",lNoDsgVar); //Skips Initial Value CString csInitValue=fn_csGetNextWord(csIn,lCurrentIndex); //Saves only if different from "None" CTL_Editor_Data *pclBaseData=pclDsgVarListType->m_fn_pclGetDataFromName(csDsgVarName+g_c_csDsgVarInitTypeText); if(pclBaseData!=NULL) { ASSERT(pclBaseData->m_pub_fn_tdeGetDataType()==CTL_DATA_TYPE__ENUM); if(pclBaseData->m_pub_fn_tdeGetDataType()==CTL_DATA_TYPE__ENUM) { CTL_Editor_EnumData *pclDataEnum=(CTL_Editor_EnumData *)pclBaseData; if(pclDataEnum->m_pclCurrentValue!=NULL) { long lInitTypeValue=pclDataEnum->m_pclCurrentValue->m_pub_fn_lGetValue(); CString csInitTypeValue=fn_szFindScriptNameFromInitType((enum tdeObjectTreeInit_)lInitTypeValue); if(lInitTypeValue!=fn_eFindInitTypeFromInitTypeNumber(fn_ucDefaultInitTypeNumber())) { M_SAVEENTRY2PARMS(g_c_csDecInitTypeEntryName, csDsgVarIndex, csInitTypeValue); } #if defined(_SAVE_DEFAULT_IN_COMMENT_) // { else { M_SAVECOMMENT2PARMS(g_c_csDecInitTypeEntryName, csDsgVarIndex, csInitTypeValue); } #endif /* _SAVE_DEFAULT_IN_COMMENT_ } */ } } } if(eDsgVarTypeId==eDsgVarType_Vector) { //Skips x,y,z components fn_csGetNextWord(csIn,lCurrentIndex); fn_csGetNextWord(csIn,lCurrentIndex); fn_csGetNextWord(csIn,lCurrentIndex); } //Skips Next Type csWord=fn_csGetNextWord(csIn,lCurrentIndex); lNoDsgVar++; } } } } /**********************************************************************************/ void CPA_EdIR_Brain::m_fn_vSaveEngineAIDeclaration(SCR_tdst_File_Description *p_tdstFile, char *p_szSectionName, void *p_vData, SCR_tde_Ntfy_Action eAction) { CPA_EdIR_Brain *pclBrain=(CPA_EdIR_Brain *)p_vData; g_pclCurrentModel=pclBrain->m_pclModel; CPA_Actor *pclActor=pclBrain->m_fn_pclGetModel(); CString csFamilyName=pclActor->m_pub_fn_pclGetFamily()->GetName(); CString csModelName=pclActor->GetName(); CString csMsg="Saving IA of "+csFamilyName+"@"+csModelName+" (Engine)"; fn_vDisplayInfoInStatusBar(csMsg,C_STATUS_NORMAL); //Gets current state CPA_EdIR_Frame *pclIRMainFrame=g_pclAIInterface->m_pclIRMainFrame; tdeEditState tdeOldState=pclIRMainFrame->m_fn_pclGetButtonView()->m_fn_tdeGetEditState(); //Gets current brain CPA_EdIR_Brain *pclOldBrain=pclIRMainFrame->m_fn_pclUpdateBrain(pclBrain,TRUE,FALSE); pclIRMainFrame->m_fn_pclGetButtonView()->m_fn_vSetEditState(EditDecl, FALSE); SCR_M_SvL0_SaveScriptFileHeader(p_tdstFile); fn_vSaveInfos(p_tdstFile); SCR_M_SvL0_SaveBeginSection(p_tdstFile, M_MAKECHAR(g_c_csDecSectionName+":"), SCR_CC_C_Cfg_NoChar); //Analyses dsg var declarations //BEGIN ROMTEAM Cristi Petrescu 98-04- if(pclBrain->m_clListOfDeclarations.m_fn_bCheckIA(DsgVarText) && pclBrain->m_clListOfMacros.m_fn_bCheckIA(Macro_2_Text)) //END ROMTEAM Cristi Petrescu 98-04- { CString csSizeOfAllDsgVar; csSizeOfAllDsgVar.Format("%ld",g_clDsgVarList.m_fn_lGetSizeOfAllDesignerVariables()); CString csNbDsgVar; csNbDsgVar.Format("%ld",g_clDsgVarList.GetCount()); SCR_fn_v_SvL0_SaveParameters_MP(p_tdstFile, SCR_EF_SvL0_Normal, 2, M_MAKECHAR(csSizeOfAllDsgVar), M_MAKECHAR(csNbDsgVar)); AI_tdstMind *pstMind=NULL; CPA_List clInstancesList; g_pclAIInterface->GetMainWorld()->fn_lFindObjects(&clInstancesList,"",C_szActorInstanceTypeName,pclActor); if(!clInstancesList.IsEmpty()) { CPA_Actor *pclInstance=(CPA_Actor *)(clInstancesList.GetHead()); tdstEngineObject *pstEngineObject=(tdstEngineObject *)pclInstance->GetStruct(); MS_tdxHandleToBrain hBrain=pstEngineObject->h_Brain; if(hBrain!=NULL) pstMind=M_pstGetMindOfBrain(hBrain); } if(pclBrain->m_clListOfDeclarations.m_fn_bSaveIA(p_tdstFile,pstMind,DsgVarText)) { fn_vSaveSaveType(p_tdstFile,g_pclCurrentModel,&(pclBrain->m_clListOfDeclarations)); //BEGIN ROMTEAM Cristi Petrescu 98-04- pclBrain->m_clListOfMacros.m_fn_bCheckIA(Macro_2_Text); //END ROMTEAM Cristi Petrescu 98-04- fn_vSaveInitType(p_tdstFile,g_pclCurrentModel,&(pclBrain->m_clListOfDeclarations)); //BEGIN ROMTEAM Cristi Petrescu 98-04- pclBrain->m_clListOfMacros.m_fn_bCheckIA(Macro_2_Text); //END ROMTEAM Cristi Petrescu 98-04- SCRIPT_vSaveEndSection(p_tdstFile); //Sets current state pclIRMainFrame->m_fn_pclGetButtonView()->m_fn_vSetEditState(tdeOldState, FALSE); //Sets current brain pclIRMainFrame->m_fn_pclUpdateBrain(pclOldBrain,TRUE,FALSE); } } } /**********************************************************************************/ void CPA_EdIR_Brain::m_fn_vSaveEngineAIRules(SCR_tdst_File_Description *p_tdstFile, char *p_szSectionName, void *p_vData, SCR_tde_Ntfy_Action eAction) { CPA_EdIR_Brain *pclBrain=(CPA_EdIR_Brain *)p_vData; g_pclCurrentModel=pclBrain->m_pclModel; CPA_Actor *pclActor=pclBrain->m_fn_pclGetModel(); CString csFamilyName=pclActor->m_pub_fn_pclGetFamily()->GetName(); CString csModelName=pclActor->GetName(); CString csMsg="Saving IA of "+csFamilyName+"@"+csModelName+" (Engine)"; fn_vDisplayInfoInStatusBar(csMsg,C_STATUS_NORMAL); //Gets current state CPA_EdIR_Frame *pclIRMainFrame=g_pclAIInterface->m_pclIRMainFrame; tdeEditState tdeOldState=pclIRMainFrame->m_fn_pclGetButtonView()->m_fn_tdeGetEditState(); //Gets current brain CPA_EdIR_Brain *pclOldBrain=pclIRMainFrame->m_fn_pclUpdateBrain(pclBrain,TRUE,FALSE); pclIRMainFrame->m_fn_pclGetButtonView()->m_fn_vSetEditState(EditIntell, FALSE); SCR_M_SvL0_SaveScriptFileHeader(p_tdstFile); fn_vSaveInfos(p_tdstFile); SCR_M_SvL0_SaveBeginSection(p_tdstFile, M_MAKECHAR(g_c_csRulSectionName+":"), SCR_CC_C_Cfg_NoChar); CString csNbBehaviours; csNbBehaviours.Format("%ld",pclBrain->m_clListOfIntelligenceBehaviours.GetCount()); CString csNbEntriesInActionTable; csNbEntriesInActionTable.Format("%u",fn_ucGetDefaultActionTableNbEntries()); if(!pclBrain->m_clListOfIntelligenceBehaviours.IsEmpty()) { /* Saves initial behaviour */ CTL_Editor_Data *pclBaseData=g_pclCurrentModel->m_fn_pclGetEditorActor()->m_pclListOfDesignerVariableType->m_fn_pclGetDataFromName(g_c_csInitialIABehaviour); if((pclBaseData!=NULL) && (!pclBaseData->m_fn_pcslFormatDataValueString()->IsEmpty())) { CString csInitialIABehaviour=pclBaseData->m_fn_pcslFormatDataValueString()->GetHead(); SCR_fn_v_SvL0_SaveParameters_MP(p_tdstFile, SCR_EF_SvL0_Normal, 3, M_MAKECHAR(csNbBehaviours), M_MAKECHAR(csNbEntriesInActionTable), M_MAKECHAR(csInitialIABehaviour)); } else { SCR_fn_v_SvL0_SaveParameters_MP(p_tdstFile, SCR_EF_SvL0_Normal, 2, M_MAKECHAR(csNbBehaviours), M_MAKECHAR(csNbEntriesInActionTable)); } } else { SCR_fn_v_SvL0_SaveParameters_MP(p_tdstFile,SCR_EF_SvL0_Normal,2,"0","0"); } //BEGIN ROMTEAM Cristi Petrescu 98-04- if(pclBrain->m_clListOfDeclarations.m_fn_bCheckIA(DsgVarText) && pclBrain->m_clListOfMacros.m_fn_bCheckIA(Macro_2_Text) && pclBrain->m_clListOfIntelligenceBehaviours.m_fn_bSaveIA(p_tdstFile,NULL,IntelligenceText)) //END ROMTEAM Cristi Petrescu 98-04- { SCRIPT_vSaveEndSection(p_tdstFile); //Sets current state pclIRMainFrame->m_fn_pclGetButtonView()->m_fn_vSetEditState(tdeOldState, FALSE); //Sets current brain pclIRMainFrame->m_fn_pclUpdateBrain(pclOldBrain,TRUE,FALSE); } } /**********************************************************************************/ void CPA_EdIR_Brain::m_fn_vSaveEngineAIReflexes(SCR_tdst_File_Description *p_tdstFile, char *p_szSectionName, void *p_vData, SCR_tde_Ntfy_Action eAction) { CPA_EdIR_Brain *pclBrain=(CPA_EdIR_Brain *)p_vData; g_pclCurrentModel=pclBrain->m_pclModel; CPA_Actor *pclActor=pclBrain->m_fn_pclGetModel(); CString csFamilyName=pclActor->m_pub_fn_pclGetFamily()->GetName(); CString csModelName=pclActor->GetName(); CString csMsg="Saving IA of "+csFamilyName+"@"+csModelName+" (Engine)"; fn_vDisplayInfoInStatusBar(csMsg,C_STATUS_NORMAL); //Gets current state CPA_EdIR_Frame *pclIRMainFrame=g_pclAIInterface->m_pclIRMainFrame; tdeEditState tdeOldState=pclIRMainFrame->m_fn_pclGetButtonView()->m_fn_tdeGetEditState(); //Gets current brain CPA_EdIR_Brain *pclOldBrain=pclIRMainFrame->m_fn_pclUpdateBrain(pclBrain,TRUE,FALSE); pclIRMainFrame->m_fn_pclGetButtonView()->m_fn_vSetEditState(EditReflex, FALSE); SCR_M_SvL0_SaveScriptFileHeader(p_tdstFile); fn_vSaveInfos(p_tdstFile); SCR_M_SvL0_SaveBeginSection(p_tdstFile, M_MAKECHAR(g_c_csRfxSectionName+":"), SCR_CC_C_Cfg_NoChar); CString csNbBehaviours; csNbBehaviours.Format("%ld",pclBrain->m_clListOfReflexBehaviours.GetCount()); CString csNbEntriesInActionTable; csNbEntriesInActionTable.Format("%u",fn_ucGetDefaultActionTableNbEntries()); if(!pclBrain->m_clListOfReflexBehaviours.IsEmpty()) { /* Saves initial behaviour */ CTL_Editor_Data *pclBaseData=g_pclCurrentModel->m_fn_pclGetEditorActor()->m_pclListOfDesignerVariableType->m_fn_pclGetDataFromName(g_c_csInitialRfxBehaviour); if((pclBaseData!=NULL) && (!pclBaseData->m_fn_pcslFormatDataValueString()->IsEmpty())) { CString csInitialRfxBehaviour=pclBaseData->m_fn_pcslFormatDataValueString()->GetHead(); SCR_fn_v_SvL0_SaveParameters_MP(p_tdstFile, SCR_EF_SvL0_Normal, 3, M_MAKECHAR(csNbBehaviours), M_MAKECHAR(csNbEntriesInActionTable), M_MAKECHAR(csInitialRfxBehaviour)); } else { SCR_fn_v_SvL0_SaveParameters_MP(p_tdstFile, SCR_EF_SvL0_Normal, 2, M_MAKECHAR(csNbBehaviours), M_MAKECHAR(csNbEntriesInActionTable)); } } else { SCR_fn_v_SvL0_SaveParameters_MP(p_tdstFile,SCR_EF_SvL0_Normal,2,"0","0"); } //BEGIN ROMTEAM Cristi Petrescu 98-04- if(pclBrain->m_clListOfDeclarations.m_fn_bCheckIA(DsgVarText) && pclBrain->m_clListOfMacros.m_fn_bCheckIA(Macro_2_Text) && pclBrain->m_clListOfReflexBehaviours.m_fn_bSaveIA(p_tdstFile,NULL,ReflexText)) //END ROMTEAM Cristi Petrescu 98-04- { SCRIPT_vSaveEndSection(p_tdstFile); //Sets current state pclIRMainFrame->m_fn_pclGetButtonView()->m_fn_vSetEditState(tdeOldState, FALSE); //Sets current brain pclIRMainFrame->m_fn_pclUpdateBrain(pclOldBrain,TRUE,FALSE); } } //BEGIN ROMTEAM Cristi Petrescu 98-04- /**********************************************************************************/ void CPA_EdIR_Brain::m_fn_vSaveEngineAISubrs(SCR_tdst_File_Description *p_tdstFile, char *p_szSectionName, void *p_vData, SCR_tde_Ntfy_Action eAction) { CPA_EdIR_Brain *pclBrain=(CPA_EdIR_Brain *)p_vData; g_pclCurrentModel=pclBrain->m_pclModel; CPA_Actor *pclActor=pclBrain->m_fn_pclGetModel(); CString csFamilyName=pclActor->m_pub_fn_pclGetFamily()->GetName(); CString csModelName=pclActor->GetName(); CString csMsg="Saving IA of "+csFamilyName+"@"+csModelName+" (Engine)"; fn_vDisplayInfoInStatusBar(csMsg,C_STATUS_NORMAL); //Gets current state CPA_EdIR_Frame *pclIRMainFrame=g_pclAIInterface->m_pclIRMainFrame; tdeEditState tdeOldState=pclIRMainFrame->m_fn_pclGetButtonView()->m_fn_tdeGetEditState(); //Gets current brain CPA_EdIR_Brain *pclOldBrain=pclIRMainFrame->m_fn_pclUpdateBrain(pclBrain,TRUE,FALSE); pclIRMainFrame->m_fn_pclGetButtonView()->m_fn_vSetEditState(EditSubr, FALSE); SCR_M_SvL0_SaveScriptFileHeader(p_tdstFile); fn_vSaveInfos(p_tdstFile); SCR_M_SvL0_SaveBeginSection(p_tdstFile, M_MAKECHAR(g_c_csEngSubrSectionName+":"), SCR_CC_C_Cfg_NoChar); CString csNbBehaviours; csNbBehaviours.Format("%ld",pclBrain->m_clListOfSubrs.GetCount()); if(!pclBrain->m_clListOfSubrs.IsEmpty()) { SCR_fn_v_SvL0_SaveParameters_MP(p_tdstFile, SCR_EF_SvL0_Normal, 1, M_MAKECHAR(csNbBehaviours)); } else { SCR_fn_v_SvL0_SaveParameters_MP(p_tdstFile,SCR_EF_SvL0_Normal,1,"0"); } //BEGIN ROMTEAM Cristi Petrescu 98-04- if(pclBrain->m_clListOfDeclarations.m_fn_bCheckIA(DsgVarText) && pclBrain->m_clListOfMacros.m_fn_bCheckIA(Macro_2_Text) && pclBrain->m_clListOfSubrs.m_fn_bSaveIA(p_tdstFile,NULL,SubrText)) //END ROMTEAM Cristi Petrescu 98-04- { SCRIPT_vSaveEndSection(p_tdstFile); //Sets current state pclIRMainFrame->m_fn_pclGetButtonView()->m_fn_vSetEditState(tdeOldState, FALSE); //Sets current brain pclIRMainFrame->m_fn_pclUpdateBrain(pclOldBrain,TRUE,FALSE); } } //END ROMTEAM Cristi Petrescu 98-04- /**********************************************************************************/ void CPA_EdIR_Brain::m_fn_vSaveEngineAIDefines(SCR_tdst_File_Description *p_tdstFile, char *p_szSectionName, void *p_vData, SCR_tde_Ntfy_Action eAction) { CPA_EdIR_ConstantList *pclConstantList=(CPA_EdIR_ConstantList *)p_vData; SCR_M_SvL0_SaveScriptFileHeader(p_tdstFile); fn_vSaveInfos(p_tdstFile); SCR_M_SvL0_SaveBeginSection(p_tdstFile, M_MAKECHAR(g_c_csAIDefineSectionName+":"), SCR_CC_C_Cfg_EOL); POSITION pos=pclConstantList->GetHeadPosition(); while(pos!=NULL) { CPA_EdIR_Constant *pclConstant=pclConstantList->GetNext(pos); CString csType=pclConstant->m_fn_csGetConstantType(); if(csType==g_c_csInteger) csType=g_c_csAIDefineConstantRef; else if(csType==g_c_csDecimal) csType=g_c_csAIDefineRealRef; else { AfxMessageBox("CPA_EdIR_Brain::m_fn_vSaveEngineAIDefines : unknown constant type ("+csType+")"); ASSERT(FALSE); } CString csName=pclConstant->m_fn_csGetConstantName(); CString csValue=pclConstant->m_fn_csGetConstantValue(); M_SAVEENTRY2PARMS(csType,csName,csValue); } SCRIPT_vSaveEndSection(p_tdstFile); } /**********************************************************************************/ void EdIR_fn_vSaveInitialBehaviourInBrainMS(CPA_Actor *pclActor,SCR_tdst_File_Description *p_tdstFile) { tdstEngineObject *pstEngineObject=(tdstEngineObject *)pclActor->GetData(); MS_tdxHandleToBrain hBrain =pstEngineObject->h_Brain; AI_tdstMind *pstMind =M_pstGetMindOfBrain(hBrain); //Saves initial behaviour (rule) if(pstMind!=NULL) { EdActors_EditorActor *pclEditorActor =pclActor->m_fn_pclGetEditorActor(); CPA_Actor *pclModel =pclActor->m_fn_pclGetModel(); EdActors_EditorActorModel *pclEditorModel =(EdActors_EditorActorModel *)pclModel->m_fn_pclGetEditorActor(); CTL_Editor_DataList *pclDsgVarListType =pclEditorActor->m_pclListOfDesignerVariableType; CTL_Editor_Data *pclBaseData =pclDsgVarListType->m_fn_pclGetDataFromName(g_c_csInitialIABehaviour); if(!pclEditorModel->m_pclBrain->m_clListOfIntelligenceBehaviours.IsEmpty()) { if( (pclBaseData!=NULL) && (pclBaseData->m_pub_fn_tdeGetDataType()==CTL_DATA_TYPE__ENUM) ) { CString csInitialBehaviourName =pclBaseData->m_fn_pcslFormatDataValueString()->GetHead(); CString csFamilyName =pclModel->m_pub_fn_pclGetFamily()->GetName(); CString csModelName =pclModel->GetName(); CString csPath =csFamilyName+"\\"+csModelName+"\\"+csModelName+g_c_csAIRulFileExtension+"^"+g_c_csRulSectionName; SCR_M_SvL0_SaveBeginSection(p_tdstFile, M_MAKECHAR(g_c_csCarRulSectionName+":"), SCR_CC_C_Cfg_NoChar); SCR_fn_v_SvL0_SaveParameters_MP(p_tdstFile, SCR_EF_SvL0_Normal, 1, M_MAKECHAR(csPath+"^"+g_c_csBehavSectionName+":"+csInitialBehaviourName)); SCRIPT_vSaveEndSection(p_tdstFile); } #if defined(_SHOW_WARNING_) // { else { if (AfxMessageBox("WARNING : EdIR_fn_vSaveInitialBehaviourInBrainMS : no initial comportement saved\nDo you want to debug ?",MB_YESNO) == IDYES) ASSERT(FALSE); } #endif // _SHOW_WARNING_ } } #if defined(_SAVE_DEFAULT_IN_COMMENT_) // { else { SCR_M_SvL0_SaveComment(p_tdstFile,"No Intelligence behaviour in model"); } #endif // _SAVE_DEFAULT_IN_COMMENT_ } } //Saves initial behaviour (reflex) if(pstMind!=NULL) { EdActors_EditorActor *pclEditorActor =pclActor->m_fn_pclGetEditorActor(); CPA_Actor *pclModel =pclActor->m_fn_pclGetModel(); EdActors_EditorActorModel *pclEditorModel =(EdActors_EditorActorModel *)pclModel->m_fn_pclGetEditorActor(); CTL_Editor_DataList *pclDsgVarListType =pclEditorActor->m_pclListOfDesignerVariableType; CTL_Editor_Data *pclBaseData =pclDsgVarListType->m_fn_pclGetDataFromName(g_c_csInitialRfxBehaviour); if(!pclEditorModel->m_pclBrain->m_clListOfReflexBehaviours.IsEmpty()) { if( (pclBaseData!=NULL) && (pclBaseData->m_pub_fn_tdeGetDataType()==CTL_DATA_TYPE__ENUM) ) { CString csInitialBehaviourName =pclBaseData->m_fn_pcslFormatDataValueString()->GetHead(); CString csFamilyName =pclModel->m_pub_fn_pclGetFamily()->GetName(); CString csModelName =pclModel->GetName(); CString csPath =csFamilyName+"\\"+csModelName+"\\"+csModelName+g_c_csAIRfxFileExtension+"^"+g_c_csRfxSectionName; SCR_M_SvL0_SaveBeginSection(p_tdstFile, M_MAKECHAR(g_c_csCarRfxVarSectionName+":"), SCR_CC_C_Cfg_NoChar); SCR_fn_v_SvL0_SaveParameters_MP(p_tdstFile, SCR_EF_SvL0_Normal, 1, M_MAKECHAR(csPath+"^"+g_c_csBehavSectionName+":"+csInitialBehaviourName)); SCRIPT_vSaveEndSection(p_tdstFile); } #if defined(_SHOW_WARNING_) // { else { if(AfxMessageBox("WARNING : EdIR_fn_vSaveInitialBehaviourInBrainMS : no initial reflex saved\nDo you want to debug ?",MB_YESNO)==IDYES) ASSERT(FALSE); } #endif // _SHOW_WARNING_ } } #if defined(_SAVE_DEFAULT_IN_COMMENT_) // { else { SCR_M_SvL0_SaveComment(p_tdstFile,"No Reflex behaviour in model"); } #endif // _SAVE_DEFAULT_IN_COMMENT_ } } } /**********************************************************************************/ CString EdIR_fn_csGetInitialValue(void *pvInitEngineValue,tdeDsgVarTypeId eDsgVarTypeId) { CString csInitDsgVarValue; tdstGetSetParam stGetSetParam; switch(eDsgVarTypeId) { case eDsgVarType_Boolean: case eDsgVarType__128To127: case eDsgVarType_0To255: case eDsgVarType__32768To32767: case eDsgVarType_0To65535: case eDsgVarType_Integer: case eDsgVarType_PositiveInteger: { fn_ucGetDsgVarValue(pvInitEngineValue,0,eDsgVarTypeId,&stGetSetParam); csInitDsgVarValue.Format("%ld",M_GetSetParam_lValue(&stGetSetParam)); } break; case eDsgVarType_Float: { fn_ucGetDsgVarValue(pvInitEngineValue,0,eDsgVarTypeId,&stGetSetParam); csInitDsgVarValue.Format("%f",M_GetSetParam_xValue(&stGetSetParam)); } break; case eDsgVarType_Caps: { char sz255Temp[255]; fn_ucGetDsgVarValue(pvInitEngineValue, 0, eDsgVarTypeId, &stGetSetParam); ltoa( M_GetSetParam_CapsValue(&stGetSetParam), sz255Temp, 2); csInitDsgVarValue = sz255Temp; } break; case eDsgVarType_Graph: { fn_ucGetDsgVarValue(pvInitEngineValue,0,eDsgVarTypeId,&stGetSetParam); WP_tdHandleOfGraph lHandle = (WP_tdHandleOfGraph) M_GetSetParam_GraphValue(&stGetSetParam); CString csReferencedSectionName; if(lHandle!=NULL) { csReferencedSectionName = lHandle->m_szNameOfGraph; } else csReferencedSectionName=szFindKeyWordScriptNameFromId(eKeyWord_NoGraph); csInitDsgVarValue=csReferencedSectionName; } break; case eDsgVarType_WayPoint: { fn_ucGetDsgVarValue(pvInitEngineValue,0,eDsgVarTypeId,&stGetSetParam); long lHandle=(long)M_GetSetParam_WayPointValue(&stGetSetParam); CString csReferencedSectionName; if(lHandle!=NULL) { CPA_SaveObject *pclObject=fn_pclGetReachableObject(lHandle,C_szWayPointTypeName); csReferencedSectionName=pclObject->GetReferencedSectionName(); } else csReferencedSectionName=szFindKeyWordScriptNameFromId(eKeyWord_Nowhere); csInitDsgVarValue=csReferencedSectionName; } break; case eDsgVarType_Perso: { fn_ucGetDsgVarValue(pvInitEngineValue,0,eDsgVarTypeId,&stGetSetParam); long lHandle=M_GetSetParam_lValue(&stGetSetParam); CString csReferencedSectionName; if(lHandle!=NULL) { CPA_SaveObject *pclObject=fn_pclGetReachableObject(lHandle,C_szActorInstanceTypeName); csReferencedSectionName=pclObject->GetReferencedSectionName(); } else csReferencedSectionName=szFindKeyWordScriptNameFromId(eKeyWord_Nobody); csInitDsgVarValue=csReferencedSectionName; } break; case eDsgVarType_SuperObject: { fn_ucGetDsgVarValue(pvInitEngineValue,0,eDsgVarTypeId,&stGetSetParam); long lHandle=M_GetSetParam_lValue(&stGetSetParam); CString csReferencedSectionName; if(lHandle!=NULL) { CPA_SaveObject *pclObject=fn_pclGetReachableObject(lHandle,C_szSuperObjectTypeName); csReferencedSectionName=pclObject->GetReferencedSectionName(); } else csReferencedSectionName=szFindKeyWordScriptNameFromId(eKeyWord_NoSuperObject); csInitDsgVarValue=csReferencedSectionName; } break; case eDsgVarType_List: { ASSERT(FALSE); } break; case eDsgVarType_Vector: { fn_ucGetDsgVarValue(pvInitEngineValue,0,eDsgVarTypeId,&stGetSetParam); MTH3D_tdstVector *pstVector=&(M_GetSetParam_stVertexValue(&stGetSetParam)); csInitDsgVarValue.Format("%f,%f,%f", MTH3D_M_xGetXofVector(pstVector), MTH3D_M_xGetYofVector(pstVector), MTH3D_M_xGetZofVector(pstVector)); } break; case eDsgVarType_Comport: { fn_ucGetDsgVarValue(pvInitEngineValue,0,eDsgVarTypeId,&stGetSetParam); long lHandle=(long)M_GetSetParam_pComport(&stGetSetParam); csInitDsgVarValue=M_GetNameComport((struct tdstComport_ *)lHandle); } break; case eDsgVarType_Action: { fn_ucGetDsgVarValue(pvInitEngineValue,0,eDsgVarTypeId,&stGetSetParam); long lHandle=(long)M_GetSetParam_ActionValue(&stGetSetParam); CPA_SaveObject *pclObject=fn_pclGetReachableObject(lHandle,C_szStateTypeName); CString csReferencedSectionName=pclObject->GetReferencedSectionName(); csInitDsgVarValue=csReferencedSectionName; } break; case eDsgVarType_Text: { fn_ucGetDsgVarValue(pvInitEngineValue,0,eDsgVarTypeId,&stGetSetParam); FON_tdxHandleOfText hText = M_GetSetParam_hText(&stGetSetParam); csInitDsgVarValue = FON_fn_szGetNameOfTextHandle(hText); } break; case eDsgVarType_GameMaterial: { fn_ucGetDsgVarValue(pvInitEngineValue,0,eDsgVarTypeId,&stGetSetParam); long lHandle=(long)M_GetSetParam_hGameMaterial(&stGetSetParam); CPA_SaveObject *pclObject=fn_pclGetReachableObject(lHandle,C_szGameMaterialTypeName); CString csReferencedSectionName=pclObject->GetReferencedSectionName(); csInitDsgVarValue=csReferencedSectionName; } break; } return csInitDsgVarValue; } // BEGIN ROMTEAM Cristi Petrescu 99-01- debug #include "EdIRDV.hpp" #include "EdIRDVls.hpp" /**********************************************************************************/ void EdIR_fn_vSaveInitValue(CPA_Actor *pclActor,long lNoDsgVar,SCR_tdst_File_Description *p_tdstFile) { tdstEngineObject *pstEngineObject=(tdstEngineObject *)pclActor->GetData(); MS_tdxHandleToBrain hBrain=pstEngineObject->h_Brain; AI_tdstMind *pstMind=M_pstGetMindOfBrain(hBrain); // END ROMTEAM Cristi Petrescu 99-01- debug //Gets Type tdeDsgVarTypeId eDsgVarTypeId=M_GetDsgVarType(pstMind,lNoDsgVar); tdeVariableType eVariableType=fn_GetDsgVarType(eDsgVarTypeId); CString csDsgVarType=szFindDsgVarTypeScriptNameFromId(eDsgVarTypeId); if( ( eDsgVarTypeId == eDsgVarType_List ) ) { // no value for this type of variable return; } //Saves only if different from model void *pvAddrInit=M_GetDsgVarAddrInit(pstMind,lNoDsgVar); void *pvAddrDefault=M_GetDsgVarAddrDefault(pstMind,lNoDsgVar); // BEGIN ROMTEAM Cristi Petrescu 99-01- debug #if !defined(_SAVE_DEFAULT_IN_COMMENT_) // { long lNbElt=0;//, lModelNbElt = 0; BOOL bNeedToSave = FALSE; if(eVariableType==E_vt_Array) { tdstArray *pstArray=(tdstArray *)pvAddrInit; lNbElt=M_ARRAY_SIZE(pstArray); // extremely ineficient, but is the best I can do //CPA_EdIR_Brain *pclBrain = ((EdActors_EditorActorModel *) pclActor -> m_fn_pclGetEditorActor ()) -> m_pclBrain; //CPA_Actor *pclModel = pclBrain -> m_fn_pclGetModel (); //pclBrain = ((EdActors_EditorActorModel *) pclModel -> m_fn_pclGetEditorActor ()) -> m_pclBrain; // ... // this is better. does it work? //CPA_EdIR_DesignerVariable *pclDsgVar = g_clDsgVarList -> GetAt (pos); //if (! pclDsgVar) // cModelNbElt = 0; //else // cModelNbElt = pclDsgVar -> m_fn_csGetFirstDesignerVariableValue (); //CPA_Actor *pclModel = pclActor -> m_fn_pclGetModel (); //CPA_EdIR_Brain *pclBrain = ((EdActors_EditorActorModel *) pclModel -> m_fn_pclGetEditorActor ()) -> m_pclBrain; //CPA_EdIR_MainBehaviour *pclVariableDeclarations = pclBrain -> m_clListOfDeclarations . m_fn_pclGetMainBehaviour (g_c_csDsgVarName); //if (! pclVariableDeclarations -> m_fn_bHasBeenModified ()) // lModelNbElt = lNbElt; // use engine data //else //{ // use editor data // CString csModelNbElt = g_clDsgVarList . m_fn_csGetFirstValueOfADesignerVariable (lNoDsgVar); // lModelNbElt = atoi (csModelNbElt); //} //if (lNbElt != lModelNbElt) //{ // bNeedToSave = TRUE; //} //else //{ unsigned long ulSize=fn_ulSizeOfDsgVar(M_GetDsgVarType(pstMind,lNoDsgVar),lNbElt); if(memcmp(pvAddrInit,pvAddrDefault,ulSize)!=0) bNeedToSave = TRUE; //} } else { unsigned long ulSize=fn_ulSizeOfDsgVar(M_GetDsgVarType(pstMind,lNoDsgVar),0); if(memcmp(pvAddrInit,pvAddrDefault,ulSize)!=0) bNeedToSave = TRUE; } if (bNeedToSave) #endif /* _SAVE_DEFAULT_IN_COMMENT_ } */ // END ROMTEAM Cristi Petrescu 99-01- debug { //Gets Name CString csDsgVarName=M_GetDsgVarName(pstMind,lNoDsgVar); //Computes Index CString csDsgVarIndex; csDsgVarIndex.Format("%ld",lNoDsgVar); //Gets Init Value void *pvInitEngineValue=M_GetDsgVarAddrInit(pstMind,lNoDsgVar); if(eVariableType==E_vt_Array) { tdstArray *pstModelArray=(tdstArray *)pvAddrDefault; unsigned long ulEntrySize=fn_ulSizeOfDsgVar(M_ARRAY_TYPE(pstModelArray),0); tdstArray *pstArray=(tdstArray *)pvInitEngineValue; long lNbElt=M_ARRAY_SIZE(pstArray); //Saves Declaration CString csNbElt; // BEGIN ROMTEAM Cristi Petrescu 99-01- debug csNbElt.Format("%ld",lNbElt); //csNbElt.Format("%ld",lModelNbElt); M_SAVEENTRY3PARMS(csDsgVarType,csDsgVarIndex,csDsgVarName,csNbElt); //Saves Values SCR_g_ui_SvL0_IndentationLevel++; CString csDsgVarSubType=szFindDsgVarTypeScriptNameFromId(M_ARRAY_TYPE(pstArray)); for(long lIndex=0;lIndex < lNbElt; lIndex ++)//, lIndex < lModelNbElt;lIndex++) // END ROMTEAM Cristi Petrescu 99-01- debug { //Saves only if different from model #if !defined(_SAVE_DEFAULT_IN_COMMENT_) // { if(memcmp(M_ARRAY_ELEMENT(pstArray,lIndex),M_ARRAY_ELEMENT(pstModelArray,lIndex),ulEntrySize)!=0) #endif /* _SAVE_DEFAULT_IN_COMMENT_ } */ { CString csIndex; csIndex.Format("%ld",lIndex); CString csInitDsgVarValue=EdIR_fn_csGetInitialValue(M_ARRAY_ELEMENT(pstArray,lIndex),M_ARRAY_TYPE(pstArray)); if((eDsgVarTypeId==eDsgVarType_Vector)||(eDsgVarTypeId==eDsgVarType_VectorArray)) { long lTmpIndex=0; CString csX=fn_csGetNextWord(csInitDsgVarValue,lTmpIndex); CString csY=fn_csGetNextWord(csInitDsgVarValue,lTmpIndex); CString csZ=fn_csGetNextWord(csInitDsgVarValue,lTmpIndex); #if !defined(_SAVE_DEFAULT_IN_COMMENT_) // { M_SAVEENTRY5PARMS(csDsgVarSubType,csIndex,"\"@"+csDsgVarName+"\"",csX,csY,csZ); #else /* } { */ if(memcmp(M_ARRAY_ELEMENT(pstArray,lIndex),M_ARRAY_ELEMENT(pstModelArray,lIndex),ulEntrySize)!=0) { M_SAVEENTRY5PARMS(csDsgVarSubType,csIndex,"\"@"+csDsgVarName+"\"",csX,csY,csZ); } else { M_SAVECOMMENT5PARMS(csDsgVarSubType,csIndex,"\"@"+csDsgVarName+"\"",csX,csY,csZ); } #endif /* _SAVE_DEFAULT_IN_COMMENT_ } */ } else { #if !defined(_SAVE_DEFAULT_IN_COMMENT_) // { M_SAVEENTRY3PARMS(csDsgVarSubType,csIndex,"\"@"+csDsgVarName+"\"",csInitDsgVarValue); #else /* } { */ if(memcmp(M_ARRAY_ELEMENT(pstArray,lIndex),M_ARRAY_ELEMENT(pstModelArray,lIndex),ulEntrySize)!=0) { M_SAVEENTRY3PARMS(csDsgVarSubType,csIndex,"\"@"+csDsgVarName+"\"",csInitDsgVarValue); } else { M_SAVECOMMENT3PARMS(csDsgVarSubType,csIndex,"\"@"+csDsgVarName+"\"",csInitDsgVarValue); } #endif /* _SAVE_DEFAULT_IN_COMMENT_ } */ } } } SCR_g_ui_SvL0_IndentationLevel--; } else { CString csInitDsgVarValue=EdIR_fn_csGetInitialValue(pvInitEngineValue,eDsgVarTypeId); if(eDsgVarTypeId==eDsgVarType_Vector) { long lTmpIndex=0; CString csX=fn_csGetNextWord(csInitDsgVarValue,lTmpIndex); CString csY=fn_csGetNextWord(csInitDsgVarValue,lTmpIndex); CString csZ=fn_csGetNextWord(csInitDsgVarValue,lTmpIndex); #if !defined(_SAVE_DEFAULT_IN_COMMENT_) // { M_SAVEENTRY5PARMS(csDsgVarType,csDsgVarIndex,csDsgVarName,csX,csY,csZ); #else if(memcmp(pvAddrInit,pvAddrDefault,ulSize)!=0) { M_SAVEENTRY5PARMS(csDsgVarType,csDsgVarIndex,csDsgVarName,csX,csY,csZ); } else { M_SAVECOMMENT5PARMS(csDsgVarType,csDsgVarIndex,csDsgVarName,csX,csY,csZ); } #endif /* _SAVE_DEFAULT_IN_COMMENT_ } */ } else { #if !defined(_SAVE_DEFAULT_IN_COMMENT_) // { M_SAVEENTRY3PARMS(csDsgVarType,csDsgVarIndex,csDsgVarName,csInitDsgVarValue); #else if(memcmp(pvAddrInit,pvAddrDefault,ulSize)!=0) { M_SAVEENTRY3PARMS(csDsgVarType,csDsgVarIndex,csDsgVarName,csInitDsgVarValue); } else { M_SAVECOMMENT3PARMS(csDsgVarType,csDsgVarIndex,csDsgVarName,csInitDsgVarValue); } #endif /* _SAVE_DEFAULT_IN_COMMENT_ } */ } } } } /**********************************************************************************/ void EdIR_fn_vSaveInitValuesInBrainMS(CPA_Actor *pclActor,SCR_tdst_File_Description *p_tdstFile) { tdstEngineObject *pstEngineObject=(tdstEngineObject *)pclActor->GetData(); MS_tdxHandleToBrain hBrain=pstEngineObject->h_Brain; AI_tdstMind *pstMind=M_pstGetMindOfBrain(hBrain); //Saves initial behaviour EdIR_fn_vSaveInitialBehaviourInBrainMS(pclActor,p_tdstFile); //Saves init value for designer variable if(pstMind!=NULL) { if((AI_M_p_stGetDsgVar(pstMind)!=NULL) && (M_GetDsgMemBufferInit(pstMind)!=NULL) && (M_GetDsgMemDefaultInit(pstMind)!=NULL) #if !defined (_SAVE_DEFAULT_IN_COMMENT_) // { && (memcmp(M_GetDsgMemBufferInit(pstMind),M_GetDsgMemDefaultInit(pstMind),M_GetDsgVarSize(pstMind))!=0) #endif /* _SAVE_DEFAULT_IN_COMMENT_ } */ ) { //Saves Init value CString csSizeOfAllDsgVar; // BEGIN ROMTEAM Cristi Petrescu 99-01- debug long lSize; //CPA_Actor *pclModel = pclActor -> m_fn_pclGetModel (); //CPA_EdIR_Brain *pclBrain = ((EdActors_EditorActorModel *) pclModel -> m_fn_pclGetEditorActor ()) -> m_pclBrain; //CPA_EdIR_MainBehaviour *pclVariableDeclarations = pclBrain -> m_clListOfDeclarations . m_fn_pclGetMainBehaviour (g_c_csDsgVarName); //if (pclVariableDeclarations -> m_fn_bHasBeenModified ()) //{ // safety :-( // lSize = g_clDsgVarList.m_fn_lGetSizeOfAllDesignerVariables(); //} //else lSize = M_GetDsgVarSize(pstMind); csSizeOfAllDsgVar.Format("%ld",lSize); //csSizeOfAllDsgVar.Format("%ld",M_GetDsgVarSize(pstMind)); // END ROMTEAM Cristi Petrescu 99-01- debug CString csNbDsgVar; csNbDsgVar.Format("%ld",M_GetNbDsgVar(pstMind)); //Saves special sub section SCR_M_SvL0_SaveBeginSection(p_tdstFile, M_MAKECHAR(g_c_csCarDecSectionName+":"), SCR_CC_C_Cfg_NoChar); SCR_fn_v_SvL0_SaveParameters_MP(p_tdstFile, SCR_EF_SvL0_Normal, 2, M_MAKECHAR(csSizeOfAllDsgVar), M_MAKECHAR(csNbDsgVar)); //Saves entries in this sub section for(long lNoDsgVar=0;lNoDsgVar