// EdIR2Eng.cpp : implementation file // #include "stdafx.h" #define D_ZdxStuff_StructureDefine #include "Defines.hpp" #ifdef D_ED_IR_ACTIVE #include "EdIR2Eng.hpp" #include "EdIRBis.hpp" #include "EdIRStrg.hpp" #include "EdIRMacL.hpp" #include "EdIRDVLs.hpp" #include "EdIRFrm.hpp" #include "EdIRDvVw.hpp" #include "EdIRIRD.hpp" #include "EdIRBeEn.hpp" #include "EdIRBeha.hpp" #include "EdIRGlob.hpp" #include "EdIRIAGl.hpp" #include "EdIRICLs.hpp" #include "EdIRCtl.hpp" #include "EdIRDat.hpp" #include "EdIRSave.hpp" #include "EdIRIAWd.hpp" #include #include #include "ai_intf.hpp" #include "EDACModl.hpp" #include "EDACInst.hpp" #include "EDACDoc.hpp" #include "Ctl.h" #include "CPA_NLL.hpp" #include "ITF.h" #include "incAI.h" #include "incGAM.h" #include "TFA.h" #include "DPT.h" #include "x:\cpa\main\inc\_EditID.h" #include "TLS/LPSconst.hpp" #include "_Actors.hpp" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif extern FILE *gh_CRRFile; extern char gcGenerateOneRule ; //Constants #define C_WITH_NO_MACRO_INFO FALSE #define C_ADD_LAST_BUT_ONE 1 #define C_ADD_ANTEPENULTIMATE 2 // CPA2 ASilvescu 98-05-21 void fn_vAddOneDependency(CPA_EdIR_MainBehaviour *pclMainBehaviour, CPA_BaseObject *pclFather,CPA_BaseObject *pclChild); class CTL_Editor_DsgVarEnumControl : public CTL_Editor_EnumControl { CPA_BaseObject *last; public: CTL_Editor_DsgVarEnumControl(BOOL bReadOnly, CTL_Editor_ControlList *_pclParentList, CString _csControlName, BOOL _bAcceptNameFromData, /*Stefan Dumitrean 20-07(OAC buttons)*/unsigned char ucInitialCurrentPair) : CTL_Editor_EnumControl(bReadOnly, _pclParentList, _csControlName, _bAcceptNameFromData, /*Stefan Dumitrean 20-07(OAC buttons)*/ucInitialCurrentPair){last = NULL;} void m_fn_vUpdateCurrentValue(); }; void CTL_Editor_DsgVarEnumControl::m_fn_vUpdateCurrentValue() { CTL_Editor_EnumControl::m_fn_vUpdateCurrentValue(); if ( m_pclComboBox != NULL ) { short wIndex = m_pclComboBox->GetCurSel(); if ( wIndex != CB_ERR ) { CTL_Editor_EnumElement *pclNewSelectedElement = (CTL_Editor_EnumElement *)(m_pclComboBox->GetItemDataPtr(wIndex)); CPA_List list; g_pclAIInterface->GetMainWorld()->fn_lFindObjects(&list,"Variables designer",C_szIABehaviourTypeName); CPA_BaseObject *beha = list.GetHeadElement(); if(beha) { list.RemoveAll(); g_pclAIInterface->GetMainWorld()->fn_lFindObjects(&list,pclNewSelectedElement->m_pub_fn_csGetElementName(),C_szWayPointTypeName); if(last) g_oCoherenceManager.m_fn_vRemoveALink(beha, last); CPA_BaseObject *pclWayPoint = list.GetHeadElement(); if(pclWayPoint) { last = pclWayPoint; fn_vAddOneDependency((CPA_EdIR_MainBehaviour *)beha, beha, pclWayPoint); } else last = NULL; } } } } // End CPA2 ASilvescu 98-05-21 //Macros for saving #define M_SAVEBEGINSECTION(a,b,c) SCR_M_SvL0_SaveBeginSection(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_SAVEENTRY1PARM(a,b) SCR_g_ui_SvL0_IndentationLevel+=atoi(M_MAKECHAR(b))-1; \ 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)); \ SCR_g_ui_SvL0_IndentationLevel-=atoi(M_MAKECHAR(b))-1 #define M_SAVEENTRY2PARMS(a,b,c) SCR_g_ui_SvL0_IndentationLevel+=atoi(M_MAKECHAR(c))-1; \ 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)); \ SCR_g_ui_SvL0_IndentationLevel-=atoi(M_MAKECHAR(c))-1 #define M_SAVEENTRY4DSGVAR(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_SAVEENTRY3PARMS(a,b,c,d) SCR_g_ui_SvL0_IndentationLevel+=atoi(M_MAKECHAR(d))-1; \ M_SAVEENTRY4DSGVAR(a,b,c,d) \ SCR_g_ui_SvL0_IndentationLevel-=atoi(M_MAKECHAR(d))-1 #define M_SAVEENTRY4PARMS(a,b,c,d,e) SCR_g_ui_SvL0_IndentationLevel+=atoi(M_MAKECHAR(e))-1; \ 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)); \ SCR_g_ui_SvL0_IndentationLevel-=atoi(M_MAKECHAR(e))-1 #define M_SAVEENTRY4VECTOR(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)) //Macros for processing #define M_ADDNODE(macrotype,value,type) M_ClearNodeInterpret(pstNode); \ macrotype(pstNode)=value; \ M_SetTypeInterpret(pstNode,type); \ M_DepthInterpret(pstNode)=pclIntermediateCode->m_fn_ucGetDepth();\ pclDebugInfoList->AddTail( \ new CPA_EdIR_DebugInfo(pstNode, \ 0L, \ 0L, \ pclIntermediateCode->m_fn_lGetOffset(), \ csBehaviourName)); \ pclIntermediateCode->pstRefNode = pstNode;\ pstNode++ //Macros for control creation #define C_OWNER_CURRENT_CONTROL_PARMS OAC_DATA_LEVEL_3, \ EDCAR_DATA_VISI_ONLY_INSTANCES #define C_OWNER_CURRENT_CONTROL_PARMS_FOR_ARRAY OAC_DATA_LEVEL_3, \ EDCAR_DATA_VISI_ONLY_INSTANCES #define C_OWNER_INIT_CONTROL_PARMS OAC_DATA_LEVEL_2, \ EDCAR_DATA_VISI_ONLY_INSTANCES #define C_OWNER_INIT_CONTROL_PARMS_FOR_ARRAY OAC_DATA_LEVEL_2, \ EDCAR_DATA_VISI_DUAL #define C_CONTROL_PARMS READ_WRITE, \ CTL_SPACING_TYPE__SINGLE_LINE, \ FALSE #define C_CONTROL_ENUM_PARMS READ_WRITE #define C_CONTROL_VECTOR_PARMS READ_WRITE #define C_BOOLEAN_CONTROL_PARMS C_CONTROL_PARMS #define C_SIGNED_CHAR_CONTROL_PARMS SCHAR_MIN, \ SCHAR_MAX, \ CHAR_INT, \ TRUE, \ C_CONTROL_PARMS #define C_UNSIGNED_CHAR_CONTROL_PARMS 0, \ UCHAR_MAX, \ CHAR_INT, \ FALSE, \ C_CONTROL_PARMS #define C_SIGNED_SHORT_CONTROL_PARMS SHRT_MIN, \ SHRT_MAX, \ SHORT_INT, \ TRUE, \ C_CONTROL_PARMS #define C_UNSIGNED_SHORT_CONTROL_PARMS 0, \ USHRT_MAX, \ SHORT_INT, \ FALSE, \ C_CONTROL_PARMS #define C_SIGNED_LONG_CONTROL_PARMS LONG_MIN, \ LONG_MAX, \ LONG_INT, \ TRUE, \ C_CONTROL_PARMS #define C_UNSIGNED_LONG_CONTROL_PARMS 0, \ ULONG_MAX, \ LONG_INT, \ FALSE, \ C_CONTROL_PARMS #define C_FLOAT_CONTROL_PARMS -FLT_MAX, \ FLT_MAX, \ sizeof(MTH_tdxReal), \ C_CONTROL_PARMS #define C_WAYPOINT_CONTROL_PARMS C_CONTROL_ENUM_PARMS #define C_GRAPH_CONTROL_PARMS C_CONTROL_ENUM_PARMS #define C_CAPS_CONTROL_PARMS C_CONTROL_PARMS #define C_PERSO_CONTROL_PARMS C_CONTROL_ENUM_PARMS #define C_SUPEROBJECT_CONTROL_PARMS C_CONTROL_ENUM_PARMS #define C_BEHAVIOUR_CONTROL_PARMS C_CONTROL_ENUM_PARMS #define C_ACTION_CONTROL_PARMS C_CONTROL_ENUM_PARMS #define C_TEXT_CONTROL_PARMS C_CONTROL_ENUM_PARMS #define C_GMT_CONTROL_PARMS C_CONTROL_ENUM_PARMS #define C_LIST_CONTROL_PARMS 0, \ UCHAR_MAX, \ CHAR_INT, \ FALSE, \ C_CONTROL_PARMS #define C_VECTOR_CONTROL_PARMS -FLT_MAX, \ FLT_MAX, \ sizeof(MTH_tdxReal), \ C_CONTROL_VECTOR_PARMS // BEGIN ROMTEAM Cristi Petrescu 98-11- #define C_ARRAY_CONTROL_PARMS C_CONTROL_PARMS // END ROMTEAM Cristi Petrescu 98-11- //Macros for data creation #define C_BOOLEAN_DATA_PARMS #define C_SIGNED_CHAR_DATA_PARMS CHAR_INT,TRUE, #define C_UNSIGNED_CHAR_DATA_PARMS CHAR_INT,FALSE, #define C_SIGNED_SHORT_DATA_PARMS SHORT_INT,TRUE, #define C_UNSIGNED_SHORT_DATA_PARMS SHORT_INT,FALSE, #define C_SIGNED_LONG_DATA_PARMS LONG_INT,TRUE, #define C_UNSIGNED_LONG_DATA_PARMS LONG_INT,FALSE, #define C_FLOAT_DATA_PARMS sizeof(MTH_tdxReal), #define C_WAYPOINT_DATA_PARMS pclEnumList, #define C_GRAPH_DATA_PARMS pclEnumList, #define C_CAPS_DATA_PARMS pclMaskList, #define C_PERSO_DATA_PARMS pclEnumList, #define C_SUPEROBJECT_DATA_PARMS pclEnumList, #define C_BEHAVIOUR_DATA_PARMS pclEnumList, #define C_ACTION_DATA_PARMS pclEnumList, #define C_TEXT_DATA_PARMS pclEnumList, #define C_GMT_DATA_PARMS pclEnumList, #define C_LIST_DATA_PARMS CHAR_INT,FALSE, #define C_VECTOR_DATA_PARMS sizeof(MTH_tdxReal), // BEGIN ROMTEAM Cristi Petrescu 98-11- #define C_ARRAY_DATA_PARMS // END ROMTEAM Cristi Petrescu 98-11- //ANNECY BBB: arg supplementaire des les constructeurs de controles #define M_ADD_ONE_DSG_VAR(TypeControl,ParmsControl,TypeData,ParmsData,bMustUpdate) \ /* Creates init control */ \ TypeControl *pclInitCtrl=new TypeControl(ParmsControl,pclListOfDesignerVariableControl, \ pclModel->GetName()+" "+csDsgVarName+g_c_csDsgVarInitText, TRUE, /*Stefan Dumitrean 20-07(OAC buttons)*/0); \ pclInitCtrl->m_pub_fn_vSetControlCanBeDisplayedCallBack(fn_bMustDisplay); \ if(bArray) \ { \ /* BEGIN ROMTEAM Cristi Petrescu 98-06- */ \ fn_vAddOwnerData(pclInitCtrl,C_OWNER_INIT_CONTROL_PARMS_FOR_ARRAY, eDataQualifier); \ /*END ROMTEAM Cristi Petrescu 98-06- */ \ } \ else \ { \ /* BEGIN ROMTEAM Cristi Petrescu 98-06- */ \ fn_vAddOwnerData(pclInitCtrl,C_OWNER_INIT_CONTROL_PARMS, eDataQualifier); \ /* END ROMTEAM Cristi Petrescu 98-06- */ \ } \ pclListOfDesignerVariableControl->AddTail(pclInitCtrl); \ \ if (bMustUpdate) \ pclDsgVarView->m_fn_vUpdateControls(pclListOfDesignerVariableControl); \ \ /* Creates init data for model */ \ CTL_Editor_DataList *pclListOfDesignerVariableType; \ pclListOfDesignerVariableType=pclModel->m_fn_pclGetEditorActor()->m_pclListOfDesignerVariableType; \ \ TypeData *pclData=new TypeData(ParmsData csDsgVarName+g_c_csDsgVarInitText,pclListOfDesignerVariableType); \ fn_vAddOwnerData(pclData,pclModel->m_fn_pclGetEditorActor()); \ pclData->m_pub_fn_vSetDataChangedCallBackFunction(fn_vNotifyInitialValue); \ pclData->m_pub_fn_vSetDataChangedSpecialCallBackFunction(fn_vUpdateWatchData); \ /* only for array type */ \ if(bArray) \ { \ CPA_List clInstancesList; \ g_pclAIInterface->GetMainWorld()->fn_lFindObjects(&clInstancesList,"",C_szActorInstanceTypeName,pclModel); \ \ if(!clInstancesList.IsEmpty()) \ { \ CPA_Actor *pclInstance=(CPA_Actor *)(clInstancesList.GetHead()); \ tdstEngineObject *pstEngineObject=(tdstEngineObject *)pclInstance->GetStruct(); \ MS_tdxHandleToBrain hBrain=pstEngineObject->h_Brain; \ \ if(hBrain!=NULL) \ { \ AI_tdstMind *pstMind=M_pstGetMindOfBrain(hBrain); \ \ void *pvEngineData=M_GetDsgVarAddrDefault(pstMind,lIndexOfDsgVar); \ tdstArray *pstArray=(tdstArray *)pvEngineData; \ pclData->m_fn_vSetMotorDataPtr(M_ARRAY_ELEMENT(pstArray,0)); \ fn_vSetBaseAddress(pclData,pvEngineData); \ } \ } \ else \ /* For a model without any instance */ \ { \ if (bMyArray) \ pclData->m_fn_vSetMotorDataPtr(&gs_stArrayDummyData); \ else \ pclData->m_fn_vSetMotorDataPtr(&gs_lDummyData); \ } \ } \ else \ { \ if (bMyArray) \ pclData->m_fn_vSetMotorDataPtr(&gs_stArrayDummyData); \ else \ pclData->m_fn_vSetMotorDataPtr(&gs_lDummyData); \ } \ pclListOfDesignerVariableType->AddTail(pclData); \ pclInitCtrl->m_fn_vSetEditedData(pclData); \ pclData->m_fn_vGetMotorData(); \ \ /* Creates init data for instances */ \ CPA_List clInstancesList; \ g_pclAIInterface->GetMainWorld()->fn_lFindObjects(&clInstancesList,"",C_szActorInstanceTypeName,pclModel); \ \ POSITION pos=clInstancesList.GetHeadPosition(); \ while(pos!=NULL) \ { \ CPA_Actor *pclInstance=(CPA_Actor *)(clInstancesList.GetNext(pos)); \ tdstEngineObject *pstEngineObject=(tdstEngineObject *)pclInstance->GetStruct(); \ MS_tdxHandleToBrain hBrain=pstEngineObject->h_Brain; \ \ CTL_Editor_DataList *pclListOfDesignerVariableType; \ pclListOfDesignerVariableType=pclInstance->m_fn_pclGetEditorActor()->m_pclListOfDesignerVariableType; \ \ TypeData *pclData=new TypeData(ParmsData csDsgVarName+g_c_csDsgVarInitText,pclListOfDesignerVariableType); \ fn_vAddOwnerData(pclData,pclInstance->m_fn_pclGetEditorActor()); \ pclData->m_pub_fn_vSetDataChangedCallBackFunction(fn_vNotifyInitialValue); \ pclData->m_pub_fn_vSetDataChangedSpecialCallBackFunction(fn_vUpdateWatchData); \ \ if(hBrain!=NULL) \ { \ AI_tdstMind *pstMind=M_pstGetMindOfBrain(hBrain); \ if (M_GetDsgMem(pstMind) != NULL) \ { \ void *pvEngineData=M_GetDsgVarAddrInit(pstMind,lIndexOfDsgVar); \ pclData->m_fn_vSetMotorDataPtr(pvEngineData); \ \ /* only for array type */ \ if(bArray) \ { \ tdstArray *pstArray=(tdstArray *)pvEngineData; \ pclData->m_fn_vSetMotorDataPtr(M_ARRAY_ELEMENT(pstArray,0)); \ fn_vSetBaseAddress(pclData,pvEngineData); \ } \ } \ else \ pclData->m_fn_vSetMotorDataPtr(&gs_lDummyData); \ } \ else \ /* For a new instance without hBrain */ \ { \ pclData->m_fn_vSetMotorDataPtr(&gs_lDummyData); \ } \ \ pclListOfDesignerVariableType->AddTail(pclData); \ pclInitCtrl->m_fn_vSetEditedData(pclData); \ pclData->m_fn_vGetMotorData(); \ } \ \ /* Creates control */ \ TypeControl *pclCtrl=new TypeControl(ParmsControl,pclListOfDesignerVariableControl, \ pclModel->GetName()+" "+csDsgVarName, TRUE, /*Stefan Dumitrean 20-07(OAC buttons)*/0); \ pclCtrl->m_pub_fn_vSetControlCanBeDisplayedCallBack(fn_bMustDisplay); \ if(bArray) \ { \ /* BEGIN ROMTEAM Cristi Petrescu 98-06- */ \ fn_vAddOwnerData(pclCtrl,C_OWNER_CURRENT_CONTROL_PARMS_FOR_ARRAY, eDataQualifier); \ /* END ROMTEAM Cristi Petrescu 98-06- */ \ } \ else \ { \ /* BEGIN ROMTEAM Cristi Petrescu 98-06- */ \ fn_vAddOwnerData(pclCtrl,C_OWNER_CURRENT_CONTROL_PARMS, eDataQualifier); \ /* END ROMTEAM Cristi Petrescu 98-06- */ \ } \ pclListOfDesignerVariableControl->AddTail(pclCtrl); \ \ if (bMustUpdate) \ pclDsgVarView->m_fn_vUpdateControls(pclListOfDesignerVariableControl); \ \ /* Creates data for model */ \ pclData=new TypeData(ParmsData csDsgVarName,pclListOfDesignerVariableType); \ fn_vAddOwnerData(pclData,pclModel->m_fn_pclGetEditorActor()); \ pclData->m_pub_fn_vSetDataChangedSpecialCallBackFunction(fn_vUpdateWatchData); \ pclData->m_fn_vSetMotorDataPtr(&gs_lDummyData); \ pclListOfDesignerVariableType->AddTail(pclData); \ pclCtrl->m_fn_vSetEditedData(pclData); \ pclData->m_fn_vGetMotorData(); \ \ /* Creates data for instances */ \ pos=clInstancesList.GetHeadPosition(); \ while(pos!=NULL) \ { \ CPA_Actor *pclInstance=(CPA_Actor *)(clInstancesList.GetNext(pos)); \ tdstEngineObject *pstEngineObject=(tdstEngineObject *)pclInstance->GetStruct(); \ MS_tdxHandleToBrain hBrain=pstEngineObject->h_Brain; \ \ CTL_Editor_DataList *pclListOfDesignerVariableType; \ pclListOfDesignerVariableType=pclInstance->m_fn_pclGetEditorActor()->m_pclListOfDesignerVariableType; \ \ TypeData *pclData=new TypeData(ParmsData csDsgVarName,pclListOfDesignerVariableType); \ fn_vAddOwnerData(pclData,pclInstance->m_fn_pclGetEditorActor()); \ pclData->m_pub_fn_vSetDataChangedSpecialCallBackFunction(fn_vUpdateWatchData); \ \ if(hBrain!=NULL) \ { \ AI_tdstMind *pstMind=M_pstGetMindOfBrain(hBrain); \ \ if (M_GetDsgMem(pstMind) != NULL) \ { \ void *pvEngineData=M_GetDsgVarAddr(pstMind,lIndexOfDsgVar); \ pclData->m_fn_vSetMotorDataPtr(pvEngineData); \ \ /* only for array type */ \ if(bArray) \ { \ tdstArray *pstArray=(tdstArray *)pvEngineData; \ pclData->m_fn_vSetMotorDataPtr(M_ARRAY_ELEMENT(pstArray,0)); \ fn_vSetBaseAddress(pclData,pvEngineData); \ } \ } \ else \ pclData->m_fn_vSetMotorDataPtr(&gs_lDummyData); \ } \ else \ /* For a new instance without hBrain */ \ { \ pclData->m_fn_vSetMotorDataPtr(&gs_lDummyData); \ } \ \ pclListOfDesignerVariableType->AddTail(pclData); \ pclCtrl->m_fn_vSetEditedData(pclData); \ pclData->m_fn_vGetMotorData(); \ } static long gs_lDummyData = 0; // BEGIN ROMTEAM Cristi Petrescu 98-11- static tdstArray gs_stArrayDummyData = {eDsgVarType_Boolean,0}; // END ROMTEAM Cristi Petrescu 98-11- /*************************************************************************/ void fn_vCreateControlForSaving(CString csDsgVarName,long lIndexOfDsgVar, BOOL bUpdate) { CPA_EdIR_Frame *pclIRMainFrame=g_pclAIInterface->m_pclIRMainFrame; CPA_Actor *pclModel=pclIRMainFrame->m_fn_pclGetModel(); CPA_List clInstancesList; g_pclAIInterface->GetMainWorld()->fn_lFindObjects(&clInstancesList,"",C_szActorInstanceTypeName,pclModel); POSITION pos=clInstancesList.GetHeadPosition(); if(pos!=NULL) { CPA_Actor *pclInstance=(CPA_Actor *)(clInstancesList.GetAt(pos)); tdstEngineObject *pstEngineObject=(tdstEngineObject *)pclInstance->GetStruct(); MS_tdxHandleToBrain hBrain=pstEngineObject->h_Brain; if(hBrain!=NULL) { AI_tdstMind *pstMind=M_pstGetMindOfBrain(hBrain); if(pstMind!=NULL) { CTL_Editor_ControlList *pclListOfDesignerVariableControl=&(((EdActors_EditorActorModel *)pclModel->m_fn_pclGetEditorActor())->m_clListOfDesignerVariableControl); CPA_DLLBase *pclActorDLL=(CPA_DLLBase*)(g_pclAIInterface->GetMainWorld()->GetObjectDLLWithName(C_szDLLActorName)); CPA_EdIR_DesignerVariablesView *pclDsgVarView=(CPA_EdIR_DesignerVariablesView *)pclActorDLL->OnQueryAction(g_pclAIInterface,C_uiActor_GetDesignerVariablesView,0); CTL_Editor_DataList *pclListOfDesignerVariableType=pclModel->m_fn_pclGetEditorActor()->m_pclListOfDesignerVariableType; /* Creates enum descriptor list whith the different save type */ CTL_Editor_EnumDescriptor *pclEnumList=new CTL_Editor_EnumDescriptor(csDsgVarName,4); unsigned char ucSaveTypeNumber=fn_ucGetSaveTypeNumber(); for(unsigned char ucIndex=0;ucIndexm_fn_pclAddElement(fn_csGetDsgVarSaveTypeEditorNameFromId(ucIndex), (long)fn_eFindSaveTypeFromSaveTypeNumber(ucIndex)); } /* Creates control in order to know when this dsgvar must be saved */ CTL_Editor_EnumControl *pclCtrl=new CTL_Editor_EnumControl(READ_WRITE, pclListOfDesignerVariableControl, pclModel->GetName()+" "+csDsgVarName, TRUE, /*Stefan Dumitrean 20-07(OAC buttons)*/0); //ANNECY BBB pclCtrl->m_pub_fn_vSetControlCanBeDisplayedCallBack(fn_bMustDisplay); fn_vAddOwnerData(pclCtrl,OAC_DATA_LEVEL_3,EDCAR_DATA_VISI_ONLY_MODELS); pclListOfDesignerVariableControl->AddTail(pclCtrl); if (bUpdate) pclDsgVarView->m_fn_vUpdateControls(pclListOfDesignerVariableControl); /* Creates data in order to know when this dsgvar must be saved for model */ CTL_Editor_EnumData *pclData=new CTL_Editor_EnumData(pclEnumList,csDsgVarName,pclListOfDesignerVariableType); fn_vAddOwnerData(pclData,pclModel->m_fn_pclGetEditorActor()); pclData->m_pub_fn_vSetDataChangedCallBackFunction(fn_vNotifyInitialValue); pclData->m_pub_fn_vSetDataChangedSpecialCallBackFunction(fn_vUpdateWatchData); \ if (M_GetDsgMem(pstMind) != NULL) pclData->m_fn_vSetMotorDataPtr(&M_GetDsgVarSaveType(pstMind,lIndexOfDsgVar)); else pclData->m_fn_vSetMotorDataPtr(&gs_lDummyData); pclListOfDesignerVariableType->AddTail(pclData); pclCtrl->m_fn_vSetEditedData(pclData); pclData->m_fn_vGetMotorData(); /* Creates data in order to know when this dsgvar must be saved for instances */ POSITION pos=clInstancesList.GetHeadPosition(); while(pos!=NULL) { CPA_Actor *pclInstance=(CPA_Actor *)(clInstancesList.GetNext(pos)); CTL_Editor_DataList *pclListOfDesignerVariableType; pclListOfDesignerVariableType=pclInstance->m_fn_pclGetEditorActor()->m_pclListOfDesignerVariableType; CTL_Editor_EnumData *pclData=new CTL_Editor_EnumData(pclEnumList,csDsgVarName,pclListOfDesignerVariableType); fn_vAddOwnerData(pclData,pclInstance->m_fn_pclGetEditorActor()); pclData->m_fn_vSetMotorDataPtr(&gs_lDummyData); pclListOfDesignerVariableType->AddTail(pclData); pclCtrl->m_fn_vSetEditedData(pclData); pclData->m_fn_vGetMotorData(); } } } } } /*************************************************************************/ void fn_vCreateControlForInitialization(CString csDsgVarName,long lIndexOfDsgVar, BOOL bUpdate) { CPA_EdIR_Frame *pclIRMainFrame=g_pclAIInterface->m_pclIRMainFrame; CPA_Actor *pclModel=pclIRMainFrame->m_fn_pclGetModel(); CPA_List clInstancesList; g_pclAIInterface->GetMainWorld()->fn_lFindObjects(&clInstancesList,"",C_szActorInstanceTypeName,pclModel); POSITION pos=clInstancesList.GetHeadPosition(); if(pos!=NULL) { CPA_Actor *pclInstance=(CPA_Actor *)(clInstancesList.GetAt(pos)); tdstEngineObject *pstEngineObject=(tdstEngineObject *)pclInstance->GetStruct(); MS_tdxHandleToBrain hBrain=pstEngineObject->h_Brain; if(hBrain!=NULL) { AI_tdstMind *pstMind=M_pstGetMindOfBrain(hBrain); if(pstMind!=NULL) { CTL_Editor_ControlList *pclListOfDesignerVariableControl=&(((EdActors_EditorActorModel *)pclModel->m_fn_pclGetEditorActor())->m_clListOfDesignerVariableControl); CPA_DLLBase *pclActorDLL=(CPA_DLLBase*)(g_pclAIInterface->GetMainWorld()->GetObjectDLLWithName(C_szDLLActorName)); CPA_EdIR_DesignerVariablesView *pclDsgVarView=(CPA_EdIR_DesignerVariablesView *)pclActorDLL->OnQueryAction(g_pclAIInterface,C_uiActor_GetDesignerVariablesView,0); CTL_Editor_DataList *pclListOfDesignerVariableType=pclModel->m_fn_pclGetEditorActor()->m_pclListOfDesignerVariableType; /* Creates enum descriptor list whith the different init type */ CTL_Editor_EnumDescriptor *pclEnumList=new CTL_Editor_EnumDescriptor(csDsgVarName,4); unsigned char ucInitTypeNumber=fn_ucGetInitTypeNumber(); for(unsigned char ucIndex=0;ucIndexm_fn_pclAddElement(fn_csGetDsgVarInitTypeEditorNameFromId(ucIndex), (long)fn_eFindInitTypeFromInitTypeNumber(ucIndex)); } /* Creates control in order to know when this dsgvar must be initialized */ CTL_Editor_EnumControl *pclCtrl=new CTL_Editor_EnumControl(READ_WRITE, pclListOfDesignerVariableControl, pclModel->GetName()+" "+csDsgVarName, TRUE, /*Stefan Dumitrean 20-07(OAC buttons)*/0); //ANNECY BBB pclCtrl->m_pub_fn_vSetControlCanBeDisplayedCallBack(fn_bMustDisplay); fn_vAddOwnerData(pclCtrl,OAC_DATA_LEVEL_3,EDCAR_DATA_VISI_ONLY_MODELS); pclListOfDesignerVariableControl->AddTail(pclCtrl); if (bUpdate) pclDsgVarView->m_fn_vUpdateControls(pclListOfDesignerVariableControl); /* Creates data in order to know when this dsgvar must be initialized for model */ CTL_Editor_EnumData *pclData=new CTL_Editor_EnumData(pclEnumList,csDsgVarName,pclListOfDesignerVariableType); fn_vAddOwnerData(pclData,pclModel->m_fn_pclGetEditorActor()); pclData->m_pub_fn_vSetDataChangedCallBackFunction(fn_vNotifyInitialValue); pclData->m_pub_fn_vSetDataChangedSpecialCallBackFunction(fn_vUpdateWatchData); \ if (M_GetDsgMem(pstMind) != NULL) pclData->m_fn_vSetMotorDataPtr(&M_GetDsgVarInitType(pstMind,lIndexOfDsgVar)); else pclData->m_fn_vSetMotorDataPtr(&gs_lDummyData); pclListOfDesignerVariableType->AddTail(pclData); pclCtrl->m_fn_vSetEditedData(pclData); pclData->m_fn_vGetMotorData(); /* Creates data in order to know when this dsgvar must be initialized for instances */ POSITION pos=clInstancesList.GetHeadPosition(); while(pos!=NULL) { CPA_Actor *pclInstance=(CPA_Actor *)(clInstancesList.GetNext(pos)); CTL_Editor_DataList *pclListOfDesignerVariableType; pclListOfDesignerVariableType=pclInstance->m_fn_pclGetEditorActor()->m_pclListOfDesignerVariableType; CTL_Editor_EnumData *pclData=new CTL_Editor_EnumData(pclEnumList,csDsgVarName,pclListOfDesignerVariableType); fn_vAddOwnerData(pclData,pclInstance->m_fn_pclGetEditorActor()); pclData->m_fn_vSetMotorDataPtr(&gs_lDummyData); pclListOfDesignerVariableType->AddTail(pclData); pclCtrl->m_fn_vSetEditedData(pclData); pclData->m_fn_vGetMotorData(); } } } } } /*************************************************************************/ //For fn_vCreateIndexControlForArray void fn_vAddControlBeforeTail(CTL_Editor_ControlList *pclControlList,CTL_Editor_Control *pclControl,long lIndex) { if((lIndex==C_ADD_LAST_BUT_ONE) || (lIndex==C_ADD_ANTEPENULTIMATE)) { POSITION pos=pclControlList->GetTailPosition(); if(pos!=NULL) { if(lIndex==C_ADD_ANTEPENULTIMATE) pclControlList->GetPrev(pos); if(pos!=NULL) pclControlList->InsertBefore(pos,pclControl); else ASSERT(FALSE); } else { ASSERT(FALSE); } } else { ASSERT(FALSE); } } /*************************************************************************/ //For fn_vCreateIndexControlForArray void fn_vAddDataBeforeTail(CTL_Editor_DataList *pclDataList,CTL_Editor_Data *pclData,long lIndex) { if((lIndex==C_ADD_LAST_BUT_ONE) || (lIndex==C_ADD_ANTEPENULTIMATE)) { POSITION pos=pclDataList->GetTailPosition(); if(pos!=NULL) { if(lIndex==C_ADD_ANTEPENULTIMATE) pclDataList->GetPrev(pos); if(pos!=NULL) pclDataList->InsertBefore(pos,pclData); else ASSERT(FALSE); } else { ASSERT(FALSE); } } else { ASSERT(FALSE); } } /*************************************************************************/ void fn_vCreateIndexControlForArray(CString csDsgVarName,long lIndexOfDsgVar, OAC_tdeDataLevel eDataLevel,CTL_Editor_Control *pclArrayControl, long lIndex) { CPA_EdIR_Frame *pclIRMainFrame=g_pclAIInterface->m_pclIRMainFrame; CPA_Actor *pclModel=pclIRMainFrame->m_fn_pclGetModel(); CPA_List clInstancesList; g_pclAIInterface->GetMainWorld()->fn_lFindObjects(&clInstancesList,"",C_szActorInstanceTypeName,pclModel); POSITION pos=clInstancesList.GetHeadPosition(); if(pos!=NULL) { CPA_Actor *pclInstance=(CPA_Actor *)(clInstancesList.GetAt(pos)); tdstEngineObject *pstEngineObject=(tdstEngineObject *)pclInstance->GetStruct(); MS_tdxHandleToBrain hBrain=pstEngineObject->h_Brain; if(hBrain!=NULL) { AI_tdstMind *pstMind=M_pstGetMindOfBrain(hBrain); if(pstMind!=NULL) { CTL_Editor_ControlList *pclListOfDesignerVariableControl=&(((EdActors_EditorActorModel *)pclModel->m_fn_pclGetEditorActor())->m_clListOfDesignerVariableControl); CPA_DLLBase *pclActorDLL=(CPA_DLLBase*)(g_pclAIInterface->GetMainWorld()->GetObjectDLLWithName(C_szDLLActorName)); CPA_EdIR_DesignerVariablesView *pclDsgVarView=(CPA_EdIR_DesignerVariablesView *)pclActorDLL->OnQueryAction(g_pclAIInterface,C_uiActor_GetDesignerVariablesView,0); CTL_Editor_DataList *pclListOfDesignerVariableType=pclModel->m_fn_pclGetEditorActor()->m_pclListOfDesignerVariableType; /* Creates index control */ tdstArray *pstArray=(tdstArray *)M_GetDsgVarAddrDefault(pstMind,lIndexOfDsgVar); long lNbElt=M_ARRAY_SIZE(pstArray)-1; CTL_Editor_IntegerControl *pclCtrl=new CTL_Editor_IntegerControl(0,lNbElt,1, FALSE,READ_WRITE, CTL_SPACING_TYPE__SINGLE_LINE,FALSE, pclListOfDesignerVariableControl, pclModel->GetName()+" "+g_c_csDsgVarIndexText+csDsgVarName, TRUE, /*Stefan Dumitrean 20-07(OAC buttons)*/0); //ANNECY BBB pclCtrl->m_pub_fn_vSetControlCanBeDisplayedCallBack(fn_bMustDisplay); fn_vAddOwnerData(pclCtrl,eDataLevel,EDCAR_DATA_VISI_DUAL); fn_vAddControlBeforeTail(pclListOfDesignerVariableControl,pclCtrl,lIndex); pclDsgVarView->m_fn_vUpdateControls(pclListOfDesignerVariableControl); /* Creates index data for model */ CTL_Editor_IntegerData *pclData=new CTL_Editor_IntegerData(1,FALSE,g_c_csDsgVarIndexText+csDsgVarName,pclListOfDesignerVariableType); fn_vAddOwnerData(pclData,pclModel->m_fn_pclGetEditorActor()); fn_vSetAssociatedControl(pclData,pclArrayControl); pclData->m_pub_fn_vSetDataChangedCallBackFunction(fn_vIndexHasChanged); pclData->m_pub_fn_vSetDataChangedSpecialCallBackFunction(fn_vUpdateWatchData); \ char *pcIndex=new char; *pcIndex=0; pclData->m_fn_vSetMotorDataPtr(pcIndex); fn_vAddDataBeforeTail(pclListOfDesignerVariableType,pclData,lIndex); pclCtrl->m_fn_vSetEditedData(pclData); pclData->m_fn_vGetMotorData(); /* Creates index data for instances */ POSITION pos=clInstancesList.GetHeadPosition(); while(pos!=NULL) { CPA_Actor *pclInstance=(CPA_Actor *)(clInstancesList.GetNext(pos)); CTL_Editor_DataList *pclListOfDesignerVariableType; pclListOfDesignerVariableType=pclInstance->m_fn_pclGetEditorActor()->m_pclListOfDesignerVariableType; CTL_Editor_IntegerData *pclData=new CTL_Editor_IntegerData(1,FALSE,g_c_csDsgVarIndexText+csDsgVarName,pclListOfDesignerVariableType); fn_vAddOwnerData(pclData,pclInstance->m_fn_pclGetEditorActor()); fn_vSetAssociatedControl(pclData,pclArrayControl); pclData->m_pub_fn_vSetDataChangedCallBackFunction(fn_vIndexHasChanged); pclData->m_pub_fn_vSetDataChangedSpecialCallBackFunction(fn_vUpdateWatchData); \ char *pcIndex=new char; *pcIndex=0; pclData->m_fn_vSetMotorDataPtr(pcIndex); fn_vAddDataBeforeTail(pclListOfDesignerVariableType,pclData,lIndex); pclCtrl->m_fn_vSetEditedData(pclData); pclData->m_fn_vGetMotorData(); } } } } } /*************************************************************************/ BOOL fn_bIsANode(tdeNodeType eNodeType, BOOL _bForSave) { if ( ( ( eNodeType == eBeginMacro || eNodeType == eEndMacro ) && !_bForSave // the nodes above are not generated when saving ) || eNodeType==eKeyWord || eNodeType==eCondition || eNodeType==eMetaAction || eNodeType==eProcedure || //BEGIN ROMTEAM Cristi Petrescu 98-04- eNodeType==eSubrRef || //END ROMTEAM Cristi Petrescu 98-04- eNodeType==eField || eNodeType==eConstant || eNodeType==eMyRfxBehaviour || eNodeType==eMyIABehaviour || eNodeType==eRfxBehaviour || eNodeType==eIABehaviour || eNodeType==eOperator || eNodeType==eFunction || eNodeType==eDsgVar || eNodeType==eConstantInt || eNodeType==eConstantReal || eNodeType==ePerso || eNodeType==eReal || eNodeType==eZdd || eNodeType==eZde || eNodeType==eZdm || eNodeType==eZdr || eNodeType==eVector || eNodeType==eAction || eNodeType==eState || eNodeType==eWayPoint || eNodeType==eModule || eNodeType==eKeyButton || eNodeType==eMaskType || eNodeType==ePower || eNodeType==eSurface || eNodeType==eEnvironment || eNodeType==eSector || eNodeType==eSuperObject || eNodeType==eLipSynchro || eNodeType==eObjectTable || eNodeType==eFamily || eNodeType==eModel || eNodeType==eSoundEvent || eNodeType==eString || eNodeType==eText || eNodeType==eFont || eNodeType==eGameMaterial || eNodeType==eLight || eNodeType==eCaps || eNodeType==eGraph || eNodeType==eParticleGenerator ) return TRUE; else return FALSE; } /*************************************************************************/ long fn_lGetNbNodes(CPA_EdIR_IntermediateCodeList *pclIntermediateCodeList, POSITION pos, BOOL _bForSave) { POSITION p=pos; BOOL bEnd=FALSE; long lNbNodes=0; while(p!=NULL && !bEnd) { CPA_EdIR_IntermediateCode *pclIntermediateCode=pclIntermediateCodeList->GetNext(p); if ( fn_bIsANode(pclIntermediateCode->m_fn_tdeGetNodeType(), _bForSave) ) lNbNodes ++; if(pclIntermediateCode->m_fn_tdeGetNodeType()==eCreateRule) bEnd=(pclIntermediateCode->m_fn_ucGetDepth()==1); if( p && bEnd && !_bForSave && (pclIntermediateCodeList->GetAt(p)->m_fn_tdeGetNodeType()==eEndMacro)) lNbNodes++; } return lNbNodes; } /*************************************************************************/ CString fn_csLongToString(long l) { CString csString; csString.Format("%ld",l); return csString; } /*************************************************************************/ #define ADDCHAR()\ { if(lDest+5 >= lSize) {lSize += 4000; lpdest = (char *) realloc(lpdest, lSize);}\ /*Stefan Dumitrean 14-05-98*/\ cCurrent = tolower(lpin[lStartIndex++]);\ lpdest[lDest++]=cCurrent;\ if( cCurrent == ';' ) bInComment = TRUE;\ else if( cCurrent == '\n' ) bInComment = FALSE;} /*End Stefan Dumitrean*/\ #define _memcpy_(d,s,size) {int len = 0; while(len < size) {(d)[len] = tolower((s)[len]);len++;}} /*************************************************************************/ CString fn_csExpandMacro(CString &csIn, BOOL bWithMacroInfo=TRUE) { unsigned char * lpin = (unsigned char *)LPCTSTR(csIn); long lStartIndex = 0, lDest = 0,lMemDest; CString csWord; long lSize = csIn.GetLength()+1; char *lpdest = (char *) malloc(lSize); long lLen = strlen(g_c_csBeginMacro), lLen1; char *pszmac; //Stefan Dumitrean 14-05-98 char cCurrent; BOOL bInComment = FALSE; //End Stefan Dumitrean CString csOut; // BEGIN ROMTEAM Cristi Petrescu 98-09- //char *pszMacroName; // END ROMTEAM Cristi Petrescu 98-09- while(lpin[lStartIndex]) { while(lpin[lStartIndex] && !isalnum(lpin[lStartIndex])) ADDCHAR(); lMemDest = lDest; while(lpin[lStartIndex] && (isalnum(lpin[lStartIndex])||(lpin[lStartIndex]=='_'))) ADDCHAR(); lpdest[lDest] = '\0'; //Stefan Dumitrean 14-05-98 if( !bInComment ) { pszmac = g_clMacroList.m_fn_bIsAMacro(lpdest + lMemDest); //End Stefan Dumitrean if(pszmac) { if(bWithMacroInfo) { // BEGIN ROMTEAM Cristi Petrescu 98-09- //pszMacroName = lpdest + lMemDest; // END ROMTEAM Cristi Petrescu 98-09- lLen1 = strlen(lpdest+lMemDest); while(lDest+lLen1+50 >= lSize) { lSize += 4000; lpdest = (char *) realloc(lpdest, lSize); } _memcpy_(lpdest+lMemDest, g_c_csBeginMacro, lLen); // BEGIN ROMTEAM Cristi Petrescu 98-09- // BEGIN ROMTEAM Cristi Petrescu 99-1 debug sprintf(lpdest+lMemDest+lLen,"(%ld,%ld)\r\n",lLen1,(long)pszmac); // BEGIN ROMTEAM Cristi Petrescu 99-1 debug //sprintf(lpdest+lMemDest+lLen,"(%ld,%ld,%s)\n",lLen1,(long)pszmac,pszMacroName); // END ROMTEAM Cristi Petrescu 98-09- lDest = (strchr(lpdest + lMemDest + lLen, '\n') + 1) - lpdest; } else lDest = lMemDest; lLen1 = strlen(pszmac); while(lDest+lLen1+50 >= lSize) { lSize += 4000; lpdest = (char *) realloc(lpdest, lSize); } _memcpy_(lpdest+lDest,pszmac,lLen1); lDest += lLen1; // BEGIN ROMTEAM Cristi Petrescu 99-1 debug lpdest[lDest++] = '\r'; lpdest[lDest++] = '\n'; // BEGIN ROMTEAM Cristi Petrescu 99-1 debug if(bWithMacroInfo) { lLen1 = strlen(g_c_csEndMacro); while(lDest+lLen1+50 >= lSize) { lSize += 4000; lpdest = (char *) realloc(lpdest, lSize); } _memcpy_(lpdest+lDest,g_c_csEndMacro,lLen1); lDest += lLen1; } } //Stefan Dumitrean 14-05-98 } //End Stefan Dumitrean } lpdest[lDest] = '\0'; csOut = lpdest; free(lpdest); return csOut; } // BEGIN ROMTEAM Cristi Petrescu 98-08- void fn_vPostProcessIA (CString csText, CString csRealText, CPA_EdIR_DebugInfoList *pclDebugInfoList, BOOL bRes, long &lErrorIndex) { // we need to adjust the debug info to account for macros LPCSTR lpText = (LPCSTR) csText; long lIndex = 0; long lSize; LPCSTR lpRealText = (LPCSTR) csRealText; long lRealIndex = 0; char *pszMacroName = NULL; long lMacroIndex; CPA_EdIR_DebugInfo *pclDebugInfo; // BEGIN ROMTEAM Cristi Petrescu 98-09- if (! bRes) pclDebugInfoList -> AddTail (new CPA_EdIR_DebugInfo (NULL, 0, 0, lErrorIndex, (CString) "")); // END ROMTEAM Cristi Petrescu 98-09- POSITION pos = pclDebugInfoList -> GetHeadPosition (); while (pos) { // get one node pclDebugInfo = pclDebugInfoList -> GetNext (pos); while (pclDebugInfo -> m_fn_lGetIndex () > lIndex) { // never should get the end of text... // BEGIN ROMTEAM Cristi Petrescu 98-09- // no more crashes, but something is rotten if (! lpText [lIndex]) break; // END ROMTEAM Cristi Petrescu 98-09- // advance text pointer if (! strnicmp (lpText + lIndex, (LPCSTR) g_c_csBeginMacro, strlen ((LPCSTR) g_c_csBeginMacro))) { // we encountered an begin macro // get it lSize = 0; while (isalnum (lpRealText [lRealIndex + lSize]) || lpRealText [lRealIndex + lSize] == '_') lSize ++; // no macro in macro ASSERT (! pszMacroName); pszMacroName = (char *) malloc ((lSize + 1) * sizeof (char)); strncpy (pszMacroName, lpRealText + lRealIndex, lSize); pszMacroName [lSize] = 0; lMacroIndex = 0; // skip "beginmacro(int,int)" while (lpText [lIndex] != ')') lIndex ++; } if (! strnicmp (lpText + lIndex, (LPCSTR) g_c_csEndMacro, strlen ((LPCSTR) g_c_csEndMacro))) { // we encountered an end macro // never end without begin ASSERT (pszMacroName); lRealIndex += strlen (pszMacroName); lIndex += strlen (g_c_csEndMacro); free (pszMacroName); pszMacroName = NULL; } if (! pszMacroName) lRealIndex ++; else lMacroIndex ++; lIndex ++; // BEGIN ROMTEAM Cristi Petrescu 98-09- if (! bRes && lIndex >= lErrorIndex) { lErrorIndex = lRealIndex; delete pclDebugInfoList -> RemoveTail (); return; } // END ROMTEAM Cristi Petrescu 98-09- } // adjust the debug info pclDebugInfo -> m_fn_vSetIndex (lRealIndex); if (pszMacroName) { pclDebugInfo -> m_fn_vSetMacroIndex (lMacroIndex); pclDebugInfo -> m_fn_vSetMacroName (CString (pszMacroName)); } } // BEGIN ROMTEAM Cristi Petrescu 98-09- if (! bRes) { // be sure delete pclDebugInfoList -> RemoveTail (); } // END ROMTEAM Cristi Petrescu 98-09- } // END ROMTEAM Cristi Petrescu 98-08- /*************************************************************************/ void m_fn_vConstructListOfWayPoints(CTL_Editor_Control *,CTL_Editor_EnumDescriptor *pclEnumList) { //Gets WayPoints List CPA_List clWayPointList; g_pclAIInterface->GetMainWorld()->fn_lFindObjects(&clWayPointList,"",C_szWayPointTypeName); //First empties the enums list pclEnumList->RemoveAll(); //Second fills the enums list for the WayPoints list POSITION pos=clWayPointList.GetHeadPosition(); while(pos!=NULL) { CPA_BaseObject *pclWayPoint=clWayPointList.GetNext(pos); pclEnumList->m_fn_pclAddElement(pclWayPoint->GetName(),(long)pclWayPoint->GetData()); } pclEnumList->m_fn_pclAddElement(fn_csGetKeyWordEditorNameFromId(eKeyWord_Nowhere),(long)NULL); } //ANNECY Bart#02 23/04/98 { /*************************************************************************/ void m_fn_vConstructListOfGraph(CTL_Editor_Control *,CTL_Editor_EnumDescriptor *pclEnumList) { //Gets WayPoints List CPA_List clGraphHandleList; g_pclAIInterface->GetMainWorld()->fn_lFindObjects(&clGraphHandleList,"", C_szGraphTypeName); //First empties the enums list pclEnumList->RemoveAll(); //Second fills the enums list for the WayPoints list POSITION pos=clGraphHandleList.GetHeadPosition(); while(pos!=NULL) { CPA_BaseObject* pclGraphHandle = clGraphHandleList.GetNext(pos); pclEnumList->m_fn_pclAddElement(pclGraphHandle->GetName(), (long)pclGraphHandle->GetData()); } pclEnumList->m_fn_pclAddElement(fn_csGetKeyWordEditorNameFromId(eKeyWord_NoGraph),(long)NULL); } /*************************************************************************/ void m_fn_vConstructListOfCaps(CTL_Editor_Control *, CTL_Editor_MaskDescriptor *pclAddedMaskDesc) { //Adds strings to describe Mask pclAddedMaskDesc->m_pub_fn_pclAddMask("Translater", 0x1); pclAddedMaskDesc->m_pub_fn_pclAddMask("Marcher", 0x2); pclAddedMaskDesc->m_pub_fn_pclAddMask("Courir", 0x4); pclAddedMaskDesc->m_pub_fn_pclAddMask("Reculer", 0x8); pclAddedMaskDesc->m_pub_fn_pclAddMask("Sauter", 0x10); pclAddedMaskDesc->m_pub_fn_pclAddMask("Voler", 0x20); pclAddedMaskDesc->m_pub_fn_pclAddMask("Accrocher", 0x40); pclAddedMaskDesc->m_pub_fn_pclAddMask("Suspendre", 0x80); pclAddedMaskDesc->m_pub_fn_pclAddMask("Nager", 0x100); pclAddedMaskDesc->m_pub_fn_pclAddMask("Balancer", 0x200); pclAddedMaskDesc->m_pub_fn_pclAddMask("Bloquer", 0x400); pclAddedMaskDesc->m_pub_fn_pclAddMask("Teleporter", 0x800); pclAddedMaskDesc->m_pub_fn_pclAddMask("Glisser", 0x1000); pclAddedMaskDesc->m_pub_fn_pclAddMask("Aspirer", 0x2000); pclAddedMaskDesc->m_pub_fn_pclAddMask("Pause", 0x4000); pclAddedMaskDesc->m_pub_fn_pclAddMask("custom_15", 0x8000); pclAddedMaskDesc->m_pub_fn_pclAddMask("custom_16", 0x10000); pclAddedMaskDesc->m_pub_fn_pclAddMask("custom_17", 0x20000); pclAddedMaskDesc->m_pub_fn_pclAddMask("custom_18", 0x40000); pclAddedMaskDesc->m_pub_fn_pclAddMask("custom_19", 0x80000); pclAddedMaskDesc->m_pub_fn_pclAddMask("custom_20", 0x100000); pclAddedMaskDesc->m_pub_fn_pclAddMask("custom_21", 0x200000); pclAddedMaskDesc->m_pub_fn_pclAddMask("custom_22", 0x400000); pclAddedMaskDesc->m_pub_fn_pclAddMask("custom_23", 0x800000); pclAddedMaskDesc->m_pub_fn_pclAddMask("custom_24", 0x1000000); pclAddedMaskDesc->m_pub_fn_pclAddMask("custom_25", 0x2000000); pclAddedMaskDesc->m_pub_fn_pclAddMask("custom_26", 0x4000000); pclAddedMaskDesc->m_pub_fn_pclAddMask("custom_27", 0x8000000); pclAddedMaskDesc->m_pub_fn_pclAddMask("custom_28", 0x10000000); pclAddedMaskDesc->m_pub_fn_pclAddMask("custom_29", 0x20000000); pclAddedMaskDesc->m_pub_fn_pclAddMask("custom_30", 0x40000000); pclAddedMaskDesc->m_pub_fn_pclAddMask("Has_All_Capabilities", 0x80000000); } //ENDANNECY Bart#02 } /*************************************************************************/ void m_fn_vConstructListOfPersos(CTL_Editor_Control *,CTL_Editor_EnumDescriptor *pclEnumList) { //Gets Persos List CPA_List clPersoList; g_pclAIInterface->GetMainWorld()->fn_lFindObjects(&clPersoList,"",C_szActorInstanceTypeName); //First empties the enums list pclEnumList->RemoveAll(); //Second fills the enums list for the Persos list POSITION pos=clPersoList.GetHeadPosition(); while(pos!=NULL) { CPA_Actor *pclPerso=(CPA_Actor *)clPersoList.GetNext(pos); if(pclPerso->m_fn_bIsAnAlways()==FALSE) pclEnumList->m_fn_pclAddElement(pclPerso->GetName(),(long)M_GetSuperObject((tdstEngineObject *)pclPerso->GetData())); } pclEnumList->m_fn_pclAddElement(fn_csGetKeyWordEditorNameFromId(eKeyWord_Nobody),(long)NULL); } /*************************************************************************/ void m_fn_vConstructListOfSuperObjects(CTL_Editor_Control *,CTL_Editor_EnumDescriptor *pclEnumList) { //Gets Persos List CPA_BaseObjectList *p_clObjectList; p_clObjectList = g_pclAIInterface->GetMainWorld()->fn_p_oGetOriginalObjectList(C_szSuperObjectTypeName); //First empties the enums list pclEnumList->RemoveAll(); //Second fills the enums list for the Persos list Position pos=p_clObjectList -> GetHeadPosition(); while(pos!=NULL) { CPA_BaseObject *p_oObject = p_clObjectList -> GetNext (pos); pclEnumList->m_fn_pclAddElement(p_oObject->GetName(),(long)p_oObject->GetData()); } pclEnumList->m_fn_pclAddElement(fn_csGetKeyWordEditorNameFromId(eKeyWord_NoSuperObject),(long)NULL); } /*************************************************************************/ void m_fn_vConstructListOfBehaviours(CTL_Editor_Control *,CTL_Editor_EnumDescriptor *pclEnumList) { //Gets Behaviours List CPA_List clBehaviourList; g_pclAIInterface->GetMainWorld()->fn_lFindObjects(&clBehaviourList,"",C_szIABehaviourTypeName); //First empties the enums list pclEnumList->RemoveAll(); //Second fills the enums list for the Behaviours list POSITION pos=clBehaviourList.GetHeadPosition(); while(pos!=NULL) { CPA_EdIR_MainBehaviour *pclBehaviour=(CPA_EdIR_MainBehaviour *)clBehaviourList.GetNext(pos); //Be carefull, save editor pointer instead of motor pointer pclEnumList->m_fn_pclAddElement(pclBehaviour->GetName(),(long)pclBehaviour); } pclEnumList->m_fn_pclAddElement(fn_csGetKeyWordEditorNameFromId(eKeyWord_NoComport),(long)NULL); } /*************************************************************************/ void m_fn_vConstructListOfActions(CTL_Editor_Control *,CTL_Editor_EnumDescriptor *pclEnumList) { CPA_DLLBase *pclActorDLL=(CPA_DLLBase*)(g_pclAIInterface->GetMainWorld()->GetObjectDLLWithName(C_szDLLActorName)); CPA_Actor *pclSelectedActor=(CPA_Actor *)pclActorDLL->OnQueryAction(g_pclAIInterface,C_uiActor_GetSelectedActor,0); if (!pclSelectedActor) return; if(pclSelectedActor->m_fn_bIsAnInstance()) pclSelectedActor=pclSelectedActor->m_fn_pclGetModel(); CPA_Family *pclFamily=pclSelectedActor->m_pub_fn_pclGetFamily(); //Gets Actions List CPA_List clActionList; g_pclAIInterface->GetMainWorld()->fn_lFindObjects(&clActionList,"",C_szActionTypeName,pclFamily); //First empties the enums list pclEnumList->RemoveAll(); //Second fills the enums list for the Actions list POSITION pos=clActionList.GetHeadPosition(); while(pos!=NULL) { CPA_Action *pclAction=(CPA_Action *)clActionList.GetNext(pos); pclEnumList->m_fn_pclAddElement(pclAction->GetName(),(long)pclAction->mfn_p_oGetDefaultState()->GetData()); } pclEnumList->m_fn_pclAddElement(fn_csGetKeyWordEditorNameFromId(eKeyWord_NoAction),(long)NULL); } /*************************************************************************/ void m_fn_vConstructListOfTexts(CTL_Editor_Control *,CTL_Editor_EnumDescriptor *pclEnumList) { //Gets Texts List //First empties the enums list pclEnumList->RemoveAll(); //Second fills the enums list for the Texts list // Inserts known texts: scan the FON link table and get all keys { SCR_tdst_Link_Value *p_stTextEntry; SCR_tdst_Link_Table *p_stTextLinkTable = FON_fn_p_stGetLinkTable(); unsigned int uiTextPos = 0; SCR_M_DyAr_GetNextElement( SCR_tdst_Link_Value, uiTextPos, p_stTextEntry, p_stTextLinkTable->stLinkArray ); /* while there are entries in the list */ while ( p_stTextEntry ) { pclEnumList->m_fn_pclAddElement(SCR_M_p_sz_Link_GetKey(p_stTextEntry),SCR_M_ul_Link_GetValue(p_stTextEntry)); uiTextPos ++; SCR_M_DyAr_GetNextElement( SCR_tdst_Link_Value, uiTextPos, p_stTextEntry, p_stTextLinkTable->stLinkArray ); } } pclEnumList->m_fn_pclAddElement("Invalid",(long)FON_C_xInvalidTextHandle); } /*************************************************************************/ void m_fn_vConstructListOfGameMaterials(CTL_Editor_Control *,CTL_Editor_EnumDescriptor *pclEnumList) { //Gets GameMaterials List CPA_List clGameMaterialList; g_pclAIInterface->GetMainWorld()->fn_lFindObjects(&clGameMaterialList,"",C_szGameMaterialTypeName); //First empties the enums list pclEnumList->RemoveAll(); //Second fills the enums list for the GameMaterials list POSITION pos=clGameMaterialList.GetHeadPosition(); while(pos!=NULL) { CPA_BaseObject *pclGameMaterial=clGameMaterialList.GetNext(pos); pclEnumList->m_fn_pclAddElement(pclGameMaterial->GetName(),(long)pclGameMaterial->GetData()); } //pclEnumList->m_fn_pclAddElement(fn_csGetKeyWordEditorNameFromId(eKeyWord_Nobody),(long)NULL); } /*************************************************************************/ //ANNECY CB //BEGIN ROMTEAM Cristi Petrescu 98-06- void fn_vCreateDsgVarControl(CString &csDsgVarType, CString &csDsgVarName, long lIndexOfDsgVar, BOOL bIsPrivate, BOOL bUpdate) //END ROMTEAM Cristi Petrescu 98-06- //void fn_vCreateDsgVarControl(CString csDsgVarType, CString csDsgVarName, long lIndexOfDsgVar) //END { CPA_EdIR_Frame *pclIRMainFrame=g_pclAIInterface->m_pclIRMainFrame; CPA_Actor *pclModel=pclIRMainFrame->m_fn_pclGetModel(); CTL_Editor_ControlList *pclListOfDesignerVariableControl=&(((EdActors_EditorActorModel *)pclModel->m_fn_pclGetEditorActor())->m_clListOfDesignerVariableControl); CPA_DLLBase *pclActorDLL=(CPA_DLLBase*)(g_pclAIInterface->GetMainWorld()->GetObjectDLLWithName(C_szDLLActorName)); CPA_EdIR_DesignerVariablesView *pclDsgVarView=(CPA_EdIR_DesignerVariablesView *)pclActorDLL->OnQueryAction(g_pclAIInterface,C_uiActor_GetDesignerVariablesView,0); //Only for array (see M_ADD_ONE_DSG_VAR macro) BOOL bArray=FALSE; // BEGIN ROMTEAM Cristi Petrescu 98-11- BOOL bMyArray = FALSE; // END ROMTEAM Cristi Petrescu 98-11- //BEGIN ROMTEAM Cristi Petrescu 98-06- // get the qualifier value OAC_eDataQualifier eDataQualifier = bIsPrivate ? OAC_DATA_PRIVATE : OAC_DATA_PUBLIC; //END ROMTEAM Cristi Petrescu 98-06- //Adds a new control for this designer variable tdeDsgVarTypeId lDsgVarTypeId; lDsgVarTypeId=fn_eFindDsgVarTypeIdFromScriptName(M_MAKECHAR(csDsgVarType)); switch(lDsgVarTypeId) { case eDsgVarType_Boolean: { M_ADD_ONE_DSG_VAR(CTL_Editor_BooleanControl,C_BOOLEAN_CONTROL_PARMS, CTL_Editor_BooleanData,C_BOOLEAN_DATA_PARMS,bUpdate); fn_vCreateControlForSaving(csDsgVarName+g_c_csDsgVarSaveTypeText,lIndexOfDsgVar, bUpdate); fn_vCreateControlForInitialization(csDsgVarName+g_c_csDsgVarInitTypeText,lIndexOfDsgVar, bUpdate); } break; case eDsgVarType__128To127: { M_ADD_ONE_DSG_VAR(CTL_Editor_IntegerControl,C_SIGNED_CHAR_CONTROL_PARMS, CTL_Editor_IntegerData,C_SIGNED_CHAR_DATA_PARMS,bUpdate); fn_vCreateControlForSaving(csDsgVarName+g_c_csDsgVarSaveTypeText,lIndexOfDsgVar, bUpdate); fn_vCreateControlForInitialization(csDsgVarName+g_c_csDsgVarInitTypeText,lIndexOfDsgVar, bUpdate); } break; case eDsgVarType_0To255: { M_ADD_ONE_DSG_VAR(CTL_Editor_IntegerControl,C_UNSIGNED_CHAR_CONTROL_PARMS, CTL_Editor_IntegerData,C_UNSIGNED_CHAR_DATA_PARMS,bUpdate); fn_vCreateControlForSaving(csDsgVarName+g_c_csDsgVarSaveTypeText,lIndexOfDsgVar, bUpdate); fn_vCreateControlForInitialization(csDsgVarName+g_c_csDsgVarInitTypeText,lIndexOfDsgVar, bUpdate); } break; case eDsgVarType__32768To32767: { M_ADD_ONE_DSG_VAR(CTL_Editor_IntegerControl,C_SIGNED_SHORT_CONTROL_PARMS, CTL_Editor_IntegerData,C_SIGNED_SHORT_DATA_PARMS,bUpdate); fn_vCreateControlForSaving(csDsgVarName+g_c_csDsgVarSaveTypeText,lIndexOfDsgVar, bUpdate); fn_vCreateControlForInitialization(csDsgVarName+g_c_csDsgVarInitTypeText,lIndexOfDsgVar, bUpdate); } break; case eDsgVarType_0To65535: { M_ADD_ONE_DSG_VAR(CTL_Editor_IntegerControl,C_UNSIGNED_SHORT_CONTROL_PARMS, CTL_Editor_IntegerData,C_UNSIGNED_SHORT_DATA_PARMS,bUpdate); fn_vCreateControlForSaving(csDsgVarName+g_c_csDsgVarSaveTypeText,lIndexOfDsgVar, bUpdate); fn_vCreateControlForInitialization(csDsgVarName+g_c_csDsgVarInitTypeText,lIndexOfDsgVar, bUpdate); } break; case eDsgVarType_Integer: { M_ADD_ONE_DSG_VAR(CTL_Editor_IntegerControl,C_SIGNED_LONG_CONTROL_PARMS, CTL_Editor_IntegerData,C_SIGNED_LONG_DATA_PARMS,bUpdate); fn_vCreateControlForSaving(csDsgVarName+g_c_csDsgVarSaveTypeText,lIndexOfDsgVar, bUpdate); fn_vCreateControlForInitialization(csDsgVarName+g_c_csDsgVarInitTypeText,lIndexOfDsgVar, bUpdate); } break; case eDsgVarType_PositiveInteger: { M_ADD_ONE_DSG_VAR(CTL_Editor_IntegerControl,C_UNSIGNED_LONG_CONTROL_PARMS, CTL_Editor_IntegerData,C_UNSIGNED_LONG_DATA_PARMS,bUpdate); fn_vCreateControlForSaving(csDsgVarName+g_c_csDsgVarSaveTypeText,lIndexOfDsgVar, bUpdate); fn_vCreateControlForInitialization(csDsgVarName+g_c_csDsgVarInitTypeText,lIndexOfDsgVar, bUpdate); } break; case eDsgVarType_Float: { M_ADD_ONE_DSG_VAR(CTL_Editor_DecimalControl,C_FLOAT_CONTROL_PARMS, CTL_Editor_DecimalData,C_FLOAT_DATA_PARMS,bUpdate); fn_vCreateControlForSaving(csDsgVarName+g_c_csDsgVarSaveTypeText,lIndexOfDsgVar, bUpdate); fn_vCreateControlForInitialization(csDsgVarName+g_c_csDsgVarInitTypeText,lIndexOfDsgVar, bUpdate); } break; //ANNECY Bart#02 23/04/98 { case eDsgVarType_Caps : { CTL_Editor_MaskDescriptor *pclMaskList = new CTL_Editor_MaskDescriptor(csDsgVarName); m_fn_vConstructListOfCaps(NULL, pclMaskList); M_ADD_ONE_DSG_VAR(CTL_Editor_MaskedControl,C_CAPS_CONTROL_PARMS, CTL_Editor_MaskedData,C_CAPS_DATA_PARMS,bUpdate); fn_vCreateControlForSaving(csDsgVarName+g_c_csDsgVarSaveTypeText,lIndexOfDsgVar, bUpdate); fn_vCreateControlForInitialization(csDsgVarName+g_c_csDsgVarInitTypeText,lIndexOfDsgVar, bUpdate); } break; case eDsgVarType_Graph : { //Constructs the enums list for the Graph list CTL_Editor_EnumDescriptor *pclEnumList=new CTL_Editor_EnumDescriptor(csDsgVarName,4); m_fn_vConstructListOfGraph(NULL,pclEnumList); //Creates one dsg var (init and current) M_ADD_ONE_DSG_VAR(CTL_Editor_EnumControl,C_GRAPH_CONTROL_PARMS, CTL_Editor_EnumData,C_GRAPH_DATA_PARMS,bUpdate); //Sets call back function in order to update the combo box pclInitCtrl->m_pub_fn_vSetBuildEnumDesciptor_CallBack(m_fn_vConstructListOfGraph); pclCtrl->m_pub_fn_vSetBuildEnumDesciptor_CallBack(m_fn_vConstructListOfGraph); fn_vCreateControlForSaving(csDsgVarName+g_c_csDsgVarSaveTypeText,lIndexOfDsgVar, bUpdate); fn_vCreateControlForInitialization(csDsgVarName+g_c_csDsgVarInitTypeText,lIndexOfDsgVar, bUpdate); } break; //ENDANNECY Bart#02 } case eDsgVarType_WayPoint: { //Constructs the enums list for the WayPoints list CTL_Editor_EnumDescriptor *pclEnumList=new CTL_Editor_EnumDescriptor(csDsgVarName,4); m_fn_vConstructListOfWayPoints(NULL,pclEnumList); //Creates one dsg var (init and current) // CPA2 ASilvescu 98-05-21 // M_ADD_ONE_DSG_VAR(CTL_Editor_EnumControl,C_WAYPOINT_CONTROL_PARMS, // CTL_Editor_EnumData,C_WAYPOINT_DATA_PARMS); M_ADD_ONE_DSG_VAR(CTL_Editor_DsgVarEnumControl,C_WAYPOINT_CONTROL_PARMS, CTL_Editor_EnumData,C_WAYPOINT_DATA_PARMS,bUpdate); // End CPA2 ASilvescu 98-05-21 //Sets call back function in order to update the combo box pclInitCtrl->m_pub_fn_vSetBuildEnumDesciptor_CallBack(m_fn_vConstructListOfWayPoints); pclCtrl->m_pub_fn_vSetBuildEnumDesciptor_CallBack(m_fn_vConstructListOfWayPoints); fn_vCreateControlForSaving(csDsgVarName+g_c_csDsgVarSaveTypeText,lIndexOfDsgVar, bUpdate); fn_vCreateControlForInitialization(csDsgVarName+g_c_csDsgVarInitTypeText,lIndexOfDsgVar, bUpdate); } break; case eDsgVarType_Perso: { //Constructs the enums list for the characters list CTL_Editor_EnumDescriptor *pclEnumList=new CTL_Editor_EnumDescriptor(csDsgVarName,4); m_fn_vConstructListOfPersos(NULL,pclEnumList); //Creates one dsg var (init and current) M_ADD_ONE_DSG_VAR(CTL_Editor_EnumControl,C_PERSO_CONTROL_PARMS, CTL_Editor_EnumData,C_PERSO_DATA_PARMS,bUpdate); //Sets call back function in order to update the combo box pclInitCtrl->m_pub_fn_vSetBuildEnumDesciptor_CallBack(m_fn_vConstructListOfPersos); pclCtrl->m_pub_fn_vSetBuildEnumDesciptor_CallBack(m_fn_vConstructListOfPersos); fn_vCreateControlForSaving(csDsgVarName+g_c_csDsgVarSaveTypeText,lIndexOfDsgVar, bUpdate); fn_vCreateControlForInitialization(csDsgVarName+g_c_csDsgVarInitTypeText,lIndexOfDsgVar, bUpdate); } break; case eDsgVarType_SuperObject: { //Constructs the enums list for the characters list CTL_Editor_EnumDescriptor *pclEnumList=new CTL_Editor_EnumDescriptor(csDsgVarName,4); m_fn_vConstructListOfSuperObjects(NULL,pclEnumList); //Creates one dsg var (init and current) M_ADD_ONE_DSG_VAR(CTL_Editor_EnumControl,C_SUPEROBJECT_CONTROL_PARMS, CTL_Editor_EnumData,C_SUPEROBJECT_DATA_PARMS,bUpdate); //Sets call back function in order to update the combo box pclInitCtrl->m_pub_fn_vSetBuildEnumDesciptor_CallBack(m_fn_vConstructListOfSuperObjects); pclCtrl->m_pub_fn_vSetBuildEnumDesciptor_CallBack(m_fn_vConstructListOfSuperObjects); fn_vCreateControlForSaving(csDsgVarName+g_c_csDsgVarSaveTypeText,lIndexOfDsgVar, bUpdate); fn_vCreateControlForInitialization(csDsgVarName+g_c_csDsgVarInitTypeText,lIndexOfDsgVar, bUpdate); } break; case eDsgVarType_List: { M_ADD_ONE_DSG_VAR(CTL_Editor_IntegerControl,C_LIST_CONTROL_PARMS, CTL_Editor_IntegerData,C_LIST_DATA_PARMS,bUpdate); fn_vCreateControlForSaving(csDsgVarName+g_c_csDsgVarSaveTypeText,lIndexOfDsgVar, bUpdate); fn_vCreateControlForInitialization(csDsgVarName+g_c_csDsgVarInitTypeText,lIndexOfDsgVar, bUpdate); } break; case eDsgVarType_Vector: { M_ADD_ONE_DSG_VAR(CTL_Editor_VectorControl,C_VECTOR_CONTROL_PARMS, CTL_Editor_VectorData,C_VECTOR_DATA_PARMS,bUpdate); fn_vCreateControlForSaving(csDsgVarName+g_c_csDsgVarSaveTypeText,lIndexOfDsgVar, bUpdate); fn_vCreateControlForInitialization(csDsgVarName+g_c_csDsgVarInitTypeText,lIndexOfDsgVar, bUpdate); } break; case eDsgVarType_Comport: { //Constructs the enums list for the behaviours list CTL_Editor_EnumDescriptor *pclEnumList=new CTL_Editor_EnumDescriptor(csDsgVarName,4); m_fn_vConstructListOfBehaviours(NULL,pclEnumList); //Creates one dsg var (init and current) M_ADD_ONE_DSG_VAR(CTL_Editor_EnumControl,C_BEHAVIOUR_CONTROL_PARMS, CTL_Editor_EnumData,C_BEHAVIOUR_DATA_PARMS,bUpdate); //Sets call back function in order to update the combo box pclInitCtrl->m_pub_fn_vSetBuildEnumDesciptor_CallBack(m_fn_vConstructListOfBehaviours); pclCtrl->m_pub_fn_vSetBuildEnumDesciptor_CallBack(m_fn_vConstructListOfBehaviours); fn_vCreateControlForSaving(csDsgVarName+g_c_csDsgVarSaveTypeText,lIndexOfDsgVar, bUpdate); fn_vCreateControlForInitialization(csDsgVarName+g_c_csDsgVarInitTypeText,lIndexOfDsgVar, bUpdate); } break; case eDsgVarType_Action: { //Constructs the enums list for the actions list CTL_Editor_EnumDescriptor *pclEnumList=new CTL_Editor_EnumDescriptor(csDsgVarName,4); m_fn_vConstructListOfActions(NULL,pclEnumList); //Creates one dsg var (init and current) M_ADD_ONE_DSG_VAR(CTL_Editor_EnumControl,C_ACTION_CONTROL_PARMS, CTL_Editor_EnumData,C_ACTION_DATA_PARMS,bUpdate); //Sets call back function in order to update the combo box pclInitCtrl->m_pub_fn_vSetBuildEnumDesciptor_CallBack(m_fn_vConstructListOfActions); pclCtrl->m_pub_fn_vSetBuildEnumDesciptor_CallBack(m_fn_vConstructListOfActions); fn_vCreateControlForSaving(csDsgVarName+g_c_csDsgVarSaveTypeText,lIndexOfDsgVar, bUpdate); fn_vCreateControlForInitialization(csDsgVarName+g_c_csDsgVarInitTypeText,lIndexOfDsgVar, bUpdate); } break; case eDsgVarType_Text: { //Constructs the enums list for the texts list CTL_Editor_EnumDescriptor *pclEnumList=new CTL_Editor_EnumDescriptor(csDsgVarName,4); m_fn_vConstructListOfTexts(NULL,pclEnumList); //Creates one dsg var (init and current) M_ADD_ONE_DSG_VAR(CTL_Editor_EnumControl,C_TEXT_CONTROL_PARMS, CTL_Editor_EnumData,C_TEXT_DATA_PARMS,bUpdate); //Sets call back function in order to update the combo box pclInitCtrl->m_pub_fn_vSetBuildEnumDesciptor_CallBack(m_fn_vConstructListOfTexts); pclCtrl->m_pub_fn_vSetBuildEnumDesciptor_CallBack(m_fn_vConstructListOfTexts); fn_vCreateControlForSaving(csDsgVarName+g_c_csDsgVarSaveTypeText,lIndexOfDsgVar, bUpdate); fn_vCreateControlForInitialization(csDsgVarName+g_c_csDsgVarInitTypeText,lIndexOfDsgVar, bUpdate); } break; case eDsgVarType_GameMaterial: { //Constructs the enums list for the game materials characters list CTL_Editor_EnumDescriptor *pclEnumList=new CTL_Editor_EnumDescriptor(csDsgVarName,4); m_fn_vConstructListOfGameMaterials(NULL,pclEnumList); //Creates one dsg var (init and current) M_ADD_ONE_DSG_VAR(CTL_Editor_EnumControl,C_GMT_CONTROL_PARMS, CTL_Editor_EnumData,C_GMT_DATA_PARMS,bUpdate); //Sets call back function in order to update the combo box pclInitCtrl->m_pub_fn_vSetBuildEnumDesciptor_CallBack(m_fn_vConstructListOfGameMaterials); pclCtrl->m_pub_fn_vSetBuildEnumDesciptor_CallBack(m_fn_vConstructListOfGameMaterials); fn_vCreateControlForSaving(csDsgVarName+g_c_csDsgVarSaveTypeText,lIndexOfDsgVar, bUpdate); fn_vCreateControlForInitialization(csDsgVarName+g_c_csDsgVarInitTypeText,lIndexOfDsgVar, bUpdate); } break; case eDsgVarType_PersoArray: { // BEGIN ROMTEAM Cristi Petrescu 98-11- //Creates one dsg var (init and current) bMyArray = TRUE; M_ADD_ONE_DSG_VAR(CTL_Editor_ArrayEnumControl,C_ARRAY_CONTROL_PARMS, CTL_Editor_ArrayData,C_ARRAY_DATA_PARMS,bUpdate); //Sets call back function in order to update the combo box pclInitCtrl->m_pub_fn_vSetBuildEnumDesciptor_CallBack(m_fn_vConstructListOfPersos); pclCtrl->m_pub_fn_vSetBuildEnumDesciptor_CallBack(m_fn_vConstructListOfPersos); fn_vCreateControlForSaving(csDsgVarName+g_c_csDsgVarSaveTypeText,lIndexOfDsgVar, bUpdate); fn_vCreateControlForInitialization(csDsgVarName+g_c_csDsgVarInitTypeText,lIndexOfDsgVar, bUpdate); /* { //Constructs the enums list for the characters list CTL_Editor_EnumDescriptor *pclEnumList=new CTL_Editor_EnumDescriptor(csDsgVarName,4); m_fn_vConstructListOfPersos(NULL,pclEnumList); //Creates one dsg var (init and current) bArray=TRUE; M_ADD_ONE_DSG_VAR(CTL_Editor_EnumControl,C_PERSO_CONTROL_PARMS, CTL_Editor_EnumData,C_PERSO_DATA_PARMS,bUpdate); //Sets call back function in order to update the combo box pclInitCtrl->m_pub_fn_vSetBuildEnumDesciptor_CallBack(m_fn_vConstructListOfPersos); pclCtrl->m_pub_fn_vSetBuildEnumDesciptor_CallBack(m_fn_vConstructListOfPersos); //Creates index for array fn_vCreateIndexControlForArray(csDsgVarName+g_c_csDsgVarInitText,lIndexOfDsgVar,OAC_DATA_LEVEL_2,pclInitCtrl,C_ADD_ANTEPENULTIMATE); fn_vCreateIndexControlForArray(csDsgVarName,lIndexOfDsgVar,OAC_DATA_LEVEL_3,pclCtrl,C_ADD_LAST_BUT_ONE); fn_vCreateControlForSaving(csDsgVarName+g_c_csDsgVarSaveTypeText,lIndexOfDsgVar, bUpdate); fn_vCreateControlForInitialization(csDsgVarName+g_c_csDsgVarInitTypeText,lIndexOfDsgVar, bUpdate); } */ // END ROMTEAM Cristi Petrescu 98-11- } break; case eDsgVarType_VectorArray: { // BEGIN ROMTEAM Cristi Petrescu 98-11- //Creates one dsg var (init and current) bMyArray = TRUE; M_ADD_ONE_DSG_VAR(CTL_Editor_ArrayVectorControl,C_ARRAY_CONTROL_PARMS, CTL_Editor_ArrayData,C_ARRAY_DATA_PARMS,bUpdate); fn_vCreateControlForSaving(csDsgVarName+g_c_csDsgVarSaveTypeText,lIndexOfDsgVar, bUpdate); fn_vCreateControlForInitialization(csDsgVarName+g_c_csDsgVarInitTypeText,lIndexOfDsgVar, bUpdate); /* { bArray=TRUE; M_ADD_ONE_DSG_VAR(CTL_Editor_VectorControl,C_VECTOR_CONTROL_PARMS, CTL_Editor_VectorData,C_VECTOR_DATA_PARMS,bUpdate); fn_vCreateIndexControlForArray(csDsgVarName+g_c_csDsgVarInitText,lIndexOfDsgVar,OAC_DATA_LEVEL_2,pclInitCtrl,C_ADD_ANTEPENULTIMATE); fn_vCreateIndexControlForArray(csDsgVarName,lIndexOfDsgVar,OAC_DATA_LEVEL_3,pclCtrl,C_ADD_LAST_BUT_ONE); fn_vCreateControlForSaving(csDsgVarName+g_c_csDsgVarSaveTypeText,lIndexOfDsgVar, bUpdate); fn_vCreateControlForInitialization(csDsgVarName+g_c_csDsgVarInitTypeText,lIndexOfDsgVar, bUpdate); } */ } break; case eDsgVarType_FloatArray: { // BEGIN ROMTEAM Cristi Petrescu 98-11- //Creates one dsg var (init and current) bMyArray = TRUE; M_ADD_ONE_DSG_VAR(CTL_Editor_ArrayFloatControl,C_ARRAY_CONTROL_PARMS, CTL_Editor_ArrayData,C_ARRAY_DATA_PARMS,bUpdate); fn_vCreateControlForSaving(csDsgVarName+g_c_csDsgVarSaveTypeText,lIndexOfDsgVar, bUpdate); fn_vCreateControlForInitialization(csDsgVarName+g_c_csDsgVarInitTypeText,lIndexOfDsgVar, bUpdate); /* { bArray=TRUE; M_ADD_ONE_DSG_VAR(CTL_Editor_DecimalControl,C_FLOAT_CONTROL_PARMS, CTL_Editor_DecimalData,C_FLOAT_DATA_PARMS,bUpdate); fn_vCreateIndexControlForArray(csDsgVarName+g_c_csDsgVarInitText,lIndexOfDsgVar,OAC_DATA_LEVEL_2,pclInitCtrl,C_ADD_ANTEPENULTIMATE); fn_vCreateIndexControlForArray(csDsgVarName,lIndexOfDsgVar,OAC_DATA_LEVEL_3,pclCtrl,C_ADD_LAST_BUT_ONE); fn_vCreateControlForSaving(csDsgVarName+g_c_csDsgVarSaveTypeText,lIndexOfDsgVar, bUpdate); fn_vCreateControlForInitialization(csDsgVarName+g_c_csDsgVarInitTypeText,lIndexOfDsgVar, bUpdate); */ // END ROMTEAM Cristi Petrescu 98-11- } break; case eDsgVarType_IntegerArray: { // BEGIN ROMTEAM Cristi Petrescu 98-11- //Creates one dsg var (init and current) bMyArray = TRUE; M_ADD_ONE_DSG_VAR(CTL_Editor_ArrayIntegerControl,C_ARRAY_CONTROL_PARMS, CTL_Editor_ArrayData,C_ARRAY_DATA_PARMS,bUpdate); fn_vCreateControlForSaving(csDsgVarName+g_c_csDsgVarSaveTypeText,lIndexOfDsgVar, bUpdate); fn_vCreateControlForInitialization(csDsgVarName+g_c_csDsgVarInitTypeText,lIndexOfDsgVar, bUpdate); /* { bArray=TRUE; M_ADD_ONE_DSG_VAR(CTL_Editor_IntegerControl,C_SIGNED_LONG_CONTROL_PARMS, CTL_Editor_IntegerData,C_SIGNED_LONG_DATA_PARMS,bUpdate); fn_vCreateIndexControlForArray(csDsgVarNaSme+g_c_csDsgVarInitText,lIndexOfDsgVar,OAC_DATA_LEVEL_2,pclInitCtrl,C_ADD_ANTEPENULTIMATE); fn_vCreateIndexControlForArray(csDsgVarName,lIndexOfDsgVar,OAC_DATA_LEVEL_3,pclCtrl,C_ADD_LAST_BUT_ONE); fn_vCreateControlForSaving(csDsgVarName+g_c_csDsgVarSaveTypeText,lIndexOfDsgVar, bUpdate); fn_vCreateControlForInitialization(csDsgVarName+g_c_csDsgVarInitTypeText,lIndexOfDsgVar, bUpdate); */ // END ROMTEAM Cristi Petrescu 98-11- } break; case eDsgVarType_WayPointArray: { // BEGIN ROMTEAM Cristi Petrescu 98-11- //Creates one dsg var (init and current) bMyArray = TRUE; M_ADD_ONE_DSG_VAR(CTL_Editor_ArrayEnumControl,C_ARRAY_CONTROL_PARMS, CTL_Editor_ArrayData,C_ARRAY_DATA_PARMS,bUpdate); //Sets call back function in order to update the combo box pclInitCtrl->m_pub_fn_vSetBuildEnumDesciptor_CallBack(m_fn_vConstructListOfWayPoints); pclCtrl->m_pub_fn_vSetBuildEnumDesciptor_CallBack(m_fn_vConstructListOfWayPoints); fn_vCreateControlForSaving(csDsgVarName+g_c_csDsgVarSaveTypeText,lIndexOfDsgVar, bUpdate); fn_vCreateControlForInitialization(csDsgVarName+g_c_csDsgVarInitTypeText,lIndexOfDsgVar, bUpdate); /* { //Constructs the enums list for the WayPoints list CTL_Editor_EnumDescriptor *pclEnumList=new CTL_Editor_EnumDescriptor(csDsgVarName,4); m_fn_vConstructListOfWayPoints(NULL,pclEnumList); //Creates one dsg var (init and current) bArray=TRUE; M_ADD_ONE_DSG_VAR(CTL_Editor_EnumControl,C_WAYPOINT_CONTROL_PARMS, CTL_Editor_EnumData,C_WAYPOINT_DATA_PARMS,bUpdate); //Sets call back function in order to update the combo box pclInitCtrl->m_pub_fn_vSetBuildEnumDesciptor_CallBack(m_fn_vConstructListOfWayPoints); pclCtrl->m_pub_fn_vSetBuildEnumDesciptor_CallBack(m_fn_vConstructListOfWayPoints); //Creates index for array fn_vCreateIndexControlForArray(csDsgVarName+g_c_csDsgVarInitText,lIndexOfDsgVar,OAC_DATA_LEVEL_2,pclInitCtrl,C_ADD_ANTEPENULTIMATE); fn_vCreateIndexControlForArray(csDsgVarName,lIndexOfDsgVar,OAC_DATA_LEVEL_3,pclCtrl,C_ADD_LAST_BUT_ONE); fn_vCreateControlForSaving(csDsgVarName+g_c_csDsgVarSaveTypeText,lIndexOfDsgVar, bUpdate); fn_vCreateControlForInitialization(csDsgVarName+g_c_csDsgVarInitTypeText,lIndexOfDsgVar, bUpdate); } */ // END ROMTEAM Cristi Petrescu 98-11- } break; case eDsgVarType_TextArray: { // BEGIN ROMTEAM Cristi Petrescu 98-11- //Creates one dsg var (init and current) bMyArray = TRUE; M_ADD_ONE_DSG_VAR(CTL_Editor_ArrayEnumControl,C_ARRAY_CONTROL_PARMS, CTL_Editor_ArrayData,C_ARRAY_DATA_PARMS,bUpdate); //Sets call back function in order to update the combo box pclInitCtrl->m_pub_fn_vSetBuildEnumDesciptor_CallBack(m_fn_vConstructListOfTexts); pclCtrl->m_pub_fn_vSetBuildEnumDesciptor_CallBack(m_fn_vConstructListOfTexts); fn_vCreateControlForSaving(csDsgVarName+g_c_csDsgVarSaveTypeText,lIndexOfDsgVar, bUpdate); fn_vCreateControlForInitialization(csDsgVarName+g_c_csDsgVarInitTypeText,lIndexOfDsgVar, bUpdate); /* { //Constructs the enums list for the texts list CTL_Editor_EnumDescriptor *pclEnumList=new CTL_Editor_EnumDescriptor(csDsgVarName,4); m_fn_vConstructListOfTexts(NULL,pclEnumList); //Creates one dsg var (init and current) bArray=TRUE; M_ADD_ONE_DSG_VAR(CTL_Editor_EnumControl,C_TEXT_CONTROL_PARMS, CTL_Editor_EnumData,C_TEXT_DATA_PARMS,bUpdate); //Sets call back function in order to update the combo box pclInitCtrl->m_pub_fn_vSetBuildEnumDesciptor_CallBack(m_fn_vConstructListOfTexts); pclCtrl->m_pub_fn_vSetBuildEnumDesciptor_CallBack(m_fn_vConstructListOfTexts); //Creates index for array fn_vCreateIndexControlForArray(csDsgVarName+g_c_csDsgVarInitText,lIndexOfDsgVar,OAC_DATA_LEVEL_2,pclInitCtrl,C_ADD_ANTEPENULTIMATE); fn_vCreateIndexControlForArray(csDsgVarName,lIndexOfDsgVar,OAC_DATA_LEVEL_3,pclCtrl,C_ADD_LAST_BUT_ONE); fn_vCreateControlForSaving(csDsgVarName+g_c_csDsgVarSaveTypeText,lIndexOfDsgVar, bUpdate); fn_vCreateControlForInitialization(csDsgVarName+g_c_csDsgVarInitTypeText,lIndexOfDsgVar, bUpdate); } */ // END ROMTEAM Cristi Petrescu 98-11- } break; } } /*************************************************************************/ //ANNECY CB void fn_vUpdateDsgVarControl(CString &csDsgVarType, CString &csDsgVarName, long lIndexOfDsgVar) //void fn_vUpdateDsgVarControl(CString csDsgVarType, CString csDsgVarName, long lIndexOfDsgVar) //END { CPA_EdIR_Frame *pclIRMainFrame=g_pclAIInterface->m_pclIRMainFrame; CPA_Actor *pclModel=pclIRMainFrame->m_fn_pclGetModel(); CPA_List clInstancesList; g_pclAIInterface->GetMainWorld()->fn_lFindObjects(&clInstancesList,"",C_szActorInstanceTypeName,pclModel); //Updates Data Pointer for models POSITION pos=clInstancesList.GetHeadPosition(); if(pos!=NULL) { CPA_Actor *pclInstance=(CPA_Actor *)(clInstancesList.GetAt(pos)); tdstEngineObject *pstEngineObject=(tdstEngineObject *)pclInstance->GetStruct(); MS_tdxHandleToBrain hBrain=pstEngineObject->h_Brain; if(hBrain!=NULL) { AI_tdstMind *pstMind=M_pstGetMindOfBrain(hBrain); if(pstMind!=NULL) { if(M_GetDsgMem(pstMind)!=NULL) { CTL_Editor_DataList *pclListOfDesignerVariableType; pclListOfDesignerVariableType=pclModel->m_fn_pclGetEditorActor()->m_pclListOfDesignerVariableType; //Sets address of the engine data if(lIndexOfDsgVarm_fn_pclGetDataFromName(csDsgVarName+g_c_csDsgVarInitText); if(pclData!=NULL) { void *pvEngineData=M_GetDsgVarAddrDefault(pstMind,lIndexOfDsgVar); tdstArray *pstArray=(tdstArray *)pvEngineData; pclData->m_fn_vSetMotorDataPtr(M_ARRAY_ELEMENT(pstArray,0)); } } //Save Type CTL_Editor_Data *pclData=pclListOfDesignerVariableType->m_fn_pclGetDataFromName(csDsgVarName+g_c_csDsgVarSaveTypeText); if(pclData!=NULL) { void *pvEngineData=&M_GetDsgVarSaveType(pstMind,lIndexOfDsgVar); pclData->m_fn_vSetMotorDataPtr(pvEngineData); } //Init Type pclData=pclListOfDesignerVariableType->m_fn_pclGetDataFromName(csDsgVarName+g_c_csDsgVarInitTypeText); if(pclData!=NULL) { void *pvEngineData=&M_GetDsgVarInitType(pstMind,lIndexOfDsgVar); pclData->m_fn_vSetMotorDataPtr(pvEngineData); } } } } } } //Updates Data Pointer for instances pos=clInstancesList.GetHeadPosition(); while(pos!=NULL) { CPA_Actor *pclInstance=(CPA_Actor *)(clInstancesList.GetNext(pos)); tdstEngineObject *pstEngineObject=(tdstEngineObject *)pclInstance->GetStruct(); MS_tdxHandleToBrain hBrain=pstEngineObject->h_Brain; if(hBrain!=NULL) { AI_tdstMind *pstMind=M_pstGetMindOfBrain(hBrain); if(pstMind!=NULL) { if(M_GetDsgMem(pstMind)!=NULL) { CTL_Editor_DataList *pclListOfDesignerVariableType; pclListOfDesignerVariableType=pclInstance->m_fn_pclGetEditorActor()->m_pclListOfDesignerVariableType; //Sets address of the engine data if(lIndexOfDsgVarm_fn_pclGetDataFromName(csDsgVarName+g_c_csDsgVarInitText); if(pclData!=NULL) { void *pvEngineData=M_GetDsgVarAddrInit(pstMind,lIndexOfDsgVar); tdeDsgVarTypeId eDsgVarTypeId=fn_eFindDsgVarTypeIdFromScriptName(M_MAKECHAR(csDsgVarType)); tdeVariableType eVariableType=fn_GetDsgVarType(eDsgVarTypeId); if(eVariableType==E_vt_Array) { tdstArray *pstArray=(tdstArray *)pvEngineData; void *pvDefaultEngineData=M_GetDsgVarAddrDefault(pstMind,lIndexOfDsgVar); tdstArray *pstDefaultArray=(tdstArray *)pvDefaultEngineData; M_ARRAY_TYPE(pstArray) = M_ARRAY_TYPE(pstDefaultArray); M_ARRAY_SIZE(pstArray) = M_ARRAY_SIZE(pstDefaultArray); pclData->m_fn_vSetMotorDataPtr(pstArray); } else { pclData->m_fn_vSetMotorDataPtr(pvEngineData); } } //Current value pclData=pclListOfDesignerVariableType->m_fn_pclGetDataFromName(csDsgVarName); if(pclData!=NULL) { void *pvEngineData=M_GetDsgVarAddr(pstMind,lIndexOfDsgVar); tdeDsgVarTypeId eDsgVarTypeId=fn_eFindDsgVarTypeIdFromScriptName(M_MAKECHAR(csDsgVarType)); tdeVariableType eVariableType=fn_GetDsgVarType(eDsgVarTypeId); if(eVariableType==E_vt_Array) { tdstArray *pstArray=(tdstArray *)pvEngineData; void *pvDefaultEngineData=M_GetDsgVarAddrDefault(pstMind,lIndexOfDsgVar); tdstArray *pstDefaultArray=(tdstArray *)pvDefaultEngineData; M_ARRAY_TYPE(pstArray) = M_ARRAY_TYPE(pstDefaultArray); M_ARRAY_SIZE(pstArray) = M_ARRAY_SIZE(pstDefaultArray); pclData->m_fn_vSetMotorDataPtr(pstArray); } else { pclData->m_fn_vSetMotorDataPtr(pvEngineData); } } } } } } } } /*************************************************************************/ CString fn_csGetCodeWithoutComments(CString &csIn) { CString csOut; LPCSTR lpsz = (LPCSTR) csIn; long lIndex = 0, lDest = 0; char *lpdest = (char *) malloc(csIn.GetLength() + 1); while(lpsz[lIndex]) { while(lpsz[lIndex] && lpsz[lIndex] != ';') lpdest[lDest++]=lpsz[lIndex++]; while(lpsz[lIndex] && lpsz[lIndex] != '\xA') lIndex++; if(lpsz[lIndex]) lpdest[lDest++]='\xA'; } lpdest[lDest] = '\0'; csOut = lpdest; free(lpdest); return csOut; } /*************************************************************************/ // SHAITAN => CORRECTION SUBR long fn_lGetNbRules(CString &csIn) { //First erase comments CString csCode=fn_csGetCodeWithoutComments(csIn); //Expand Macro csCode=fn_csExpandMacro(csCode,C_WITH_NO_MACRO_INFO); //Counts rules long lNbRules=0; long lid; long lIndex=0; CString csWord=fn_csGetNextWord(csCode,lIndex); long lDepth=1; BOOL bIsIntoAnITRulesSection=FALSE; while(!csWord.IsEmpty()) { lid = fn_lGetKeyWordIdFromEditorName(csWord); if(!bIsIntoAnITRulesSection && lid==eKeyWord_InterruptRule) { bIsIntoAnITRulesSection=TRUE; } if((lid==eKeyWord_If)||(lid==eKeyWord_If2)||(lid==eKeyWord_If4)||(lid==eKeyWord_If8)||(lid==eKeyWord_If16)||(lid==eKeyWord_IfNot)||(lid==eKeyWord_IfDebug)||(lid==eKeyWord_IfNotU64)) lDepth++; else if(lid==eKeyWord_Endif) { lDepth--; if(lDepth==1 && bIsIntoAnITRulesSection) lNbRules++; } csWord=fn_csGetNextWord(csCode,lIndex); if(bIsIntoAnITRulesSection && csWord.IsEmpty() && lid!=eKeyWord_Endif) { lNbRules++; } } /* the comport is generated in one single rule */ if ( gcGenerateOneRule && lNbRules ) lNbRules = 1; return lNbRules; } /*************************************************************************/ /* long fn_lGetNbRules ( CString & csIn ) { //First erase comments CString csCode = fn_csGetCodeWithoutComments ( csIn ) ; //Expand Macro csCode = fn_csExpandMacro ( csCode , C_WITH_NO_MACRO_INFO ) ; //Counts rules long lNbRules = 0 ; long lid ; long lIndex = 0 ; CString csWord = fn_csGetNextWord ( csCode , lIndex ) ; long lDepth = 1 ; BOOL bIsIntoAnITRulesSection = FALSE , bPrevWordWasAMacroRef = FALSE ; while ( ! csWord . IsEmpty ( ) ) { lid = fn_lGetKeyWordIdFromEditorName ( csWord ) ; if( ! bIsIntoAnITRulesSection && lid == eKeyWord_InterruptRule ) { bIsIntoAnITRulesSection = TRUE ; } if ( bIsIntoAnITRulesSection ) { if ( ( lid == eKeyWord_If ) || ( lid == eKeyWord_If2 ) || ( lid == eKeyWord_If4 ) || ( lid == eKeyWord_If8 ) || ( lid == eKeyWord_If16 ) || ( lid == eKeyWord_IfNot ) || ( lid ==eKeyWord_IfDebug ) || ( lid == eKeyWord_IfNotU64 ) ) { lDepth ++ ; } else if ( lid == eKeyWord_Endif ) { lDepth -- ; if ( lDepth == 1 ) lNbRules ++ ; } else if ( lDepth == 1 ) { if ( g_pclListOfSubrs -> m_fn_bIsInList (csWord) ) // a macroref adds a rule to contain it { bPrevWordWasAMacroRef = TRUE ; lNbRules ++ ; } else { bPrevWordWasAMacroRef = FALSE ; } } else { bPrevWordWasAMacroRef = FALSE ; } csWord = fn_csGetNextWord ( csCode , lIndex ) ; if ( csWord.IsEmpty ( ) && lid != eKeyWord_Endif && ! bPrevWordWasAMacroRef ) { lNbRules ++ ; } } } // the comport is generated in one single rule if ( gcGenerateOneRule && lNbRules ) lNbRules = 1 ; return lNbRules ; } */ // SHAITAN => END CORRECTION SUBR /*************************************************************************/ CPA_SaveObject *fn_pclGetReachableObject(long lHandle,CString csType/*=""*/) { return (CPA_SaveObject *)g_pclAIInterface->GetMainWorld()->fn_p_oFindObjectWithEngine((void *)lHandle,M_MAKECHAR(csType)); } /*************************************************************************/ void fn_vAddOneDependency(CPA_EdIR_MainBehaviour *pclMainBehaviour, CPA_BaseObject *pclFather,CPA_BaseObject *pclChild) { g_oCoherenceManager.m_fn_vAddALink(pclFather,pclChild); pclMainBehaviour->m_clListOfDependencies.AddTail(pclChild); } /*************************************************************************/ //BEGIN ROMTEAM Cristi Petrescu 98-05- BOOL fn_bCheckIA(CPA_EdIR_MainBehaviour *pclMainBehaviour, tdeTypeText eTypeText,CString csIn,long &lIndexError, CString csBehaviourName) //END ROMTEAM Cristi Petrescu 98-05- { CString csOut; if(eTypeText==DsgVarText) g_clDsgVarList.m_fn_vDestroyAndRemoveAllEntries(); if(eTypeText==MacroText) // BEGIN CPA2 Cristi Petrescu 98-03- // hopefully this is called only by CPA_EdIR_Behaviour::fn_bCheckIA, so move it there { // g_clTempMacroList . m_fn_vCopyMacros (g_clMacroList); g_clMacroList.m_fn_vDestroyAndRemoveAllEntries(); } // END CPA2 Cristi Petrescu 98-03- // BEGIN ROMTEAM CPA2 Cristi Petrescu 98-04- if((eTypeText==DsgVarText)||(eTypeText==MacroText)||(eTypeText == Macro_2_Text)) // END ROMTEAM CPA2 Cristi Petrescu 98-04- { csOut = csIn; csOut.MakeLower(); } else csOut=fn_csExpandMacro(csIn); // CPA_EdIR_IntermediateCodeList clIntermediateCodeList; // BOOL bRes=fn_bAnalysesText(csOut,eTypeText,lIndexError,&clIntermediateCodeList); CPA_EdIR_IntermediateCodeList *pclIntermediateCodeList=&(pclMainBehaviour->m_pclBehaviour->m_clIntermediateCodeList); pclIntermediateCodeList->m_fn_vDestroyAndRemoveAllEntries(); //BEGIN ROMTEAM Cristi Petrescu 98-05- BOOL bRes=fn_bAnalysesText(csOut,eTypeText,lIndexError,pclIntermediateCodeList, csBehaviourName); //END ROMTEAM Cristi Petrescu 98-05- if(bRes) pclMainBehaviour->m_pclBehaviour->m_fn_vSetIntermediateCodeList(TRUE); // clIntermediateCodeList.m_fn_vDestroyAndRemoveAllEntries(); return bRes; } /****************************************************************************/ CString fn_csGetFamilyName(CPA_Actor *pclModel) { CPA_Family *pclFamily=pclModel->m_pub_fn_pclGetFamily(); return pclFamily->GetName(); } /****************************************************************************/ CString fn_csGetModelName(CPA_Actor *pclModel) { return pclModel->GetName(); } /****************************************************************************/ CString fn_csGetFamilyName(CPA_EdIR_MainBehaviour *pclMainBehaviour) { return fn_csGetFamilyName((CPA_Actor *)pclMainBehaviour->GetOwner()); } /****************************************************************************/ CString fn_csGetModelName(CPA_EdIR_MainBehaviour *pclMainBehaviour) { return fn_csGetModelName((CPA_Actor *)pclMainBehaviour->GetOwner()); } /*************************************************************************/ char gasz_ArrayRefs[300][255]; int gi_ActualRefNode = 0; int gi_ActualRefStr = 0; struct { tdstNodeInterpret *pstNode; int iFirst; } gapst_ArrayNodeRefs[5000]; char CFast_IsAReference(tdstNodeInterpret *_pst_Node, int *pi_Indice) { int i; for(i = 0; i < gi_ActualRefNode; i++) { if(gapst_ArrayNodeRefs[i].pstNode == _pst_Node) { *pi_Indice = gapst_ArrayNodeRefs[i].iFirst; return 1; } } return 0; } void CRR_fprintf(FILE *h, LPCSTR p, char autorise, CString &csDepth, tdstNodeInterpret *_pst_Node) { if(autorise) { gapst_ArrayNodeRefs[gi_ActualRefNode].pstNode = _pst_Node; for(int i = 0; i < gi_ActualRefStr; i++) { if(!strcmpi(gasz_ArrayRefs[i], (char*)p)) { gapst_ArrayNodeRefs[gi_ActualRefNode++].iFirst = i; return; } } gapst_ArrayNodeRefs[gi_ActualRefNode++].iFirst = gi_ActualRefStr; fprintf(h, "\t"); strcpy(gasz_ArrayRefs[gi_ActualRefStr++], (char*)p); fprintf(h, (char*)p); fprintf(h, csDepth+")\n"); } } /*************************************************************************/ //BEGIN ROMTEAM Cristi Petrescu 98-05- BOOL fn_bProcessIA ( BOOL bProcessAll,CPA_EdIR_MainBehaviour *pclMainBehaviour,BOOL bCreateControl,AI_tdstMind *pstMind,tdstComport *pstComport,tdstTreeInterpret *pstRule, tdeTypeText eTypeText,CString csIn,long &lIndexError,CPA_EdIR_DebugInfoList *pclDebugInfoList, CString csBehaviourName ) //END ROMTEAM Cristi Petrescu 98-05- { CString csOut; char autorise = 1; CString csRef; if(eTypeText != CRRGeneration) { autorise = 0; } if( ( (pclMainBehaviour->m_pclBehaviour->m_fn_bIntermediateCodeListIsGood()==FALSE) || (bProcessAll==TRUE) ) && (eTypeText==DsgVarText) ) g_clDsgVarList.m_fn_vDestroyAndRemoveAllEntries(); if( ( (pclMainBehaviour->m_pclBehaviour->m_fn_bIntermediateCodeListIsGood()==FALSE) || (bProcessAll==TRUE) ) && (eTypeText==MacroText) ) g_clMacroList.m_fn_vDestroyAndRemoveAllEntries(); //ANNECY CB // BEGIN ROMTEAM CPA2 Cristi Petrescu 98-04- if((eTypeText==DsgVarText)||(eTypeText==MacroText)||(eTypeText == Macro_2_Text)) // END ROMTEAM CPA2 Cristi Petrescu 98-04- { csOut = csIn; csOut.MakeLower(); } else csOut=fn_csExpandMacro(csIn); // csOut.MakeLower(); //END ASSERT(pclMainBehaviour!=NULL); ASSERT(pclMainBehaviour->m_pclBehaviour!=NULL); CPA_EdIR_IntermediateCodeList *pclIntermediateCodeList=&(pclMainBehaviour->m_pclBehaviour->m_clIntermediateCodeList); BOOL bRes=TRUE; if(eTypeText != CRRGeneration) { if((pclMainBehaviour->m_pclBehaviour->m_fn_bIntermediateCodeListIsGood()==FALSE) || (bProcessAll==TRUE)) { pclIntermediateCodeList->m_fn_vDestroyAndRemoveAllEntries(); //BEGIN ROMTEAM Cristi Petrescu 98-05- bRes=fn_bAnalysesText(csOut,eTypeText,lIndexError,pclIntermediateCodeList, csBehaviourName); //END ROMTEAM Cristi Petrescu 98-05- } } if(bRes) { CString csBehaviourName=pclMainBehaviour->GetName(); tdstTreeInterpret *pstSchedule=NULL; tdstNodeInterpret *pstNode=NULL; long lCurrentDsgVar=0; unsigned long ulNextOffset=0; BOOL bInScheduleSection=FALSE; BOOL bInITRulesSection=FALSE; //BEGIN ROMTEAM Cristi Petrescu 98-04- BOOL bInSubr = FALSE; //END ROMTEAM Cristi Petrescu 98-04- POSITION pos=pclIntermediateCodeList->GetHeadPosition(); while(pos!=NULL) { CPA_EdIR_IntermediateCode *pclIntermediateCode=pclIntermediateCodeList->GetNext(pos); switch(pclIntermediateCode->m_fn_tdeGetNodeType()) { case eBeginMacro: if(autorise == 1) break; { M_ADDNODE(M_lValueInterpret,pclIntermediateCode->m_fn_lGetIndex(),E_ti_BeginMacro); } break; case eEndMacro: if(autorise == 1) break; { M_ADDNODE(M_lValueInterpret,pclIntermediateCode->m_fn_lGetIndex(),E_ti_EndMacro); } break; case eCreateRule: if(autorise == 1) break; { long lDepth=pclIntermediateCode->m_fn_ucGetDepth(); if(lDepth==1) { if(pos && pclIntermediateCodeList->GetAt(pos)->m_fn_tdeGetNodeType() == eEndMacro) { pclIntermediateCode=pclIntermediateCodeList->GetNext(pos); M_ADDNODE(M_lValueInterpret,pclIntermediateCode->m_fn_lGetIndex(),E_ti_EndMacro); } if(bInScheduleSection) { //Add a dummy node fn_vInitNodeInterpret(pstNode,0,E_ti_EndTree,0); bInScheduleSection=FALSE; } if(bInITRulesSection) { //Add a dummy node fn_vInitNodeInterpret(pstNode,0,E_ti_EndTree,0); pstRule++; bInITRulesSection=FALSE; } long lNbNodes=fn_lGetNbNodes(pclIntermediateCodeList,pos, FALSE); if(lNbNodes!=0 && pstRule) { // allocate nodes pstNode=fn_p_stAllocNodeInterpret(lNbNodes+1); M_GetNodeInterpret(pstRule)=pstNode; M_GetNbNodeInterpret(pstRule)=lNbNodes+1; bInITRulesSection=TRUE; } } } break; //BEGIN ROMTEAM Cristi Petrescu 98-04- case eSubrRef: if(autorise == 1) break; { /* * yo! let's store the editor pointer in there, because parsing order may cause a subroutine to reference * one that is not yet parsed, hence the engine info is not updated, hence it crashes! wqe have to store the * editor pointer, and convert it into an engine pointer when we go into engine mode, and back into an editor * pointer when we get back in editor mode */ CPA_EdIR_MainBehaviour * pclSubrMainBehaviour = ( CPA_EdIR_MainBehaviour * ) pclIntermediateCode -> m_fn_lGetIndex ( ) ; M_ADDNODE ( M_p_stMacroInterpret , ( tdstMacro * ) pclSubrMainBehaviour , E_ti_MacroRef ) ; /* don't forget to say that this subroutine is referenced, hence we cannot delete it until we ahev removed all the calls */ fn_vAddOneDependency(pclMainBehaviour,pclMainBehaviour,pclSubrMainBehaviour); } break; case eCreateSubr: if(autorise == 1) break; { long lDepth = pclIntermediateCode -> m_fn_ucGetDepth (); if( lDepth == 1) { long lNbNodes = fn_lGetNbNodes (pclIntermediateCodeList ,pos, FALSE); if(lNbNodes >= 0) { // allocate nodes fn_vAllocNodeMacro ((tdstMacro *) pstRule, (unsigned short) lNbNodes + 1); //Gets first node of subr pstNode=M_GetNodeInterpretN(((tdstMacro *) pstRule) -> p_stInitTree, 0); // remind for subr refferences pclMainBehaviour -> m_lInfo = (long) pstRule; // and, of course, add the End node... bInSubr = TRUE; } } } break; //END ROMTEAM Cristi Petrescu 98-04- case eCreateSchedule: if(autorise == 1) break; { long lNbNodes=fn_lGetNbNodes(pclIntermediateCodeList,pos, FALSE); if(lNbNodes!=0) { // allocate schedule pstSchedule=fn_p_stAllocSchedule(lNbNodes+1); // connect schedule to comport M_GetComportSchedule(pstComport)=pstSchedule; M_GetNbNodeInterpret(pstSchedule)=lNbNodes+1; //Gets first node of schedule pstNode=M_GetNodeInterpretN(pstSchedule,0); bInScheduleSection=TRUE; } } break; case eKeyWord: if(autorise == 1) break; { long lKeyWordIndex=pclIntermediateCode->m_fn_lGetIndex(); M_ADDNODE(M_eKeyWordIdInterpret,(tdeKeyWordId)lKeyWordIndex,E_ti_KeyWord); } break; case eCondition: if(autorise == 1) break; { M_ADDNODE(M_eCondIdInterpret,(tdeCondId)pclIntermediateCode->m_fn_lGetIndex(),E_ti_Condition); } break; case eMetaAction: if(autorise == 1) break; { M_ADDNODE(M_eMetaActionIdInterpret,(tdeMetaActionId)pclIntermediateCode->m_fn_lGetIndex(),E_ti_MetaAction); } break; case eProcedure: if(autorise == 1) break; { M_ADDNODE(M_eProcedureIdInterpret,(tdeProcedureId)pclIntermediateCode->m_fn_lGetIndex(),E_ti_Procedure); } break; case eField: if(autorise == 1) break; { M_ADDNODE(M_eFieldIdInterpret,(tdeFieldId)pclIntermediateCode->m_fn_lGetIndex(),E_ti_Field); } break; case eConstant: if(autorise == 1) break; { M_ADDNODE(M_lValueInterpret,pclIntermediateCode->m_fn_lGetIndex(),E_ti_Constant); } break; case eConstantInt: if(autorise == 1) break; { M_ADDNODE(M_lValueInterpret,pclIntermediateCode->m_fn_lGetIndex(),E_ti_Constant); } break; case eConstantReal: if(autorise == 1) break; { M_ADDNODE(M_xValueInterpret,MTH_M_xDoubleToReal(pclIntermediateCode->m_fn_dfGetValue()),E_ti_Real); } break; case eMyRfxBehaviour: { CPA_EdIR_MainBehaviour *pclRfxMainBehaviour=(CPA_EdIR_MainBehaviour *)pclIntermediateCode->m_fn_lGetIndex(); if(autorise == 0) { M_ADDNODE(M_ComportInterpret,(tdstComport *)pclRfxMainBehaviour,E_ti_ComportRef); fn_vAddOneDependency(pclMainBehaviour,pclMainBehaviour,pclRfxMainBehaviour); } if(autorise == 1) { CPA_EdIR_MainBehaviour *pclRfxMainBehaviour=(CPA_EdIR_MainBehaviour *)pclIntermediateCode->m_fn_lGetIndex(); CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); CString csFamilyName=g_pclCurrentModel->m_pub_fn_pclGetFamily()->GetName(); CString csModelName=g_pclCurrentModel->GetName(); CString csBehaviourName=pclRfxMainBehaviour->GetName(); csRef = g_c_csComport+"("+ csFamilyName+"\\"+csModelName+"\\"+csModelName+g_c_csAIRfxFileExtension+"^"+ g_c_csRfxSectionName+"^"+g_c_csBehavSectionName+":"+csBehaviourName +","; CRR_fprintf(gh_CRRFile, (LPCSTR) csRef, autorise,csDepth, pclIntermediateCode->pstRefNode); } } break; case eMyIABehaviour: { CPA_EdIR_MainBehaviour *pclIAMainBehaviour=(CPA_EdIR_MainBehaviour *)pclIntermediateCode->m_fn_lGetIndex(); if(autorise == 0) { M_ADDNODE(M_ComportInterpret,(tdstComport *)pclIAMainBehaviour,E_ti_ComportRef); fn_vAddOneDependency(pclMainBehaviour,pclMainBehaviour,pclIAMainBehaviour); } if(autorise == 1) { CPA_EdIR_MainBehaviour *pclIAMainBehaviour=(CPA_EdIR_MainBehaviour *)pclIntermediateCode->m_fn_lGetIndex(); CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); CString csFamilyName=g_pclCurrentModel->m_pub_fn_pclGetFamily()->GetName(); CString csModelName=g_pclCurrentModel->GetName(); CString csBehaviourName=pclIAMainBehaviour->GetName(); csRef = g_c_csComport+"("+ csFamilyName+"\\"+csModelName+"\\"+csModelName+g_c_csAIRulFileExtension+"^"+ g_c_csRulSectionName+"^"+g_c_csBehavSectionName+":"+csBehaviourName +","; CRR_fprintf(gh_CRRFile, (LPCSTR) csRef, autorise,csDepth, pclIntermediateCode->pstRefNode); } } break; case eRfxBehaviour: { CPA_EdIR_MainBehaviour *pclRfxMainBehaviour=(CPA_EdIR_MainBehaviour *)pclIntermediateCode->m_fn_lGetIndex(); if(autorise == 0) { M_ADDNODE(M_ComportInterpret,(tdstComport *)pclRfxMainBehaviour,E_ti_ComportRef); fn_vAddOneDependency(pclMainBehaviour,pclMainBehaviour,pclRfxMainBehaviour); } if(autorise == 1) { CPA_EdIR_MainBehaviour *pclRfxMainBehaviour=(CPA_EdIR_MainBehaviour *)pclIntermediateCode->m_fn_lGetIndex(); CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); CString csFamilyName=fn_csGetFamilyName(pclRfxMainBehaviour); CString csModelName=fn_csGetModelName(pclRfxMainBehaviour); CString csBehaviourName=pclRfxMainBehaviour->GetName(); csRef = g_c_csComport+"("+ csFamilyName+"\\"+csModelName+"\\"+csModelName+g_c_csAIRfxFileExtension+"^"+ g_c_csRulSectionName+"^"+g_c_csBehavSectionName+":"+csBehaviourName +","; CRR_fprintf(gh_CRRFile, (LPCSTR) csRef, autorise,csDepth, pclIntermediateCode->pstRefNode); } } break; case eIABehaviour: { CPA_EdIR_MainBehaviour *pclIAMainBehaviour=(CPA_EdIR_MainBehaviour *)pclIntermediateCode->m_fn_lGetIndex(); if(autorise == 0) { M_ADDNODE(M_ComportInterpret,(tdstComport *)pclIAMainBehaviour,E_ti_ComportRef); fn_vAddOneDependency(pclMainBehaviour,pclMainBehaviour,pclIAMainBehaviour); } if(autorise == 1) { CPA_EdIR_MainBehaviour *pclIAMainBehaviour=(CPA_EdIR_MainBehaviour *)pclIntermediateCode->m_fn_lGetIndex(); CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); CString csFamilyName=fn_csGetFamilyName(pclIAMainBehaviour); CString csModelName=fn_csGetModelName(pclIAMainBehaviour); CString csBehaviourName=pclIAMainBehaviour->GetName(); csRef = g_c_csComport+"("+ csFamilyName+"\\"+csModelName+"\\"+csModelName+g_c_csAIRulFileExtension+"^"+ g_c_csRulSectionName+"^"+g_c_csBehavSectionName+":"+csBehaviourName +","; CRR_fprintf(gh_CRRFile, (LPCSTR) csRef, autorise,csDepth, pclIntermediateCode->pstRefNode); } } break; case eOperator: if(autorise == 1) break; { M_ADDNODE(M_eOperatorIdInterpret,(tdeOperatorId)pclIntermediateCode->m_fn_lGetIndex(),E_ti_Operator); } break; case eFunction: if(autorise == 1) break; { M_ADDNODE(M_eFuncIdInterpret,(tdeFuncId)pclIntermediateCode->m_fn_lGetIndex(),E_ti_Function); } break; case eDsgVar: { if(autorise == 0) { M_ADDNODE(M_lValueInterpret,pclIntermediateCode->m_fn_lGetIndex(),E_ti_DsgVarRef); } if(autorise == 1) { CPA_Actor *pclModel=pclIntermediateCode->m_fn_pclGetModel(); CString csFamilyName=fn_csGetFamilyName(pclModel); CString csModelName=fn_csGetModelName(pclModel); CString csDsgVarRef=csFamilyName+"\\"+csModelName+"\\"+csModelName+g_c_csAIDecFileExtension+"^"+C_CreateVariables_String+":"; CString csDsgVarName=pclIntermediateCode->m_fn_csGetString(); CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); if(pclModel != g_pclCurrentModel) { csRef = g_c_csDsgVarRef+"("+ csDsgVarRef+csDsgVarName +","; CRR_fprintf(gh_CRRFile, (LPCSTR) csRef, autorise,csDepth, pclIntermediateCode->pstRefNode); } } } break; case ePerso: { long lPersoHandle=pclIntermediateCode->m_fn_lGetIndex(); CPA_SaveObject *pclObject=fn_pclGetReachableObject(lPersoHandle,C_szActorInstanceTypeName); if(autorise == 0) { M_ADDNODE(M_p_stPersoRefInterpret,(tdstEngineObject *)lPersoHandle,E_ti_PersoRef); fn_vAddOneDependency(pclMainBehaviour,g_pclCurrentModel,pclObject); } if(autorise == 1) { long lHandle=pclIntermediateCode->m_fn_lGetIndex(); CPA_SaveObject *pclObject=fn_pclGetReachableObject(lHandle,C_szActorInstanceTypeName); CString csPersoRef=pclObject->GetReferencedSectionName(); CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); csRef = g_c_csPerso+"("+ csPersoRef +","; CRR_fprintf(gh_CRRFile, (LPCSTR) csRef, autorise,csDepth, pclIntermediateCode->pstRefNode); } } break; case eReal: if(autorise == 1) break; { M_ADDNODE(M_xValueInterpret,MTH_M_xDoubleToReal(pclIntermediateCode->m_fn_dfGetValue()),E_ti_Real); } break; case eZdd: if(autorise == 1) break; { long lZddHandle=pclIntermediateCode->m_fn_lGetIndex(); M_ADDNODE(M_lValueInterpret,lZddHandle,E_ti_Constant); //fn_vAddOneDependency(pclMainBehaviour,pclObject); } break; case eZde: if(autorise == 1) break; { long lZdeHandle=pclIntermediateCode->m_fn_lGetIndex(); M_ADDNODE(M_lValueInterpret,lZdeHandle,E_ti_Constant); //fn_vAddOneDependency(pclMainBehaviour,pclObject); } break; case eZdm: if(autorise == 1) break; { long lZdmHandle=pclIntermediateCode->m_fn_lGetIndex(); M_ADDNODE(M_lValueInterpret,lZdmHandle,E_ti_Constant); //fn_vAddOneDependency(pclMainBehaviour,pclObject); } break; case eZdr: if(autorise == 1) break; { long lZdrHandle=pclIntermediateCode->m_fn_lGetIndex(); M_ADDNODE(M_lValueInterpret,lZdrHandle,E_ti_Constant); //fn_vAddOneDependency(pclMainBehaviour,pclObject); } break; case eVector: if(autorise == 1) break; { M_ADDNODE(M_lValueInterpret,0L,E_ti_Vector); } break; case eAction: { long lStateHandle=pclIntermediateCode->m_fn_lGetIndex(); CPA_State *pclState=(CPA_State *)fn_pclGetReachableObject(lStateHandle,C_szStateTypeName); if(autorise == 0) { M_ADDNODE(M_ActionInterpret,(tdxHandleToState)lStateHandle,E_ti_ActionRef); fn_vAddOneDependency(pclMainBehaviour,g_pclCurrentModel,pclState->mfn_p_oGetAction()); } if(autorise == 1) { long lHandle=pclIntermediateCode->m_fn_lGetIndex(); CPA_SaveObject *pclObject=fn_pclGetReachableObject(lHandle,C_szStateTypeName); CString csReferencedSectionName=pclObject->GetReferencedSectionName(); CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); csRef = g_c_csAction+"("+ csReferencedSectionName +","; CRR_fprintf(gh_CRRFile, (LPCSTR) csRef, autorise,csDepth, pclIntermediateCode->pstRefNode); } } break; case eState: { long lStateHandle=pclIntermediateCode->m_fn_lGetIndex(); CPA_State *pclState=(CPA_State *)fn_pclGetReachableObject(lStateHandle,C_szStateTypeName); if(autorise == 0) { //M_ADDNODE(M_ActionInterpret,(tdxHandleToState)lStateHandle,E_ti_ActionRef); fn_vAddOneDependency(pclMainBehaviour,g_pclCurrentModel,pclState); } if(autorise == 1) { long lHandle=pclIntermediateCode->m_fn_lGetIndex(); CPA_SaveObject *pclObject=fn_pclGetReachableObject(lHandle,C_szStateTypeName); CString csReferencedSectionName=pclObject->GetReferencedSectionName(); CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); csRef = g_c_csState+"("+ csReferencedSectionName +","; CRR_fprintf(gh_CRRFile, (LPCSTR) csRef, autorise,csDepth, pclIntermediateCode->pstRefNode); } } break; case eWayPoint: { long lWayPointHandle=pclIntermediateCode->m_fn_lGetIndex(); CPA_SaveObject *pclObject=fn_pclGetReachableObject(lWayPointHandle,C_SectionWayPointDescription); if(autorise == 0) { M_ADDNODE(M_lWayPointInterpret,(struct WP_tdstWayPoint_ *)lWayPointHandle,E_ti_WayPointRef); fn_vAddOneDependency(pclMainBehaviour,pclMainBehaviour,pclObject); } if(autorise == 1) { long lHandle=pclIntermediateCode->m_fn_lGetIndex(); CPA_SaveObject *pclObject=fn_pclGetReachableObject(lHandle,C_szWayPointTypeName); CString csReferencedSectionName=pclObject->GetReferencedSectionName(); CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); csRef = g_c_csWayPoint+"("+ csReferencedSectionName +","; CRR_fprintf(gh_CRRFile, (LPCSTR) csRef, autorise,csDepth, pclIntermediateCode->pstRefNode); } } break; case eModule: { if(autorise == 0) { M_ADDNODE(M_lModuleInterpret,pclIntermediateCode->m_fn_lGetIndex(),E_ti_Module); } if(autorise == 1) { CString csModule=pclIntermediateCode->m_fn_csGetValue(); CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); csRef = g_c_csModule+"("+ csModule +","; CRR_fprintf(gh_CRRFile, (LPCSTR) csRef, autorise,csDepth, pclIntermediateCode->pstRefNode); } } break; case eSector: if(autorise == 1) break; { long lSectorHandle=pclIntermediateCode->m_fn_lGetIndex(); CPA_SaveObject *pclObject=fn_pclGetReachableObject(lSectorHandle); M_ADDNODE(M_SuperObjectInterpret,(HIE_tdxHandleToSuperObject)lSectorHandle,E_ti_SuperObjectRef); fn_vAddOneDependency(pclMainBehaviour,pclMainBehaviour,pclObject); } break; case eSuperObject: { long lSuperObjectHandle=pclIntermediateCode->m_fn_lGetIndex(); CPA_SaveObject *pclObject=fn_pclGetReachableObject(lSuperObjectHandle); if(autorise == 0) { M_ADDNODE(M_SuperObjectInterpret,(HIE_tdxHandleToSuperObject)lSuperObjectHandle,E_ti_SuperObjectRef); fn_vAddOneDependency(pclMainBehaviour,pclMainBehaviour,pclObject); } if(autorise == 1) { long lHandle=pclIntermediateCode->m_fn_lGetIndex(); CPA_SaveObject *pclObject=fn_pclGetReachableObject(lHandle); CString csReferencedSectionName=pclObject->GetReferencedSectionName(); CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); csRef = g_c_csSuperObject+"("+ csReferencedSectionName +","; CRR_fprintf(gh_CRRFile, (LPCSTR) csRef, autorise,csDepth, pclIntermediateCode->pstRefNode); } } break; case eLipSynchro: { long lLipSynchroHandle=pclIntermediateCode->m_fn_lGetIndex(); CPA_SaveObject *pclObject=fn_pclGetReachableObject(lLipSynchroHandle,C_szLipSyncTypeName); if(autorise == 0) { M_ADDNODE(M_hLipSynchroHandleIdInterpret,(tdxHandleOfLipsSynchroTable)lLipSynchroHandle,E_ti_LipsSynchroRef); fn_vAddOneDependency(pclMainBehaviour,pclMainBehaviour,pclObject); } if(autorise == 1) { long lHandle=pclIntermediateCode->m_fn_lGetIndex(); CPA_SaveObject *pclObject=fn_pclGetReachableObject(lHandle,C_szLipSyncTypeName); CString csReferencedSectionName=pclObject->GetReferencedSectionName(); CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); csRef = g_c_csLipSynchro+"("+ csReferencedSectionName +","; CRR_fprintf(gh_CRRFile, (LPCSTR) csRef, autorise,csDepth, pclIntermediateCode->pstRefNode); } } break; case eObjectTable: { long lObjectTableHandle=pclIntermediateCode->m_fn_lGetIndex(); CPA_SaveObject *pclObject=fn_pclGetReachableObject(lObjectTableHandle,C_szObjectTableTypeName); if(autorise == 0) { M_ADDNODE(M_ObjectTableInterpret,(tdxHandleToObjectsTablesList)lObjectTableHandle,E_ti_ObjectTableRef); fn_vAddOneDependency(pclMainBehaviour,pclMainBehaviour,pclObject); } if(autorise == 1) { long lHandle=pclIntermediateCode->m_fn_lGetIndex(); CPA_SaveObject *pclObject=fn_pclGetReachableObject(lHandle,C_szObjectTableTypeName); CString csReferencedSectionName=pclObject->GetReferencedSectionName(); CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); csRef = g_c_csObjectTable+"("+ csReferencedSectionName +","; CRR_fprintf(gh_CRRFile, (LPCSTR) csRef, autorise,csDepth, pclIntermediateCode->pstRefNode); } } break; case eFamily: { long lFamilyHandle=pclIntermediateCode->m_fn_lGetIndex(); CPA_SaveObject *pclObject=fn_pclGetReachableObject(lFamilyHandle,C_szFamilyTypeName); if(autorise == 0) { M_ADDNODE(M_hFamilyHandleIdInterpret,(tdxHandleToFamilyList)lFamilyHandle,E_ti_FamilyRef); fn_vAddOneDependency(pclMainBehaviour,pclMainBehaviour,pclObject); } if(autorise == 1) { long lHandle=pclIntermediateCode->m_fn_lGetIndex(); CPA_SaveObject *pclObject=fn_pclGetReachableObject(lHandle,C_szFamilyTypeName); CString csReferencedSectionName=pclObject->GetName(); CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); csRef = g_c_csFamily+"("+ csReferencedSectionName +","; CRR_fprintf(gh_CRRFile, (LPCSTR) csRef, autorise,csDepth, pclIntermediateCode->pstRefNode); } } break; case eModel: { CPA_Actor *pclModel=(CPA_Actor *)pclIntermediateCode->m_fn_lGetIndex(); if(autorise == 0) { M_ADDNODE(M_p_stModelInterpret,(AI_tdstAIModel *)pclModel,E_ti_ModelRef); fn_vAddOneDependency(pclMainBehaviour,pclMainBehaviour,pclModel); } if(autorise == 1) { CPA_Actor *pclModel=(CPA_Actor *)pclIntermediateCode->m_fn_lGetIndex(); CString csFamilyName=fn_csGetFamilyName(pclModel); CString csModelName=fn_csGetModelName(pclModel); CString csModelRef=csFamilyName+"\\"+csModelName+"\\"+csModelName+g_c_csAIFileExtension+"^"+C_CreateAIModel_String; CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); csRef = g_c_csModel+"("+ csModelRef +","; CRR_fprintf(gh_CRRFile, (LPCSTR) csRef, autorise,csDepth, pclIntermediateCode->pstRefNode); } } break; case eSoundEvent: if(autorise == 0) { long lSoundEventHandle=pclIntermediateCode->m_fn_lGetIndex(); CPA_SaveObject *pclObject=fn_pclGetReachableObject(lSoundEventHandle,C_szSoundEventTypeName); M_ADDNODE(M_SoundEventInterpret,(SND_tdstBlockEvent *)lSoundEventHandle,E_ti_SoundEventRef); ////////////////////////////////////////////////////////////////////////////////////////////////////////// //A CHANGER CString csReferencedSectionName=pclObject->GetReferencedSectionName(); //In order to warn Sound Dll about a new link between IA and snd event SCR_fnp_st_RdL0_AnalyseSection(M_MAKECHAR(csReferencedSectionName),SCR_CDF_uw_Anl_Normal); ////////////////////////////////////////////////////////////////////////////////////////////////////////// //fn_vAddOneDependency(pclMainBehaviour,pclMainBehaviour,pclObject); } else { long lHandle=pclIntermediateCode->m_fn_lGetIndex(); CPA_SaveObject *pclObject=fn_pclGetReachableObject(lHandle,C_szSoundEventTypeName); CString csReferencedSectionName=pclObject->GetReferencedSectionName(); CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); csRef = g_c_csSoundEvent + "(" + csReferencedSectionName + "," ; CRR_fprintf(gh_CRRFile, (LPCSTR) csRef, autorise, csDepth, pclIntermediateCode->pstRefNode); } break; case eGameMaterial: { long lGameMaterialHandle=pclIntermediateCode->m_fn_lGetIndex(); CPA_SaveObject *pclObject=fn_pclGetReachableObject(lGameMaterialHandle,C_szGameMaterialTypeName); if(autorise == 0) { M_ADDNODE(M_GameMaterialInterpret,(GMT_tdxHandleToGameMaterial)lGameMaterialHandle,E_ti_GameMaterialRef); fn_vAddOneDependency(pclMainBehaviour,pclMainBehaviour,pclObject); } if(autorise == 1) { long lHandle=pclIntermediateCode->m_fn_lGetIndex(); CPA_SaveObject *pclObject=fn_pclGetReachableObject(lHandle,C_szGameMaterialTypeName); CString csReferencedSectionName=pclObject->GetReferencedSectionName(); CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); csRef = g_c_csGameMaterial+"("+ csReferencedSectionName +","; CRR_fprintf(gh_CRRFile, (LPCSTR) csRef, autorise,csDepth, pclIntermediateCode->pstRefNode); } } break; case eLight: { long lLightHandle=pclIntermediateCode->m_fn_lGetIndex(); CPA_SaveObject *pclObject=fn_pclGetReachableObject(lLightHandle,C_szLightTypeName); if(autorise == 0) { M_ADDNODE(M_p_stLightInterpret,(GLI_tdxHandleToLight)lLightHandle,E_ti_Light); fn_vAddOneDependency(pclMainBehaviour,pclMainBehaviour,pclObject); } if(autorise == 1) { long lHandle=pclIntermediateCode->m_fn_lGetIndex(); CPA_SaveObject *pclObject=fn_pclGetReachableObject(lHandle,C_szLightTypeName); CString csReferencedSectionName=pclObject->GetReferencedSectionName(); CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); csRef = g_c_csLight+"("+ csReferencedSectionName +","; CRR_fprintf(gh_CRRFile, (LPCSTR) csRef, autorise,csDepth, pclIntermediateCode->pstRefNode); } } break; case eCaps: if(autorise == 1) break; { long lCaps=pclIntermediateCode->m_fn_lGetIndex(); M_ADDNODE(M_ulCapsInterpret,(unsigned long)lCaps,E_ti_Caps); //CPA_SaveObject *pclObject=fn_pclGetReachableObject(lCaps, C_szCapsTypeName); //fn_vAddOneDependency(pclMainBehaviour, pclMainBehaviour, pclObject); } break; case eGraph: { long lGraphHandle=pclIntermediateCode->m_fn_lGetIndex(); if(autorise == 0) { M_ADDNODE(M_p_stGraphInterpret,(WP_tdHandleOfGraph)lGraphHandle,E_ti_Graph); //CPA_SaveObject *pclObject=fn_pclGetReachableObject(lGraphHandle, C_szGraphTypeName); //fn_vAddOneDependency(pclMainBehaviour, pclMainBehaviour, pclObject); } if(autorise == 1) { CString csGraph; if (pclIntermediateCode->m_fn_tdeGetNodeType() == eKeyWord) { csGraph = szFindKeyWordScriptNameFromId(eKeyWord_NoGraph); // "NoGraph" ? ? ? } else { WP_tdHandleOfGraph lGraphHandle = (WP_tdHandleOfGraph) pclIntermediateCode->m_fn_lGetIndex(); if (lGraphHandle != NULL) csGraph = lGraphHandle->m_szNameOfGraph; else csGraph = szFindKeyWordScriptNameFromId(eKeyWord_NoGraph); // "NoGraph" ? ? ? } CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); csRef = g_c_csGraph+"("+ csGraph +","; CRR_fprintf(gh_CRRFile, (LPCSTR) csRef, autorise,csDepth, pclIntermediateCode->pstRefNode); } } break; case eKeyButton: { if(autorise == 0) { M_ADDNODE(M_hInputHandleIdInterpret,(IPT_tdxHandleToEntryElement)pclIntermediateCode->m_fn_lGetIndex(),E_ti_Button); } if(autorise == 1) { long lButton=pclIntermediateCode->m_fn_lGetIndex(); CString csButton=IPT_fn_szGetEntryActionName(IPT_tdxHandleToEntryElement(lButton)); CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); csRef = g_c_csKeyButton+"("+ csButton +","; CRR_fprintf(gh_CRRFile, (LPCSTR) csRef, autorise,csDepth, pclIntermediateCode->pstRefNode); } } break; case eMaskType: if(autorise == 1) break; { M_ADDNODE(M_xMaskInterpret,(unsigned short)pclIntermediateCode->m_fn_lGetIndex(),E_ti_Mask); } break; case ePower: if(autorise == 1) break; { M_ADDNODE(M_lValueInterpret,pclIntermediateCode->m_fn_lGetIndex(),E_ti_Constant); } break; case eString: if(autorise == 1) break; { char *pcString=M_MAKECHAR(pclIntermediateCode->m_fn_csGetString()); //Init Node M_ClearNodeInterpret(pstNode); fn_vCreateNodeString(pstNode,pcString); //free(pcString); M_DepthInterpret(pstNode)=pclIntermediateCode->m_fn_ucGetDepth(); pclDebugInfoList->AddTail(new CPA_EdIR_DebugInfo(pstNode,0L,0L,pclIntermediateCode->m_fn_lGetOffset(),csBehaviourName)); pstNode++; } break; case eText: if(autorise == 0) { M_ADDNODE(M_TextInterpret, (FON_tdxHandleOfText) pclIntermediateCode->m_fn_lGetIndex(),E_ti_TextRef); } if(autorise == 1) { long lText=pclIntermediateCode->m_fn_lGetIndex(); CString csText=FON_fn_szGetNameOfTextHandle((FON_tdxHandleOfText)lText); CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); csRef = g_c_csTextRef+"("+ csText +","; CRR_fprintf(gh_CRRFile, (LPCSTR) csRef, autorise, csDepth, pclIntermediateCode->pstRefNode); } break; case eParticleGenerator: { if(autorise == 0) { M_ADDNODE(M_ParticleGeneratorInterpret,(tdxHandleToParticleGenerator)pclIntermediateCode->m_fn_lGetIndex(),E_ti_ParticleGenerator); } if(autorise == 1) { long lHandle=pclIntermediateCode->m_fn_lGetIndex(); CPA_SaveObject *pclObject=fn_pclGetReachableObject(lHandle,C_szPartGenGeneratorName); CString csReferencedSectionName=pclObject->GetReferencedSectionName(); CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); csRef = g_c_csParticleGenerator+"("+ csReferencedSectionName +","; CRR_fprintf(gh_CRRFile, (LPCSTR) csRef, autorise,csDepth, pclIntermediateCode->pstRefNode); } } break; case eCreateDsgVar: { if(bCreateControl) { //Gets type info tdeDsgVarTypeId eDsgVarTypeId=tdeDsgVarTypeId(pclIntermediateCode->m_fn_lGetIndex()); CString csDsgVarType=szFindDsgVarTypeScriptNameFromId(eDsgVarTypeId); CString csDepth=(char)pclIntermediateCode->m_fn_ucGetDepth(); //Gets name pclIntermediateCode=pclIntermediateCodeList->GetNext(pos); CString csDsgVarName=pclIntermediateCode->m_fn_csGetString(); //Gets initial value pclIntermediateCode=pclIntermediateCodeList->GetNext(pos); //Adds one dsg var in engine structure (for model) long lIndexOfDsgVar=g_clDsgVarList.m_fn_lGetIndexOfADesignerVariable(csDsgVarName); //A CHANGER mauvaise interface !!! // au lieu de szParams mettre la valeur intiale (sous forme de chaine) CString csFirstValue; CString csSecondValue; CString csThirdValue; char *szParams[5]={NULL,NULL,NULL,NULL,NULL}; if((eDsgVarTypeId==eDsgVarType_Perso) || (eDsgVarTypeId==eDsgVarType_WayPoint) || (eDsgVarTypeId==eDsgVarType_Action)) { if((pclIntermediateCode->m_fn_lGetIndex()!=eKeyWord_Nobody) && (pclIntermediateCode->m_fn_lGetIndex()!=eKeyWord_Nowhere) && (pclIntermediateCode->m_fn_lGetIndex()!=eKeyWord_NoAction)) { CString csType; switch(eDsgVarTypeId) { case eDsgVarType_Perso: csType=C_szActorInstanceTypeName; break; case eDsgVarType_WayPoint: csType=C_szWayPointTypeName; break; case eDsgVarType_Action: csType=C_szStateTypeName; break; default: csType=""; } long lHandle=pclIntermediateCode->m_fn_lGetIndex(); CPA_SaveObject *pclObject=fn_pclGetReachableObject(lHandle,csType); csFirstValue=pclObject->GetReferencedSectionName(); szParams[2]=(char *)LPCTSTR(csFirstValue); } //else //{ // szParams[2]=NULL; //} } else if(eDsgVarTypeId==eDsgVarType_SuperObject) { if(pclIntermediateCode->m_fn_lGetIndex()!=eKeyWord_NoSuperObject) { long lHandle=pclIntermediateCode->m_fn_lGetIndex(); CPA_SaveObject *pclObject=fn_pclGetReachableObject(lHandle,C_szSuperObjectTypeName); csFirstValue=pclObject->GetReferencedSectionName(); szParams[2]=(char *)LPCTSTR(csFirstValue); } } else if(eDsgVarTypeId==eDsgVarType_Vector) { MTH3D_tdstVector tdstVector=pclIntermediateCode->m_fn_tdstGetVector(); //Gets X value csFirstValue.Format("%f",MTH3D_M_xGetXofVector(&tdstVector)); szParams[2]=(char *)LPCTSTR(csFirstValue); //Gets Y value csSecondValue.Format("%f",MTH3D_M_xGetYofVector(&tdstVector)); szParams[3]=(char *)LPCTSTR(csSecondValue); //Gets Z value csThirdValue.Format("%f",MTH3D_M_xGetZofVector(&tdstVector)); szParams[4]=(char *)LPCTSTR(csThirdValue); } else if(eDsgVarTypeId==eDsgVarType_Float) { csFirstValue.Format("%f",pclIntermediateCode->m_fn_dfGetValue()); szParams[2]=(char *)LPCTSTR(csFirstValue); } else if(eDsgVarTypeId==eDsgVarType_Caps) { if ( pclIntermediateCode->m_fn_tdeGetNodeType() == eKeyWord) { if (pclIntermediateCode->m_fn_lGetIndex() != eKeyWord_CapsNull) // ! { // error ! szParams[2] = szParams[2]; // to test ! } // szParams[2]=NULL; szParams[2] = szParams[2]; // to test ! } else { char sz255Temp[255]; ltoa( pclIntermediateCode->m_fn_lGetIndex(), sz255Temp, 2); csFirstValue = sz255Temp; szParams[2]=(char *)LPCTSTR(csFirstValue); } } else if(eDsgVarTypeId==eDsgVarType_Graph) { if ( pclIntermediateCode->m_fn_tdeGetNodeType() == eKeyWord) { if (pclIntermediateCode->m_fn_lGetIndex() != eKeyWord_NoGraph) // ! { // error ! szParams[2] = szParams[2]; // to test ! } // szParams[2]=NULL; szParams[2] = szParams[2]; // to test ! } else { WP_tdHandleOfGraph lHandle = (WP_tdHandleOfGraph) pclIntermediateCode->m_fn_lGetIndex(); CString csReferencedSectionName; if(lHandle!=NULL) { csFirstValue = lHandle->m_szNameOfGraph; } else csFirstValue = szFindKeyWordScriptNameFromId(eKeyWord_NoGraph); szParams[2]=(char *)LPCTSTR(csFirstValue); } } else if(eDsgVarTypeId==eDsgVarType_Text) { csFirstValue = pclIntermediateCode->m_fn_csGetString(); szParams[2] = (char *)LPCTSTR(csFirstValue); } else { csFirstValue.Format("%ld",pclIntermediateCode->m_fn_lGetIndex()); szParams[2]=(char *)LPCTSTR(csFirstValue); } M_GetDsgVarOffset(pstMind,lCurrentDsgVar)=ulNextOffset; M_SetDsgVarName(pstMind,lCurrentDsgVar,M_MAKECHAR(csDsgVarName)); fn_vInitDsgVarDefault(pstMind,(unsigned char)lIndexOfDsgVar,eDsgVarTypeId,szParams); ulNextOffset+=fn_ulSizeOfDsgVar(eDsgVarTypeId,(szParams[2]!=NULL)?((unsigned char) atoi(szParams[2])):0); lCurrentDsgVar++; //Creates or updates one control for this dsr var if((pclMainBehaviour->m_pclBehaviour->m_fn_bIntermediateCodeListIsGood()==FALSE) || (bProcessAll==TRUE)) { //BEGIN ROMTEAM Cristi Petrescu 98-06- BOOL bIsPrivate = g_clDsgVarList . m_fn_bIsPrivateDesignerVariable (csDsgVarName); fn_vCreateDsgVarControl(csDsgVarType,csDsgVarName,lIndexOfDsgVar,bIsPrivate, FALSE); //END ROMTEAM Cristi Petrescu 98-06- } else { fn_vUpdateDsgVarControl(csDsgVarType,csDsgVarName,lIndexOfDsgVar); } } else if(pstMind==NULL) { //Do nothing } else { AfxMessageBox("Non Reachable Code !!!"); ASSERT(FALSE); } } break; default: { AfxMessageBox("Default code in EdIR2Eng.c/ProcessIA !!"); ASSERT(FALSE); } } } //BEGIN ROMTEAM Cristi Petrescu 98-04- if(autorise == 0){ if(bInScheduleSection || bInITRulesSection || bInSubr) //END ROMTEAM Cristi Petrescu 98-04- { //Add a dummy node fn_vInitNodeInterpret(pstNode,0,E_ti_EndTree,0); } pclMainBehaviour->m_pclBehaviour->m_fn_vSetIntermediateCodeList(TRUE);} } else if(autorise == 0){ pclMainBehaviour->m_pclBehaviour->m_fn_vSetIntermediateCodeList(FALSE);} // BEGIN ROMTEAM Cristi Petrescu 98-08- if (eTypeText == IntelligenceText || eTypeText == ReflexText) //bRes && ((eTypeText==DsgVarText)||(eTypeText==MacroText)||(eTypeText == Macro_2_Text)||(eTypeText == CRRGeneration))) fn_vPostProcessIA (csOut, csIn, pclDebugInfoList, bRes, lIndexError); // END ROMTEAM Cristi Petrescu 98-08- return bRes; } /*************************************************************************/ //BEGIN ROMTEAM Cristi Petrescu 98-04- BOOL fn_bSaveIA(SCR_tdst_File_Description *p_tdstFile,AI_tdstMind *pstMind, tdeTypeText eTypeText,CString csIn,long &lIndexError, CString csInfo, CString csBehaviourName) //END ROMTEAM Cristi Petrescu 98-04- { char autorise = 1; CString csRef; if(eTypeText != CRRGeneration) { autorise = 0; } if(eTypeText==DsgVarText) { g_clDsgVarList.m_fn_vDestroyAndRemoveAllEntries(); } if(eTypeText==MacroText) { g_clMacroList.m_fn_vDestroyAndRemoveAllEntries(); } CString csOut=fn_csExpandMacro(csIn); //ANNECY CB // csOut.MakeLower(); //END CPA_EdIR_IntermediateCodeList clIntermediateCodeList; //BEGIN ROMTEAM Cristi Petrescu 98-05- BOOL bRes=fn_bAnalysesText(csOut,eTypeText,lIndexError,&clIntermediateCodeList, csBehaviourName); //END ROMTEAM Cristi Petrescu 98-05- if(bRes) { long lOldIndentationLevel=SCR_g_ui_SvL0_IndentationLevel; long lCurrentRules=1; long lCurrentDsgVar=0; BOOL bInScheduleSection=FALSE; BOOL bInITRulesSection=FALSE; POSITION pos=clIntermediateCodeList.GetHeadPosition(); while(pos!=NULL) { CPA_EdIR_IntermediateCode *pclIntermediateCode=clIntermediateCodeList.GetNext(pos); switch(pclIntermediateCode->m_fn_tdeGetNodeType()) { case eBeginMacro: case eEndMacro: //these 2 nodes may exist but do not need to be saved break; //BEGIN ROMTEAM Cristi Petrescu 98-04- case eSubrRef: { CString csDepth = fn_csLongToString (pclIntermediateCode -> m_fn_ucGetDepth ()); CPA_EdIR_MainBehaviour *pclMainBehaviour = (CPA_EdIR_MainBehaviour *) pclIntermediateCode -> m_fn_lGetIndex (); CString csFamilyName = fn_csGetFamilyName (pclMainBehaviour); CString csModelName = fn_csGetModelName (pclMainBehaviour); CString csSubr = pclMainBehaviour -> GetName (); M_SAVEENTRY2PARMS (g_c_csSubrRef, csFamilyName + "\\" + csModelName + "\\" + csModelName + g_c_csAISubrFileExtension + "^" + g_c_csEngSubrSectionName + "^" + g_c_csCreateSubr + ":" + csSubr, csDepth); } break; case eCreateSubr: { long lDepth=pclIntermediateCode->m_fn_ucGetDepth(); if(lDepth==1) { // really need this? CP //SCRIPT_vSaveEndSection(p_tdstFile); long lNbNodes=fn_lGetNbNodes(&(clIntermediateCodeList),pos, TRUE); CString csSubrName; int dPos = csInfo . Find (" "); csSubrName = csInfo . Left (dPos); csInfo = csInfo . Right (csInfo . GetLength () - dPos - 1); if(lNbNodes!=0) { M_SAVEBEGINSECTION(g_c_csCreateSubr+":"+csSubrName, csInfo, fn_csLongToString(lNbNodes)); lCurrentRules++; bInITRulesSection=TRUE; } } } break; //END ROMTEAM Cristi Petrescu 98-04- case eCreateSchedule: { long lNbNodes=fn_lGetNbNodes(&(clIntermediateCodeList),pos, TRUE); if(lNbNodes!=0) { M_SAVEBEGINSECTION(g_c_csCreateSchedule+":", "1",//there is only one schedule fn_csLongToString(lNbNodes)); bInScheduleSection=TRUE; } } break; case eCreateRule: { long lDepth=pclIntermediateCode->m_fn_ucGetDepth(); if(lDepth==1) { if(bInScheduleSection) { SCRIPT_vSaveEndSection(p_tdstFile); bInScheduleSection=FALSE; } if(bInITRulesSection) { SCRIPT_vSaveEndSection(p_tdstFile); bInITRulesSection=FALSE; } long lNbNodes=fn_lGetNbNodes(&(clIntermediateCodeList),pos, TRUE); if(lNbNodes!=0) { M_SAVEBEGINSECTION(g_c_csCreateRule+":", fn_csLongToString(lCurrentRules), fn_csLongToString(lNbNodes)); lCurrentRules++; bInITRulesSection=TRUE; } } } break; case eKeyWord: { long lKeyWordIndex=pclIntermediateCode->m_fn_lGetIndex(); CString csKeyWord=szFindKeyWordScriptNameFromId(tdeKeyWordId(lKeyWordIndex)); CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); M_SAVEENTRY2PARMS(g_c_csKeyWord,csKeyWord,csDepth); } break; case eCondition: { long lConditionId=pclIntermediateCode->m_fn_lGetIndex(); CString csCondition=szFindConditionScriptNameFromId(tdeCondId(lConditionId)); CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); M_SAVEENTRY2PARMS(g_c_csCondition,csCondition,csDepth); } break; case eMetaAction: { long lMetaActionId=pclIntermediateCode->m_fn_lGetIndex(); CString csMetaAction=szFindMetaActionScriptNameFromId(tdeMetaActionId(lMetaActionId)); CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); M_SAVEENTRY2PARMS(g_c_csMetaAction,csMetaAction,csDepth); } break; case eProcedure: { long lProcedureId=pclIntermediateCode->m_fn_lGetIndex(); CString csProcedure=szFindProcedureScriptNameFromId(tdeProcedureId(lProcedureId)); CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); M_SAVEENTRY2PARMS(g_c_csProcedure,csProcedure,csDepth); } break; case eField: { long lFieldId=pclIntermediateCode->m_fn_lGetIndex(); CString csField=szFindFieldScriptNameFromId(tdeFieldId(lFieldId)); CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); M_SAVEENTRY2PARMS(g_c_csField,csField,csDepth); } break; case eConstant: { CString csConstant=pclIntermediateCode->m_fn_csGetValue(); CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); M_SAVEENTRY2PARMS(g_c_csConstant,csConstant,csDepth); } break; case eConstantInt: { CString csConstantIntName=pclIntermediateCode->m_fn_csGetString(); CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); CString csConstantIntRef=g_c_csAIDefineFileName+"^"+g_c_csAIDefineSectionName+":"+csConstantIntName; M_SAVEENTRY2PARMS(g_c_csConstantRef,csConstantIntRef,csDepth); } break; case eConstantReal: { CString csConstantRealName=pclIntermediateCode->m_fn_csGetString(); CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); CString csConstantRealRef=g_c_csAIDefineFileName+"^"+g_c_csAIDefineSectionName+":"+csConstantRealName; M_SAVEENTRY2PARMS(g_c_csRealRef,csConstantRealRef,csDepth); } break; case eMyRfxBehaviour: { CPA_EdIR_MainBehaviour *pclRfxMainBehaviour=(CPA_EdIR_MainBehaviour *)pclIntermediateCode->m_fn_lGetIndex(); CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); CString csFamilyName=g_pclCurrentModel->m_pub_fn_pclGetFamily()->GetName(); CString csModelName=g_pclCurrentModel->GetName(); CString csBehaviourName=pclRfxMainBehaviour->GetName(); M_SAVEENTRY2PARMS(g_c_csComport, csFamilyName+"\\"+csModelName+"\\"+csModelName+g_c_csAIRfxFileExtension+"^"+ g_c_csRfxSectionName+"^"+g_c_csBehavSectionName+":"+csBehaviourName, csDepth); } break; case eMyIABehaviour: { CPA_EdIR_MainBehaviour *pclIAMainBehaviour=(CPA_EdIR_MainBehaviour *)pclIntermediateCode->m_fn_lGetIndex(); CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); CString csFamilyName=g_pclCurrentModel->m_pub_fn_pclGetFamily()->GetName(); CString csModelName=g_pclCurrentModel->GetName(); CString csBehaviourName=pclIAMainBehaviour->GetName(); M_SAVEENTRY2PARMS(g_c_csComport, csFamilyName+"\\"+csModelName+"\\"+csModelName+g_c_csAIRulFileExtension+"^"+ g_c_csRulSectionName+"^"+g_c_csBehavSectionName+":"+csBehaviourName, csDepth); } break; case eRfxBehaviour: { CPA_EdIR_MainBehaviour *pclRfxMainBehaviour=(CPA_EdIR_MainBehaviour *)pclIntermediateCode->m_fn_lGetIndex(); CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); CString csFamilyName=fn_csGetFamilyName(pclRfxMainBehaviour); CString csModelName=fn_csGetModelName(pclRfxMainBehaviour); CString csBehaviourName=pclRfxMainBehaviour->GetName(); M_SAVEENTRY2PARMS(g_c_csComport, csFamilyName+"\\"+csModelName+"\\"+csModelName+g_c_csAIRfxFileExtension+"^"+ g_c_csRulSectionName+"^"+g_c_csBehavSectionName+":"+csBehaviourName, csDepth); } break; case eIABehaviour: { CPA_EdIR_MainBehaviour *pclIAMainBehaviour=(CPA_EdIR_MainBehaviour *)pclIntermediateCode->m_fn_lGetIndex(); CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); CString csFamilyName=fn_csGetFamilyName(pclIAMainBehaviour); CString csModelName=fn_csGetModelName(pclIAMainBehaviour); CString csBehaviourName=pclIAMainBehaviour->GetName(); M_SAVEENTRY2PARMS(g_c_csComport, csFamilyName+"\\"+csModelName+"\\"+csModelName+g_c_csAIRulFileExtension+"^"+ g_c_csRulSectionName+"^"+g_c_csBehavSectionName+":"+csBehaviourName, csDepth); } break; case eOperator: { long lOperatorId=pclIntermediateCode->m_fn_lGetIndex(); CString csOperator=szFindOperatorScriptNameFromId(tdeOperatorId(lOperatorId)); CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); M_SAVEENTRY2PARMS(g_c_csOperator,csOperator,csDepth); } break; case eFunction: { long lFunctionId=pclIntermediateCode->m_fn_lGetIndex(); CString csFunction=szFindFunctionScriptNameFromId(tdeFuncId(lFunctionId)); CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); M_SAVEENTRY2PARMS(g_c_csFunction,csFunction,csDepth); } break; case eDsgVar: { CString csDsgVar=pclIntermediateCode->m_fn_csGetValue(); CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); CPA_Actor *pclModel=pclIntermediateCode->m_fn_pclGetModel(); CString csFamilyName=fn_csGetFamilyName(pclModel); CString csModelName=fn_csGetModelName(pclModel); CString csDsgVarRef=csFamilyName+"\\"+csModelName+"\\"+csModelName+g_c_csAIDecFileExtension+"^"+C_CreateVariables_String+":"; CString csDsgVarName=pclIntermediateCode->m_fn_csGetString(); M_SAVEENTRY2PARMS(g_c_csDsgVarRef,csDsgVarRef+csDsgVarName,csDepth); } break; case ePerso: { long lHandle=pclIntermediateCode->m_fn_lGetIndex(); CPA_SaveObject *pclObject=fn_pclGetReachableObject(lHandle,C_szActorInstanceTypeName); CString csPersoRef=pclObject->GetReferencedSectionName(); CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); M_SAVEENTRY2PARMS(g_c_csPerso,csPersoRef,csDepth); } break; case eReal: { CString csReal=pclIntermediateCode->m_fn_csGetValue(); CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); M_SAVEENTRY2PARMS(g_c_csReal,csReal,csDepth); } break; case eZdd: { long lHandle=pclIntermediateCode->m_fn_lGetIndex(); CString csZdd=fn_csLongToString(lHandle); CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); M_SAVEENTRY2PARMS(g_c_csConstant,csZdd,csDepth); } break; case eZde: { long lHandle=pclIntermediateCode->m_fn_lGetIndex(); CString csZde=fn_csLongToString(lHandle); CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); M_SAVEENTRY2PARMS(g_c_csConstant,csZde,csDepth); } break; case eZdm: { long lHandle=pclIntermediateCode->m_fn_lGetIndex(); CString csZdm=fn_csLongToString(lHandle); CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); M_SAVEENTRY2PARMS(g_c_csConstant,csZdm,csDepth); } break; case eZdr: { long lHandle=pclIntermediateCode->m_fn_lGetIndex(); CString csZdr=fn_csLongToString(lHandle); CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); M_SAVEENTRY2PARMS(g_c_csConstant,csZdr,csDepth); } break; case eVector: { CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); M_SAVEENTRY2PARMS(g_c_csVector,CString("Unused"),csDepth); } break; case eAction: { long lHandle=pclIntermediateCode->m_fn_lGetIndex(); CPA_SaveObject *pclObject=fn_pclGetReachableObject(lHandle,C_szStateTypeName); CString csReferencedSectionName=pclObject->GetReferencedSectionName(); CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); M_SAVEENTRY2PARMS(g_c_csAction,csReferencedSectionName,csDepth); } break; case eState: { long lHandle=pclIntermediateCode->m_fn_lGetIndex(); CPA_SaveObject *pclObject=fn_pclGetReachableObject(lHandle,C_szStateTypeName); CString csReferencedSectionName=pclObject->GetReferencedSectionName(); CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); M_SAVEENTRY2PARMS(g_c_csState,csReferencedSectionName,csDepth); } break; case eWayPoint: { long lHandle=pclIntermediateCode->m_fn_lGetIndex(); CPA_SaveObject *pclObject=fn_pclGetReachableObject(lHandle,C_szWayPointTypeName); CString csReferencedSectionName=pclObject->GetReferencedSectionName(); CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); M_SAVEENTRY2PARMS(g_c_csWayPoint,csReferencedSectionName,csDepth); } break; case eSector: { long lHandle=pclIntermediateCode->m_fn_lGetIndex(); CPA_SaveObject *pclObject=fn_pclGetReachableObject(lHandle); CString csReferencedSectionName=pclObject->GetReferencedSectionName(); CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); M_SAVEENTRY2PARMS(g_c_csSector,csReferencedSectionName,csDepth); } break; case eSuperObject: { long lHandle=pclIntermediateCode->m_fn_lGetIndex(); CPA_SaveObject *pclObject=fn_pclGetReachableObject(lHandle); CString csReferencedSectionName=pclObject->GetReferencedSectionName(); CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); M_SAVEENTRY2PARMS(g_c_csSuperObject,csReferencedSectionName,csDepth); } break; case eLipSynchro: { long lHandle=pclIntermediateCode->m_fn_lGetIndex(); CPA_SaveObject *pclObject=fn_pclGetReachableObject(lHandle,C_szLipSyncTypeName); CString csReferencedSectionName=pclObject->GetReferencedSectionName(); CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); M_SAVEENTRY2PARMS(g_c_csLipSynchro,csReferencedSectionName,csDepth); } break; case eObjectTable: { long lHandle=pclIntermediateCode->m_fn_lGetIndex(); CPA_SaveObject *pclObject=fn_pclGetReachableObject(lHandle,C_szObjectTableTypeName); CString csReferencedSectionName=pclObject->GetReferencedSectionName(); CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); M_SAVEENTRY2PARMS(g_c_csObjectTable,csReferencedSectionName,csDepth); } break; case eFamily: { long lHandle=pclIntermediateCode->m_fn_lGetIndex(); CPA_SaveObject *pclObject=fn_pclGetReachableObject(lHandle,C_szFamilyTypeName); CString csReferencedSectionName=pclObject->GetName(); CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); M_SAVEENTRY2PARMS(g_c_csFamily,csReferencedSectionName,csDepth); } break; case eModel: { CPA_Actor *pclModel=(CPA_Actor *)pclIntermediateCode->m_fn_lGetIndex(); CString csFamilyName=fn_csGetFamilyName(pclModel); CString csModelName=fn_csGetModelName(pclModel); CString csModelRef=csFamilyName+"\\"+csModelName+"\\"+csModelName+g_c_csAIFileExtension+"^"+C_CreateAIModel_String; CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); M_SAVEENTRY2PARMS(g_c_csModel,csModelRef,csDepth); } break; case eSoundEvent: { long lHandle=pclIntermediateCode->m_fn_lGetIndex(); CPA_SaveObject *pclObject=fn_pclGetReachableObject(lHandle,C_szSoundEventTypeName); CString csReferencedSectionName=pclObject->GetReferencedSectionName(); CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); M_SAVEENTRY2PARMS(g_c_csSoundEvent,csReferencedSectionName,csDepth); } break; case eGameMaterial: { long lHandle=pclIntermediateCode->m_fn_lGetIndex(); CPA_SaveObject *pclObject=fn_pclGetReachableObject(lHandle,C_szGameMaterialTypeName); CString csReferencedSectionName=pclObject->GetReferencedSectionName(); CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); M_SAVEENTRY2PARMS(g_c_csGameMaterial,csReferencedSectionName,csDepth); } break; case eLight: { long lHandle=pclIntermediateCode->m_fn_lGetIndex(); CPA_SaveObject *pclObject=fn_pclGetReachableObject(lHandle,C_szLightTypeName); CString csReferencedSectionName=pclObject->GetReferencedSectionName(); CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); M_SAVEENTRY2PARMS(g_c_csLight,csReferencedSectionName,csDepth); } break; case eCaps: { CString csCaps; //=pclIntermediateCode->m_fn_csGetValue(); if ( pclIntermediateCode->m_fn_tdeGetNodeType() == eKeyWord) { csCaps = szFindKeyWordScriptNameFromId(eKeyWord_CapsNull); // "CapaNull" ? ? ? } else { long lCaps = pclIntermediateCode->m_fn_lGetIndex(); char sz255Temp[255]; ltoa( lCaps, sz255Temp, 2); csCaps = sz255Temp; } CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); M_SAVEENTRY2PARMS(g_c_csCaps, csCaps, csDepth); } break; case eGraph: { CString csGraph; //=pclIntermediateCode->m_fn_csGetValue(); if (pclIntermediateCode->m_fn_tdeGetNodeType() == eKeyWord) { csGraph = szFindKeyWordScriptNameFromId(eKeyWord_NoGraph); // "NoGraph" ? ? ? } else { WP_tdHandleOfGraph lGraphHandle = (WP_tdHandleOfGraph) pclIntermediateCode->m_fn_lGetIndex(); if (lGraphHandle != NULL) csGraph = lGraphHandle->m_szNameOfGraph; else csGraph = szFindKeyWordScriptNameFromId(eKeyWord_NoGraph); // "NoGraph" ? ? ? } CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); M_SAVEENTRY2PARMS(g_c_csGraph, csGraph, csDepth); } break; case eModule: { CString csModule=pclIntermediateCode->m_fn_csGetValue(); CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); M_SAVEENTRY2PARMS(g_c_csModule,csModule,csDepth); } break; case eKeyButton: { long lButton=pclIntermediateCode->m_fn_lGetIndex(); CString csButton=IPT_fn_szGetEntryActionName(IPT_tdxHandleToEntryElement(lButton)); CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); M_SAVEENTRY2PARMS(g_c_csKeyButton,csButton,csDepth); } break; case eMaskType: { CString csMask=pclIntermediateCode->m_fn_csGetValue(); CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); M_SAVEENTRY2PARMS(g_c_csMaskType,csMask,csDepth); } break; case ePower: { CString csConstant=pclIntermediateCode->m_fn_csGetValue(); CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); M_SAVEENTRY2PARMS(g_c_csPower,csConstant,csDepth); } break; case eString: { CString csString=pclIntermediateCode->m_fn_csGetString(); CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); M_SAVEENTRY2PARMS(g_c_csString,csString,csDepth); } break; case eText: { FON_tdxHandleOfText hText = (FON_tdxHandleOfText) pclIntermediateCode->m_fn_lGetIndex(); CString csText = FON_fn_szGetNameOfTextHandle(hText); CString csDepth = fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); M_SAVEENTRY2PARMS(g_c_csTextRef,csText,csDepth); } break; case eParticleGenerator: { long lHandle=pclIntermediateCode->m_fn_lGetIndex(); CPA_SaveObject *pclObject=fn_pclGetReachableObject(lHandle,C_szPartGenGeneratorName); CString csReferencedSectionName=pclObject->GetReferencedSectionName(); CString csDepth=fn_csLongToString(pclIntermediateCode->m_fn_ucGetDepth()); M_SAVEENTRY2PARMS(g_c_csParticleGenerator,csReferencedSectionName,csDepth); } break; case eCreateDsgVar: { //Gets type info tdeDsgVarTypeId eDsgVarTypeId=tdeDsgVarTypeId(pclIntermediateCode->m_fn_lGetIndex()); tdeVariableType eVariableType=fn_GetDsgVarType(eDsgVarTypeId); CString csDsgVarType=szFindDsgVarTypeScriptNameFromId(eDsgVarTypeId); CString csDepth=(char)pclIntermediateCode->m_fn_ucGetDepth(); //Gets name pclIntermediateCode=clIntermediateCodeList.GetNext(pos); CString csDsgVarName=pclIntermediateCode->m_fn_csGetString(); //Gets initial value pclIntermediateCode=clIntermediateCodeList.GetNext(pos); //For Array (get init value from ai engine) if(eVariableType==E_vt_Array) { //Saves Declaration long lEditorNbElt=pclIntermediateCode->m_fn_lGetIndex(); M_SAVEENTRY4DSGVAR(csDsgVarType,fn_csLongToString(lCurrentDsgVar),csDsgVarName,fn_csLongToString(lEditorNbElt)); if(pstMind!=NULL) { //Checks editor and engine coherence //Checks type tdeDsgVarTypeId eEngineDsgVarTypeId=M_GetDsgVarType(pstMind,lCurrentDsgVar); if(eEngineDsgVarTypeId==eDsgVarTypeId) { tdstArray *pstArray=(tdstArray *)M_GetDsgVarAddrDefault(pstMind,lCurrentDsgVar); //Checks Nb Elt long lEgineNbElt=M_ARRAY_SIZE(pstArray); if(lEgineNbElt==lEditorNbElt) { //Checks name CString csEngineName=M_GetDsgVarName(pstMind,lCurrentDsgVar); if(csEngineName==csDsgVarName) { //Saves Values SCR_g_ui_SvL0_IndentationLevel++; unsigned long ulEntrySize=fn_ulSizeOfDsgVar(M_ARRAY_TYPE(pstArray),0); CString csDsgVarSubType=szFindDsgVarTypeScriptNameFromId(M_ARRAY_TYPE(pstArray)); for(long lIndex=0;lIndexm_fn_lGetIndex()!=eKeyWord_Nobody) && (pclIntermediateCode->m_fn_lGetIndex()!=eKeyWord_Nowhere) && (pclIntermediateCode->m_fn_lGetIndex()!=eKeyWord_NoAction) && (pclIntermediateCode->m_fn_lGetIndex()!=eKeyWord_NoSuperObject)) { CString csType; switch(eDsgVarTypeId) { case eDsgVarType_Perso: csType=C_szActorInstanceTypeName; break; case eDsgVarType_WayPoint: csType=C_szWayPointTypeName; break; case eDsgVarType_Action: csType=C_szStateTypeName; break; case eDsgVarType_SuperObject: csType=C_szSuperObjectTypeName; break; default: csType=""; } long lHandle=pclIntermediateCode->m_fn_lGetIndex(); CPA_SaveObject *pclObject=fn_pclGetReachableObject(lHandle,csType); csDsgVarValue=pclObject->GetReferencedSectionName(); } else { csDsgVarValue=szFindKeyWordScriptNameFromId(tdeKeyWordId(pclIntermediateCode->m_fn_lGetIndex())); } M_SAVEENTRY4DSGVAR(csDsgVarType,fn_csLongToString(lCurrentDsgVar),csDsgVarName,csDsgVarValue); } else if(eDsgVarTypeId==eDsgVarType_Vector) { MTH3D_tdstVector tdstVector=pclIntermediateCode->m_fn_tdstGetVector(); //Gets X value CString csX; csX.Format("%f",MTH3D_M_xGetXofVector(&tdstVector)); //Gets Y value CString csY; csY.Format("%f",MTH3D_M_xGetYofVector(&tdstVector)); //Gets Z value CString csZ; csZ.Format("%f",MTH3D_M_xGetZofVector(&tdstVector)); M_SAVEENTRY4VECTOR(csDsgVarType,fn_csLongToString(lCurrentDsgVar),csDsgVarName,csX,csY,csZ); } else if (eDsgVarTypeId==eDsgVarType_Caps) { if ( pclIntermediateCode->m_fn_tdeGetNodeType() == eKeyWord) { if (pclIntermediateCode->m_fn_lGetIndex() != eKeyWord_CapsNull) { // error ! } csDsgVarValue = szFindKeyWordScriptNameFromId(eKeyWord_CapsNull); // "CapaNull" } else { char sz255Temp[255]; ltoa( pclIntermediateCode->m_fn_lGetIndex(), sz255Temp, 2); csDsgVarValue = sz255Temp; } M_SAVEENTRY4DSGVAR(csDsgVarType, fn_csLongToString(lCurrentDsgVar), csDsgVarName, csDsgVarValue); } else if (eDsgVarTypeId==eDsgVarType_Graph) { if ( pclIntermediateCode->m_fn_tdeGetNodeType() == eKeyWord) { if (pclIntermediateCode->m_fn_lGetIndex() != eKeyWord_NoGraph) { // error ! } csDsgVarValue = szFindKeyWordScriptNameFromId(eKeyWord_NoGraph); // "NoGraph" } else { WP_tdHandleOfGraph lHandle = (WP_tdHandleOfGraph) pclIntermediateCode->m_fn_lGetIndex(); CString csReferencedSectionName; if(lHandle!=NULL) { csReferencedSectionName = lHandle->m_szNameOfGraph; } else csReferencedSectionName=szFindKeyWordScriptNameFromId(eKeyWord_NoGraph); csDsgVarValue = csReferencedSectionName; } M_SAVEENTRY4DSGVAR(csDsgVarType, fn_csLongToString(lCurrentDsgVar), csDsgVarName, csDsgVarValue); } else if(eDsgVarTypeId==eDsgVarType_Text) { csDsgVarValue = pclIntermediateCode->m_fn_csGetString(); M_SAVEENTRY4DSGVAR(csDsgVarType,fn_csLongToString(lCurrentDsgVar),csDsgVarName,csDsgVarValue); } else if(eDsgVarTypeId==eDsgVarType_Float) { csDsgVarValue.Format("%f",pclIntermediateCode->m_fn_dfGetValue()); M_SAVEENTRY4DSGVAR(csDsgVarType,fn_csLongToString(lCurrentDsgVar),csDsgVarName,csDsgVarValue); } else { csDsgVarValue.Format("%ld",pclIntermediateCode->m_fn_lGetIndex()); M_SAVEENTRY4DSGVAR(csDsgVarType,fn_csLongToString(lCurrentDsgVar),csDsgVarName,csDsgVarValue); } } lCurrentDsgVar++; } break; default: { AfxMessageBox("Default code in EdIR2Eng.c/SaveIA !!"); ASSERT(FALSE); } } } if(bInScheduleSection || bInITRulesSection) { SCRIPT_vSaveEndSection(p_tdstFile); } SCR_g_ui_SvL0_IndentationLevel=lOldIndentationLevel; } clIntermediateCodeList.m_fn_vDestroyAndRemoveAllEntries(); return bRes; } /****************************************************************************/ void fn_vConvertPointerToIndexForModel(tdstScriptAI *pstScriptAI) { if(pstScriptAI!=NULL) { unsigned long ulIndex=(unsigned long)((tdstComport *)(M_GetScriptAINoComportInitDefault(pstScriptAI))-M_GetScriptAIComport(pstScriptAI)); M_GetScriptAINoComportInitDefault(pstScriptAI)=ulIndex; } } /****************************************************************************/ void fn_vConvertPointerToIndexForModel(AI_tdstAIModel *pstAIModel) { if(pstAIModel!=NULL) { tdstScriptAI *pstScriptAIIntell=AI_M_p_stGetIntelligenceScriptAIModel(pstAIModel); tdstScriptAI *pstScriptAIReflex=AI_M_p_stGetReflexScriptAIModel(pstAIModel); if(pstScriptAIIntell!=NULL) fn_vConvertPointerToIndexForModel(pstScriptAIIntell); if(pstScriptAIReflex!=NULL) fn_vConvertPointerToIndexForModel(pstScriptAIReflex); } } /****************************************************************************/ void fn_vConvertIndexToPointerForModel(tdstScriptAI *pstScriptAI) { if(pstScriptAI!=NULL) { unsigned long ulIndex=M_GetScriptAINoComportInitDefault(pstScriptAI); M_GetScriptAINoComportInitDefault(pstScriptAI)=(unsigned long)(M_GetScriptAIComportN(pstScriptAI,ulIndex)); } } /****************************************************************************/ void fn_vConvertIndexToPointerForModel(AI_tdstAIModel *pstAIModel) { if(pstAIModel!=NULL) { tdstScriptAI *pstScriptAIIntell=AI_M_p_stGetIntelligenceScriptAIModel(pstAIModel); tdstScriptAI *pstScriptAIReflex=AI_M_p_stGetReflexScriptAIModel(pstAIModel); if(pstScriptAIIntell!=NULL) fn_vConvertIndexToPointerForModel(pstScriptAIIntell); if(pstScriptAIReflex!=NULL) fn_vConvertIndexToPointerForModel(pstScriptAIReflex); } } /****************************************************************************/ void fn_vConvertPointerToIndexForInstance(tdstScriptAI *pstScriptAI,tdstIntelligence *pstIntell) { if((pstIntell!=NULL) && (pstScriptAI!=NULL)) { tdstComport *pstComport=M_GetScriptAIComport(pstScriptAI); unsigned long ulIndex=(unsigned long)((tdstComport *)(M_GetNoComportInit(pstIntell))-pstComport); M_GetNoComportInit(pstIntell)=ulIndex; } } /****************************************************************************/ void fn_vConvertPointerToIndexForInstance(AI_tdstMind *pstMind) { if(pstMind!=NULL) { AI_tdstAIModel *pstAIModel=AI_M_p_stGetAIModel(pstMind); if(pstAIModel!=NULL) { tdstIntelligence *pstIntell=AI_M_p_stGetIntelligence(pstMind); tdstScriptAI *pstScriptAIIntell=AI_M_p_stGetIntelligenceScriptAIModel(pstAIModel); if((pstIntell!=NULL) && (pstScriptAIIntell!=NULL)) { fn_vConvertPointerToIndexForInstance(pstScriptAIIntell,pstIntell); } tdstIntelligence *pstReflex=AI_M_p_stGetReflex(pstMind); tdstScriptAI *pstScriptAIReflex=AI_M_p_stGetReflexScriptAIModel(pstAIModel); if((pstReflex!=NULL) && (pstScriptAIReflex!=NULL)) { fn_vConvertPointerToIndexForInstance(pstScriptAIReflex,pstReflex); } } } } /****************************************************************************/ void fn_vConvertIndexToPointerForInstance(tdstScriptAI *pstScriptAI,tdstIntelligence *pstIntell) { if((pstIntell!=NULL) && (pstScriptAI!=NULL)) { unsigned long ulIndex=(unsigned long)M_GetNoComportInit(pstIntell); M_GetNoComportInit(pstIntell)=(unsigned long)M_GetScriptAIComportN(pstScriptAI,ulIndex); } } /****************************************************************************/ void fn_vConvertIndexToPointerForInstance(AI_tdstMind *pstMind) { if(pstMind!=NULL) { AI_tdstAIModel *pstAIModel=AI_M_p_stGetAIModel(pstMind); if(pstAIModel!=NULL) { tdstIntelligence *pstIntell=AI_M_p_stGetIntelligence(pstMind); tdstScriptAI *pstScriptAIIntell=AI_M_p_stGetIntelligenceScriptAIModel(pstAIModel); if((pstIntell!=NULL) && (pstScriptAIIntell!=NULL)) { fn_vConvertIndexToPointerForInstance(pstScriptAIIntell,pstIntell); } tdstIntelligence *pstReflex=AI_M_p_stGetReflex(pstMind); tdstScriptAI *pstScriptAIReflex=AI_M_p_stGetReflexScriptAIModel(pstAIModel); if((pstReflex!=NULL) && (pstScriptAIReflex!=NULL)) { fn_vConvertIndexToPointerForInstance(pstScriptAIReflex,pstReflex); } } } } tdstMacro * fn_p_stGetMacroRefFromEditorPointer ( CPA_EdIR_MainBehaviour * _p_stEditorSubroutine ) { if ( _p_stEditorSubroutine != NULL ) { CPA_Actor * pclModel = ( CPA_Actor * ) _p_stEditorSubroutine -> GetOwner ( ) ; EdActors_EditorActorModel * pclEditorModel = pclModel -> m_fn_pclGetEditorModel ( ) ; CPA_EdIR_Brain * pclBrain = pclEditorModel -> m_pclBrain ; CPA_List clInstancesList ; g_pclAIInterface -> GetMainWorld ( ) -> fn_lFindObjects ( & clInstancesList , "" , C_szActorInstanceTypeName , pclModel ) ; if ( ! clInstancesList . IsEmpty ( ) ) { CPA_Actor * pclInstance = ( CPA_Actor * ) ( clInstancesList . GetHead ( ) ) ; tdstEngineObject * pstEngineObject = (tdstEngineObject * ) pclInstance -> GetStruct ( ) ; MS_tdxHandleToBrain hBrain = pstEngineObject -> h_Brain ; if ( hBrain != NULL ) { AI_tdstMind * pstMind = M_pstGetMindOfBrain ( hBrain ) ; if ( pstMind != NULL ) { AI_tdstAIModel * pstAIModel = AI_M_p_stGetAIModel ( pstMind ) ; if ( pstAIModel != NULL ) { long lBehaviourIndex = -1 ; CPA_EdIR_MainBehaviourList * pclBehaviourList = NULL ; if ( pclBrain -> m_clListOfSubrs . m_fn_bIsInList ( _p_stEditorSubroutine -> GetName ( ) ) ) { lBehaviourIndex = pclBrain -> m_clListOfSubrs . m_fn_lGetIndexOfABehaviour ( _p_stEditorSubroutine -> GetName ( ) ) ; return M_GetMacroN ( AI_M_p_stGetListOfMacroAIModel ( pstAIModel ) , lBehaviourIndex ) ; } else { AfxMessageBox("fn_vConvertEditorPointerIntoEnginePointer: can't convert the editor subroutine (" + _p_stEditorSubroutine -> GetName ( ) + ") in a motor subroutine !!"); } } } } } else { AfxMessageBox("fn_vConvertEditorPointerIntoEnginePointer: editor and engine data are not coherent (AI) !!"); ASSERT(FALSE); } } else { AfxMessageBox("[DEV]fn_vConvertEditorPointerIntoEnginePointer: pb editor subroutine is NULL!!\nThe editor and engine intelligence are not coherent\nTry to compile the intelligence or get a coherent version of the scripts files"); } return NULL ; } /****************************************************************************/ void fn_vConvertEditorPointerIntoEnginePointer ( tdstTreeInterpret * pstTree ) { if ( pstTree != NULL ) { tdstNodeInterpret * pstNode ; long lIndex ; for ( lIndex = 0 ; lIndex < M_GetNbNodeInterpret ( pstTree ) ; lIndex ++ ) { pstNode = M_GetNodeInterpretN ( pstTree , lIndex ) ; switch(M_GetTypeInterpret(pstNode)) { case E_ti_MacroRef : M_p_stMacroInterpret ( pstNode ) = fn_p_stGetMacroRefFromEditorPointer ( ( CPA_EdIR_MainBehaviour * ) M_p_stMacroInterpret ( pstNode ) ) ; break ; case E_ti_ModelRef: { CPA_Actor * pclModel = ( CPA_Actor * ) M_p_stModelInterpret ( pstNode ) ; CPA_List clInstancesList; g_pclAIInterface->GetMainWorld()->fn_lFindObjects(&clInstancesList,"",C_szActorInstanceTypeName,pclModel); if(!clInstancesList.IsEmpty()) { CPA_Actor *pclInstance=(CPA_Actor *)(clInstancesList.GetHead()); tdstEngineObject *pstEngineObject=(tdstEngineObject *)pclInstance->GetStruct(); MS_tdxHandleToBrain hBrain=pstEngineObject->h_Brain; if(hBrain!=NULL) { AI_tdstMind *pstMind=M_pstGetMindOfBrain(hBrain); if(pstMind!=NULL) { AI_tdstAIModel *pstAIModel=AI_M_p_stGetAIModel(pstMind); if(pstAIModel!=NULL) M_p_stModelInterpret(pstNode)=pstAIModel; } } } } break; case E_ti_ComportRef: { CPA_EdIR_MainBehaviour *pclMainBehaviour=(CPA_EdIR_MainBehaviour *)M_ComportInterpret(pstNode); if(pclMainBehaviour!=NULL) { CPA_Actor *pclModel=(CPA_Actor *)pclMainBehaviour->GetOwner(); EdActors_EditorActorModel *pclEditorModel=pclModel->m_fn_pclGetEditorModel(); CPA_EdIR_Brain * pclBrain = pclEditorModel -> m_pclBrain ; CPA_List clInstancesList ; g_pclAIInterface -> GetMainWorld ( ) -> fn_lFindObjects ( & clInstancesList , "" , C_szActorInstanceTypeName , pclModel ) ; if ( ! clInstancesList . IsEmpty ( ) ) { CPA_Actor *pclInstance=(CPA_Actor *)(clInstancesList.GetHead()); tdstEngineObject *pstEngineObject=(tdstEngineObject *)pclInstance->GetStruct(); MS_tdxHandleToBrain hBrain=pstEngineObject->h_Brain; if(hBrain!=NULL) { AI_tdstMind *pstMind=M_pstGetMindOfBrain(hBrain); if(pstMind!=NULL) { AI_tdstAIModel *pstAIModel=AI_M_p_stGetAIModel(pstMind); if(pstAIModel!=NULL) { long lBehaviourIndex=-1; CPA_EdIR_MainBehaviourList *pclBehaviourList=NULL; tdstScriptAI *pstScriptAI=NULL; if(pclBrain->m_clListOfIntelligenceBehaviours.m_fn_bIsInList(pclMainBehaviour->GetName())) { pclBehaviourList=&(pclBrain->m_clListOfIntelligenceBehaviours); pstScriptAI=AI_M_p_stGetIntelligenceScriptAIModel(pstAIModel); } else if(pclBrain->m_clListOfReflexBehaviours.m_fn_bIsInList(pclMainBehaviour->GetName())) { pclBehaviourList=&(pclBrain->m_clListOfReflexBehaviours); pstScriptAI=AI_M_p_stGetReflexScriptAIModel(pstAIModel); } if((pclBehaviourList!=NULL) && (pstScriptAI!=NULL)) { lBehaviourIndex=pclBehaviourList->m_fn_lGetIndexOfABehaviour(pclMainBehaviour->GetName()); M_ComportInterpret(pstNode)=M_GetScriptAIComportN(pstScriptAI,lBehaviourIndex); } else { AfxMessageBox("fn_vConvertEditorPointerIntoEnginePointer: can't convert the editor behaviour ("+pclMainBehaviour->GetName()+") in a motor behaviour !!"); } } } } } else { AfxMessageBox("fn_vConvertEditorPointerIntoEnginePointer: editor and engine data are not coherent (AI) !!"); ASSERT(FALSE); } } else { AfxMessageBox("[DEV]fn_vConvertEditorPointerIntoEnginePointer: pb editor behaviour is NULL!!\nThe editor and engine intelligence are not coherent\nTry to compile the intelligence or get a coherent version of the scripts files"); } } break; } } } } /****************************************************************************/ void fn_vConvertEditorPointerIntoEnginePointer(tdstScriptAI *pstScriptAI) { if(pstScriptAI!=NULL) { //Converts tree tdstComport *pstComport; unsigned long ulIndexForComport; for(ulIndexForComport=0;ulIndexForComport clModelsList; g_pclAIInterface->GetMainWorld()->fn_lFindObjects(&clModelsList,"",C_szActorModelTypeName,NO_CRITERIA); POSITION pos=clModelsList.GetHeadPosition(); while(pos!=NULL) { CPA_Actor *pclModel=(CPA_Actor *)(clModelsList.GetNext(pos)); //Converts model CPA_List clInstancesList; g_pclAIInterface->GetMainWorld()->fn_lFindObjects(&clInstancesList,"",C_szActorInstanceTypeName,pclModel); if(!clInstancesList.IsEmpty()) { CPA_Actor *pclInstance=(CPA_Actor *)(clInstancesList.GetHead()); tdstEngineObject *pstEngineObject=(tdstEngineObject *)pclInstance->GetStruct(); MS_tdxHandleToBrain hBrain=pstEngineObject->h_Brain; if(hBrain!=NULL) { AI_tdstMind *pstMind=M_pstGetMindOfBrain(hBrain); if(pstMind!=NULL && AI_M_p_stGetAIModel(pstMind)==pstAIModel) return pclModel; } } } AfxMessageBox("[DEV]EdIR2Eng::fn_pclGetModel : Unknown pstAIModel !!"); return NULL; } /****************************************************************************/ CPA_EdIR_MainBehaviour *fn_pclGetBehaviour(tdstComport *pstComport) { CString csBehaviourSectionName=M_GetNameComport(pstComport); CString csErrorMsg="[DEV]EdIR2Eng::fn_pclGetBehaviour : there is no editor behaviour with this name : "+csBehaviourSectionName+" !!"; if(csBehaviourSectionName!="") { //Extracts BehaviourName long lIndex=csBehaviourSectionName.ReverseFind(':'); if(lIndex!=-1) { CString csBehaviourName=csBehaviourSectionName.Right(csBehaviourSectionName.GetLength()-lIndex-1); //Extracts Model Name lIndex=csBehaviourSectionName.Find('\\'); if(lIndex!=-1) { CString csModelName=csBehaviourSectionName.Right(csBehaviourSectionName.GetLength()-lIndex-1); lIndex=csModelName.Find('\\'); if(lIndex!=-1) { csModelName=csModelName.Left(lIndex); CPA_BaseObject *pclModel=g_pclAIInterface->GetMainWorld()->fn_p_oFindObject(csModelName,C_szActorModelTypeName); if(pclModel!=NULL) { CPA_EdIR_MainBehaviour *pclMainBehaviour=(CPA_EdIR_MainBehaviour *)g_pclAIInterface->GetMainWorld()->fn_p_oFindObject(csBehaviourName,C_szIABehaviourTypeName,pclModel); if(pclMainBehaviour!=NULL) return pclMainBehaviour; else csErrorMsg="[DEV]EdIR2Eng::fn_pclGetBehaviour : there is no editor behaviour ("+csBehaviourName+") in the model "+csModelName+" !!"; } else { csErrorMsg="[DEV]EdIR2Eng::fn_pclGetBehaviour : there is no editor model with this name : "+csModelName+" !!"; } } } } AfxMessageBox(csErrorMsg); return NULL; } else { AfxMessageBox("[DEV]EdIR2Eng::fn_pclGetBehaviour : pstComport has no name !!"); } return NULL; } /****************************************************************************/ CPA_EdIR_MainBehaviour * fn_pclGetSubroutine ( tdstMacro * pstMacro ) { CString csBehaviourSectionName=M_GetNameMacro(pstMacro); CString csErrorMsg = "[DEV]EdIR2Eng::fn_pclGetSubroutine : there is no editor subroutine with this name : "+csBehaviourSectionName+" !!"; if(csBehaviourSectionName!="") { //Extracts BehaviourName long lIndex=csBehaviourSectionName.ReverseFind(':'); if(lIndex!=-1) { CString csBehaviourName=csBehaviourSectionName.Right(csBehaviourSectionName.GetLength()-lIndex-1); //Extracts Model Name lIndex=csBehaviourSectionName.Find('\\'); if(lIndex!=-1) { CString csModelName=csBehaviourSectionName.Right(csBehaviourSectionName.GetLength()-lIndex-1); lIndex=csModelName.Find('\\'); if(lIndex!=-1) { csModelName=csModelName.Left(lIndex); CPA_BaseObject *pclModel=g_pclAIInterface->GetMainWorld()->fn_p_oFindObject(csModelName,C_szActorModelTypeName); if(pclModel!=NULL) { CPA_EdIR_MainBehaviour *pclMainBehaviour=(CPA_EdIR_MainBehaviour *)g_pclAIInterface->GetMainWorld()->fn_p_oFindObject(csBehaviourName,C_szIABehaviourTypeName,pclModel); if(pclMainBehaviour!=NULL) return pclMainBehaviour; else csErrorMsg="[DEV]EdIR2Eng::fn_pclGetSubroutine : there is no editor behaviour ("+csBehaviourName+") in the model "+csModelName+" !!"; } else { csErrorMsg="[DEV]EdIR2Eng::fn_pclGetSubroutine : there is no editor model with this name : "+csModelName+" !!"; } } } } AfxMessageBox(csErrorMsg); return NULL; } else { AfxMessageBox("[DEV]EdIR2Eng::fn_pclGetSubroutine : pstMacro has no name !!"); } return NULL; } /****************************************************************************/ void fn_vConvertEnginePointerIntoEditorPointer(tdstTreeInterpret *pstTree) { if(pstTree!=NULL) { tdstNodeInterpret *pstNode; long lIndex; for(lIndex=0;lIndex m_clListOfSubrs; tdstMacro * p_stMacro = M_p_stMacroInterpret ( pstNode ) ; /* look for the editor subroutine that has this engine subroutine */ M_p_stMacroInterpret ( pstNode ) = ( tdstMacro * ) fn_pclGetSubroutine ( p_stMacro ) ; } break ; } } } } /****************************************************************************/ void fn_vConvertEnginePointerIntoEditorPointer(tdstScriptAI *pstScriptAI) { if(pstScriptAI!=NULL) { //Converts tree tdstComport *pstComport; unsigned long ulIndexForComport; for(ulIndexForComport=0;ulIndexForComport