583 lines
18 KiB
C++
583 lines
18 KiB
C++
// EdIRLoad.cpp : implementation of the CEdIAFrame class
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
|
|
#include "Defines.hpp"
|
|
|
|
//#ifdef D_ED_IR_ACTIVE
|
|
|
|
#include "EdIRFrm.hpp"
|
|
|
|
#include "EdIRStrg.hpp"
|
|
#include "EdIRIRD.hpp"
|
|
#include "EdIRBeEn.hpp"
|
|
#include "EdIRGlob.hpp"
|
|
|
|
#include "EdIRIAWd.hpp"
|
|
|
|
#include "EDACModl.hpp"
|
|
|
|
#include "ai_intf.hpp"
|
|
|
|
|
|
|
|
#include "TFA.h"
|
|
|
|
#include "incAI.h"
|
|
#include "x:\cpa\main\inc\_EditID.h"
|
|
|
|
#include "_Actors.hpp"
|
|
|
|
#include "ITF.h"
|
|
#include "GAM.h"
|
|
#include "GMT.h"
|
|
#include "DPT.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CPA_EdIR_Frame load script
|
|
|
|
/**********************************************************************************/
|
|
/* CHRISTOPHE QUICK SAVE MODIFICATIONS { */
|
|
#include "EdIRRes.h"
|
|
class CQuickSave : public CDialog
|
|
{
|
|
public:
|
|
CString msg;
|
|
CQuickSave(int);
|
|
virtual BOOL OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
CStatic *pstat = (CStatic *) GetDlgItem(IDC_STATIC);
|
|
pstat->SetWindowText(msg);
|
|
return TRUE;
|
|
}
|
|
afx_msg void OnYes() { EndDialog(IDYES); }
|
|
afx_msg void OnNo() { EndDialog(IDNO); }
|
|
afx_msg void OnNoAll() { EndDialog(IDNOALL); }
|
|
afx_msg void OnDelete() { EndDialog(IDDELETE); }
|
|
afx_msg void OnDeleteAll() { EndDialog(IDDELETEALL); }
|
|
DECLARE_MESSAGE_MAP()
|
|
};
|
|
|
|
BEGIN_MESSAGE_MAP(CQuickSave, CDialog)
|
|
ON_COMMAND(IDYES,OnYes)
|
|
ON_COMMAND(IDNO,OnNo)
|
|
ON_COMMAND(IDNOALL,OnNoAll)
|
|
ON_COMMAND(IDDELETE,OnDelete)
|
|
ON_COMMAND(IDDELETEALL,OnDeleteAll)
|
|
END_MESSAGE_MAP()
|
|
|
|
BOOL QuickSaveDeleteAll = FALSE;
|
|
BOOL QuickSaveNoAll = FALSE;
|
|
|
|
CQuickSave::CQuickSave(int n) : CDialog(n) {}
|
|
int QuickSaveDialog(CString text)
|
|
{
|
|
CQuickSave Dial(IDD_QUICKSAVE);
|
|
Dial.msg = text;
|
|
return Dial.DoModal();
|
|
}
|
|
/**********************************************************************************/
|
|
void CPA_EdIR_Frame::m_fn_vLoadBrain(CPA_Actor *pclModel,CString csModelName)
|
|
{
|
|
//Loads Intelligence
|
|
CString csFileName=csModelName+g_c_csIntelligenceFileExtension;
|
|
CString csFileNameQS=csModelName+g_c_csIntelligenceFileExtensionQS;
|
|
CString csSectionName=csFileName+'^'+g_c_csIntelligenceSectionName;
|
|
CString csSectionNameQS=csFileNameQS+'^'+g_c_csIntelligenceSectionName;
|
|
BOOL bQuickSaveFileExists=FALSE;
|
|
BOOL bLoadQuickSaveFile=FALSE;
|
|
BOOL bAsksQuestion=TRUE;
|
|
BOOL bDeleteQuick = FALSE;
|
|
SCR_tdst_Cxt_Values *p_stValues;
|
|
char Path[255], File[255];
|
|
char *psz_Temp;
|
|
CString csBaseMsg="Would you like to load QuickSave for ";
|
|
char *psz_Famil = fn_szGetFamiliesDataPath();
|
|
|
|
SCR_M_RdL0_SetContextLong(1,0,(long)(((EdActors_EditorActorModel *)pclModel->m_fn_pclGetEditorActor())->m_pclBrain));
|
|
bQuickSaveFileExists=FALSE;
|
|
bDeleteQuick=FALSE;
|
|
if(QuickSaveNoAll == FALSE)
|
|
bQuickSaveFileExists=SCR_fn_c_RdL0_IsSectionExists(M_MAKECHAR(csSectionNameQS));
|
|
if(bQuickSaveFileExists)
|
|
{
|
|
CString csMsg=csBaseMsg+csModelName+" model ?";
|
|
|
|
if((QuickSaveDeleteAll == FALSE)&&(bAsksQuestion))
|
|
{
|
|
int iRes = QuickSaveDialog(csMsg);
|
|
switch(iRes)
|
|
{
|
|
case IDYES: bLoadQuickSaveFile = TRUE; break;
|
|
case IDNO: bLoadQuickSaveFile = FALSE; break;
|
|
case IDNOALL: bLoadQuickSaveFile = FALSE; QuickSaveNoAll = TRUE; break;
|
|
case IDDELETE: bLoadQuickSaveFile = FALSE; bDeleteQuick = TRUE; break;
|
|
case IDDELETEALL: bLoadQuickSaveFile = FALSE; bDeleteQuick = TRUE; QuickSaveDeleteAll = TRUE; break;
|
|
}
|
|
}
|
|
bAsksQuestion=FALSE;
|
|
|
|
if(bDeleteQuick || QuickSaveDeleteAll)
|
|
{
|
|
strcpy(Path, psz_Famil);
|
|
strcat(Path, "\\");
|
|
strcpy(File, (char *) (LPCSTR) csSectionNameQS);
|
|
psz_Temp = strrchr(File, '^');
|
|
if(psz_Temp)
|
|
{
|
|
*psz_Temp = '\0';
|
|
strcat(Path, File);
|
|
chmod(Path, _S_IWRITE);
|
|
unlink(Path);
|
|
}
|
|
bLoadQuickSaveFile = FALSE;
|
|
}
|
|
else if (bLoadQuickSaveFile)
|
|
{
|
|
CPA_EdIR_Brain *pclBrain=((EdActors_EditorActorModel *)pclModel->m_fn_pclGetEditorActor())->m_pclBrain;
|
|
pclBrain->m_fn_vSetModified(TRUE);
|
|
pclBrain->m_fn_vNotify();
|
|
|
|
// for instances
|
|
CPA_List<CPA_BaseObject> clInstancesList;
|
|
g_pclAIInterface->GetMainWorld()->fn_lFindObjects(&clInstancesList,"",C_szActorInstanceTypeName,pclModel);
|
|
|
|
POSITION pos1=clInstancesList.GetHeadPosition();
|
|
while(pos1!=NULL)
|
|
{
|
|
CPA_Actor *pclInstance=(CPA_Actor *)(clInstancesList.GetNext(pos1));
|
|
tdstEngineObject *pstEngineObject=(tdstEngineObject *)pclInstance->GetStruct();
|
|
MS_tdxHandleToBrain hBrain=pstEngineObject->h_Brain;
|
|
|
|
if(hBrain)
|
|
AI_M_ucErrorFlag(M_pstGetMindOfBrain(hBrain))=1;
|
|
}
|
|
}
|
|
}
|
|
|
|
if(bLoadQuickSaveFile)
|
|
p_stValues=SCR_fnp_st_RdL0_AnalyseSection(M_MAKECHAR(csSectionNameQS),SCR_CDF_uw_Anl_Normal);
|
|
else
|
|
p_stValues=SCR_fnp_st_RdL0_AnalyseSection(M_MAKECHAR(csSectionName),SCR_CDF_uw_Anl_Normal);
|
|
|
|
//Loads Reflex
|
|
csFileName=csModelName+g_c_csReflexFileExtension;
|
|
csFileNameQS=csModelName+g_c_csReflexFileExtensionQS;
|
|
csSectionName=csFileName+'^'+g_c_csReflexSectionName;
|
|
csSectionNameQS=csFileNameQS+'^'+g_c_csReflexSectionName;
|
|
|
|
SCR_M_RdL0_SetContextLong(1,0,(long)(((EdActors_EditorActorModel *)pclModel->m_fn_pclGetEditorActor())->m_pclBrain));
|
|
bQuickSaveFileExists=FALSE;
|
|
if(QuickSaveNoAll == FALSE)
|
|
bQuickSaveFileExists=SCR_fn_c_RdL0_IsSectionExists(M_MAKECHAR(csSectionNameQS));
|
|
if(bQuickSaveFileExists)
|
|
{
|
|
CString csMsg=csBaseMsg+csModelName+" model ?";
|
|
|
|
if((QuickSaveDeleteAll == FALSE)&&(bAsksQuestion))
|
|
{
|
|
int iRes = QuickSaveDialog(csMsg);
|
|
switch(iRes)
|
|
{
|
|
case IDYES: bLoadQuickSaveFile = TRUE; break;
|
|
case IDNO: bLoadQuickSaveFile = FALSE; break;
|
|
case IDNOALL: bLoadQuickSaveFile = FALSE; QuickSaveNoAll = TRUE; break;
|
|
case IDDELETE: bLoadQuickSaveFile = FALSE; bDeleteQuick = TRUE; break;
|
|
case IDDELETEALL: bLoadQuickSaveFile = FALSE; bDeleteQuick = TRUE; QuickSaveDeleteAll = TRUE; break;
|
|
}
|
|
}
|
|
bAsksQuestion=FALSE;
|
|
|
|
if(bDeleteQuick || QuickSaveDeleteAll)
|
|
{
|
|
strcpy(Path, psz_Famil);
|
|
strcat(Path, "\\");
|
|
strcpy(File, (char *) (LPCSTR) csSectionNameQS);
|
|
psz_Temp = strrchr(File, '^');
|
|
if(psz_Temp)
|
|
{
|
|
*psz_Temp = '\0';
|
|
strcat(Path, File);
|
|
chmod(Path, _S_IWRITE);
|
|
unlink(Path);
|
|
}
|
|
bLoadQuickSaveFile = FALSE;
|
|
}
|
|
}
|
|
|
|
if(bLoadQuickSaveFile)
|
|
p_stValues=SCR_fnp_st_RdL0_AnalyseSection(M_MAKECHAR(csSectionNameQS),SCR_CDF_uw_Anl_Normal);
|
|
else
|
|
p_stValues=SCR_fnp_st_RdL0_AnalyseSection(M_MAKECHAR(csSectionName),SCR_CDF_uw_Anl_Normal);
|
|
|
|
//Loads Declaration
|
|
csFileName=csModelName+g_c_csDeclarationFileExtension;
|
|
csFileNameQS=csModelName+g_c_csDeclarationFileExtensionQS;
|
|
csSectionName=csFileName+'^'+g_c_csDeclarationSectionName;
|
|
csSectionNameQS=csFileNameQS+'^'+g_c_csDeclarationSectionName;
|
|
|
|
SCR_M_RdL0_SetContextLong(1,0,(long)(((EdActors_EditorActorModel *)pclModel->m_fn_pclGetEditorActor())->m_pclBrain));
|
|
bQuickSaveFileExists=FALSE;
|
|
if(QuickSaveNoAll == FALSE)
|
|
bQuickSaveFileExists=SCR_fn_c_RdL0_IsSectionExists(M_MAKECHAR(csSectionNameQS));
|
|
if(bQuickSaveFileExists)
|
|
{
|
|
CString csMsg=csBaseMsg+csModelName+" model ?";
|
|
|
|
if((QuickSaveDeleteAll == FALSE)&&(bAsksQuestion))
|
|
{
|
|
int iRes = QuickSaveDialog(csMsg);
|
|
switch(iRes)
|
|
{
|
|
case IDYES: bLoadQuickSaveFile = TRUE; break;
|
|
case IDNO: bLoadQuickSaveFile = FALSE; break;
|
|
case IDNOALL: bLoadQuickSaveFile = FALSE; QuickSaveNoAll = TRUE; break;
|
|
case IDDELETE: bLoadQuickSaveFile = FALSE; bDeleteQuick = TRUE; break;
|
|
case IDDELETEALL: bLoadQuickSaveFile = FALSE; bDeleteQuick = TRUE; QuickSaveDeleteAll = TRUE; break;
|
|
}
|
|
}
|
|
bAsksQuestion=FALSE;
|
|
|
|
if(bDeleteQuick || QuickSaveDeleteAll)
|
|
{
|
|
strcpy(Path, psz_Famil);
|
|
strcat(Path, "\\");
|
|
strcpy(File, (char *) (LPCSTR) csSectionNameQS);
|
|
psz_Temp = strrchr(File, '^');
|
|
if(psz_Temp)
|
|
{
|
|
*psz_Temp = '\0';
|
|
strcat(Path, File);
|
|
chmod(Path, _S_IWRITE);
|
|
unlink(Path);
|
|
}
|
|
bLoadQuickSaveFile = FALSE;
|
|
}
|
|
}
|
|
|
|
if(bLoadQuickSaveFile)
|
|
p_stValues=SCR_fnp_st_RdL0_AnalyseSection(M_MAKECHAR(csSectionNameQS),SCR_CDF_uw_Anl_Normal);
|
|
else
|
|
p_stValues=SCR_fnp_st_RdL0_AnalyseSection(M_MAKECHAR(csSectionName),SCR_CDF_uw_Anl_Normal);
|
|
|
|
//BEGIN ROMTEAM Cristi Petrescu 98-04-
|
|
//Loads Macros
|
|
csFileName=csModelName+g_c_csMacroFileExtension;
|
|
csFileNameQS=csModelName+g_c_csMacroFileExtensionQS;
|
|
csSectionName=csFileName+'^'+g_c_csMacroSectionName;
|
|
csSectionNameQS=csFileNameQS+'^'+g_c_csMacroSectionName;
|
|
|
|
SCR_M_RdL0_SetContextLong(1,0,(long)(((EdActors_EditorActorModel *)pclModel->m_fn_pclGetEditorActor())->m_pclBrain));
|
|
bQuickSaveFileExists=FALSE;
|
|
if(QuickSaveNoAll == FALSE)
|
|
bQuickSaveFileExists=SCR_fn_c_RdL0_IsSectionExists(M_MAKECHAR(csSectionNameQS));
|
|
if(bQuickSaveFileExists)
|
|
{
|
|
CString csMsg=csBaseMsg+csModelName+" model ?";
|
|
|
|
if((QuickSaveDeleteAll == FALSE)&&(bAsksQuestion))
|
|
{
|
|
int iRes = QuickSaveDialog(csMsg);
|
|
switch(iRes)
|
|
{
|
|
case IDYES: bLoadQuickSaveFile = TRUE; break;
|
|
case IDNO: bLoadQuickSaveFile = FALSE; break;
|
|
case IDNOALL: bLoadQuickSaveFile = FALSE; QuickSaveNoAll = TRUE; break;
|
|
case IDDELETE: bLoadQuickSaveFile = FALSE; bDeleteQuick = TRUE; break;
|
|
case IDDELETEALL: bLoadQuickSaveFile = FALSE; bDeleteQuick = TRUE; QuickSaveDeleteAll = TRUE; break;
|
|
}
|
|
}
|
|
bAsksQuestion=FALSE;
|
|
|
|
if(bDeleteQuick || QuickSaveDeleteAll)
|
|
{
|
|
strcpy(Path, psz_Famil);
|
|
strcat(Path, "\\");
|
|
strcpy(File, (char *) (LPCSTR) csSectionNameQS);
|
|
psz_Temp = strrchr(File, '^');
|
|
if(psz_Temp)
|
|
{
|
|
*psz_Temp = '\0';
|
|
strcat(Path, File);
|
|
chmod(Path, _S_IWRITE);
|
|
unlink(Path);
|
|
}
|
|
bLoadQuickSaveFile = FALSE;
|
|
}
|
|
}
|
|
|
|
if(bLoadQuickSaveFile)
|
|
{
|
|
if (SCR_fn_c_RdL0_IsSectionExists(M_MAKECHAR(csSectionNameQS)))
|
|
p_stValues=SCR_fnp_st_RdL0_AnalyseSection(M_MAKECHAR(csSectionNameQS),SCR_CDF_uw_Anl_Normal);
|
|
}
|
|
else
|
|
{
|
|
if (SCR_fn_c_RdL0_IsSectionExists(M_MAKECHAR(csSectionName)))
|
|
p_stValues=SCR_fnp_st_RdL0_AnalyseSection(M_MAKECHAR(csSectionName),SCR_CDF_uw_Anl_Normal);
|
|
}
|
|
|
|
//Loads Subrs
|
|
csFileName=csModelName+g_c_csSubrFileExtension;
|
|
csFileNameQS=csModelName+g_c_csSubrFileExtensionQS;
|
|
csSectionName=csFileName+'^'+g_c_csSubrSectionName;
|
|
csSectionNameQS=csFileNameQS+'^'+g_c_csSubrSectionName;
|
|
|
|
SCR_M_RdL0_SetContextLong(1,0,(long)(((EdActors_EditorActorModel *)pclModel->m_fn_pclGetEditorActor())->m_pclBrain));
|
|
bQuickSaveFileExists=FALSE;
|
|
if(QuickSaveNoAll == FALSE)
|
|
bQuickSaveFileExists=SCR_fn_c_RdL0_IsSectionExists(M_MAKECHAR(csSectionNameQS));
|
|
if(bQuickSaveFileExists)
|
|
{
|
|
CString csMsg=csBaseMsg+csModelName+" model ?";
|
|
|
|
if((QuickSaveDeleteAll == FALSE)&&(bAsksQuestion))
|
|
{
|
|
int iRes = QuickSaveDialog(csMsg);
|
|
switch(iRes)
|
|
{
|
|
case IDYES: bLoadQuickSaveFile = TRUE; break;
|
|
case IDNO: bLoadQuickSaveFile = FALSE; break;
|
|
case IDNOALL: bLoadQuickSaveFile = FALSE; QuickSaveNoAll = TRUE; break;
|
|
case IDDELETE: bLoadQuickSaveFile = FALSE; bDeleteQuick = TRUE; break;
|
|
case IDDELETEALL: bLoadQuickSaveFile = FALSE; bDeleteQuick = TRUE; QuickSaveDeleteAll = TRUE; break;
|
|
}
|
|
}
|
|
bAsksQuestion=FALSE;
|
|
|
|
if(bDeleteQuick || QuickSaveDeleteAll)
|
|
{
|
|
strcpy(Path, psz_Famil);
|
|
strcat(Path, "\\");
|
|
strcpy(File, (char *) (LPCSTR) csSectionNameQS);
|
|
psz_Temp = strrchr(File, '^');
|
|
if(psz_Temp)
|
|
{
|
|
*psz_Temp = '\0';
|
|
strcat(Path, File);
|
|
chmod(Path, _S_IWRITE);
|
|
unlink(Path);
|
|
}
|
|
bLoadQuickSaveFile = FALSE;
|
|
}
|
|
}
|
|
|
|
if(bLoadQuickSaveFile)
|
|
{
|
|
if (SCR_fn_c_RdL0_IsSectionExists(M_MAKECHAR(csSectionNameQS)))
|
|
p_stValues=SCR_fnp_st_RdL0_AnalyseSection(M_MAKECHAR(csSectionNameQS),SCR_CDF_uw_Anl_Normal);
|
|
}
|
|
else
|
|
{
|
|
if (SCR_fn_c_RdL0_IsSectionExists(M_MAKECHAR(csSectionName)))
|
|
p_stValues=SCR_fnp_st_RdL0_AnalyseSection(M_MAKECHAR(csSectionName),SCR_CDF_uw_Anl_Normal);
|
|
}
|
|
//END ROMTEAM Cristi Petrescu 98-04-
|
|
}
|
|
/* } END CHRISTOPHE QUICK SAVE MODIFICATIONS */
|
|
|
|
/**********************************************************************************/
|
|
SCR_tde_Anl_ReturnValue CPA_EdIR_Frame::m_fn_tdeCallBackLoadIntelligence(SCR_tdst_File_Description *pfFile,
|
|
char *szAction,
|
|
char *szPars[],
|
|
SCR_tde_Anl_Action eType)
|
|
{
|
|
if(eType==SCR_EA_Anl_BeginSection)
|
|
{
|
|
CPA_EdIR_Brain *p_clBrain;
|
|
SCR_M_RdL0_GetContextLong(0,0,CPA_EdIR_Brain *,p_clBrain);
|
|
|
|
SCR_M_RdL0_SetContextLong(1,0,long(&(p_clBrain->m_clListOfIntelligenceBehaviours)));
|
|
SCR_M_RdL0_SetContextLong(1,1,long(p_clBrain->m_fn_pclGetModel()));
|
|
}
|
|
|
|
return SCR_ERV_Anl_NormalReturn;
|
|
}
|
|
|
|
/**********************************************************************************/
|
|
SCR_tde_Anl_ReturnValue CPA_EdIR_Frame::m_fn_tdeCallBackLoadReflex(SCR_tdst_File_Description *pfFile,
|
|
char *szAction,
|
|
char *szPars[],
|
|
SCR_tde_Anl_Action eType)
|
|
{
|
|
if(eType==SCR_EA_Anl_BeginSection)
|
|
{
|
|
CPA_EdIR_Brain *p_clBrain;
|
|
SCR_M_RdL0_GetContextLong(0,0,CPA_EdIR_Brain *,p_clBrain);
|
|
|
|
SCR_M_RdL0_SetContextLong(1,0,long(&(p_clBrain->m_clListOfReflexBehaviours)));
|
|
SCR_M_RdL0_SetContextLong(1,1,long(p_clBrain->m_fn_pclGetModel()));
|
|
}
|
|
|
|
return SCR_ERV_Anl_NormalReturn;
|
|
}
|
|
|
|
/**********************************************************************************/
|
|
SCR_tde_Anl_ReturnValue CPA_EdIR_Frame::m_fn_tdeCallBackLoadDeclaration(SCR_tdst_File_Description *pfFile,
|
|
char *szAction,
|
|
char *szPars[],
|
|
SCR_tde_Anl_Action eType)
|
|
{
|
|
if(eType==SCR_EA_Anl_BeginSection)
|
|
{
|
|
CPA_EdIR_Brain *p_clBrain;
|
|
SCR_M_RdL0_GetContextLong(0,0,CPA_EdIR_Brain *,p_clBrain);
|
|
|
|
SCR_M_RdL0_SetContextLong(1,0,long(&(p_clBrain->m_clListOfDeclarations)));
|
|
SCR_M_RdL0_SetContextLong(1,1,long(p_clBrain->m_fn_pclGetModel()));
|
|
}
|
|
|
|
return SCR_ERV_Anl_NormalReturn;
|
|
}
|
|
|
|
// BEGIN CPA2 Cristi Petrescu 98-03-
|
|
/**********************************************************************************/
|
|
SCR_tde_Anl_ReturnValue CPA_EdIR_Frame::m_fn_tdeCallBackLoadMacro(SCR_tdst_File_Description *pfFile,
|
|
char *szAction,
|
|
char *szPars[],
|
|
SCR_tde_Anl_Action eType)
|
|
{
|
|
if(eType==SCR_EA_Anl_BeginSection)
|
|
{
|
|
CPA_EdIR_Brain *p_clBrain;
|
|
SCR_M_RdL0_GetContextLong(0,0,CPA_EdIR_Brain *,p_clBrain);
|
|
|
|
SCR_M_RdL0_SetContextLong(1,0,long(&(p_clBrain->m_clListOfMacros)));
|
|
SCR_M_RdL0_SetContextLong(1,1,long(p_clBrain->m_fn_pclGetModel()));
|
|
}
|
|
|
|
return SCR_ERV_Anl_NormalReturn;
|
|
}
|
|
// END CPA2 Cristi Petrescu 98-03-
|
|
|
|
// BEGIN ROMTEAM CPA2 Cristi Petrescu 98-04-
|
|
/**********************************************************************************/
|
|
SCR_tde_Anl_ReturnValue CPA_EdIR_Frame::m_fn_tdeCallBackLoadSubr(SCR_tdst_File_Description *pfFile,
|
|
char *szAction,
|
|
char *szPars[],
|
|
SCR_tde_Anl_Action eType)
|
|
{
|
|
if(eType==SCR_EA_Anl_BeginSection)
|
|
{
|
|
CPA_EdIR_Brain *p_clBrain;
|
|
SCR_M_RdL0_GetContextLong(0,0,CPA_EdIR_Brain *,p_clBrain);
|
|
|
|
SCR_M_RdL0_SetContextLong(1,0,long(&(p_clBrain->m_clListOfSubrs)));
|
|
SCR_M_RdL0_SetContextLong(1,1,long(p_clBrain->m_fn_pclGetModel()));
|
|
}
|
|
|
|
return SCR_ERV_Anl_NormalReturn;
|
|
}
|
|
// END ROMTEAM CPA2 Cristi Petrescu 98-04-
|
|
|
|
/**********************************************************************************/
|
|
SCR_tde_Anl_ReturnValue CPA_EdIR_Frame::m_fn_tdeCreateMainBehaviour(SCR_tdst_File_Description *pfFile,
|
|
char *szAction,
|
|
char *szPars[],
|
|
SCR_tde_Anl_Action eType)
|
|
{
|
|
static CPA_EdIR_MainBehaviour *s_pclMainBehaviour;
|
|
static CString s_csLanguage;
|
|
|
|
if(eType==SCR_EA_Anl_BeginSection)
|
|
{
|
|
CPA_Actor *pclModel;
|
|
SCR_M_RdL0_GetContextLong(0,1,CPA_Actor *,pclModel);
|
|
|
|
s_pclMainBehaviour=new CPA_EdIR_MainBehaviour(pclModel);
|
|
|
|
s_csLanguage="French";
|
|
}
|
|
else
|
|
if(eType==SCR_EA_Anl_Entry)
|
|
{
|
|
if(strcmpi(szAction,g_c_csBehaviourLanguage)==0)
|
|
{
|
|
s_csLanguage=szPars[0];
|
|
}
|
|
else
|
|
if(strcmpi(szAction,g_c_csBehaviourName)==0)
|
|
{
|
|
if(s_pclMainBehaviour->fn_eRename(CString(szPars[0]))!=E_mc_None)
|
|
s_pclMainBehaviour->SetDefaultUniqueName();
|
|
}
|
|
else
|
|
if(strcmpi(szAction,g_c_csBehaviourBoundingBox)==0)
|
|
{
|
|
s_pclMainBehaviour->m_crPosition.left=atol(szPars[0]);
|
|
s_pclMainBehaviour->m_crPosition.top=atol(szPars[1]);
|
|
s_pclMainBehaviour->m_crPosition.right=atol(szPars[2]);
|
|
s_pclMainBehaviour->m_crPosition.bottom=atol(szPars[3]);
|
|
}
|
|
else
|
|
if(strcmpi(szAction,g_c_csBehaviourText)==0)
|
|
{
|
|
//Old file format
|
|
if(SCR_fn_uc_RdL0_GetNumberOfParameters(szPars)==3)
|
|
{
|
|
CFile cfFile;
|
|
CString csFileName;
|
|
|
|
csFileName=fn_szGetFamiliesDataPath()+CString("\\")+
|
|
CString(szPars[0]);
|
|
|
|
if(cfFile.Open(csFileName,CFile::modeRead))
|
|
{
|
|
long lOffset=atol(szPars[1]);
|
|
long lLen=atol(szPars[2]);
|
|
char *p_cBuf=new char[lLen+1];
|
|
|
|
cfFile.Seek(lOffset,CFile::begin);
|
|
cfFile.Read(p_cBuf,lLen);
|
|
p_cBuf[lLen]=0;
|
|
|
|
s_pclMainBehaviour->m_csText=p_cBuf;
|
|
|
|
delete[] p_cBuf;
|
|
|
|
cfFile.Close();
|
|
}
|
|
}
|
|
//New file format
|
|
else
|
|
{
|
|
CString csLine=CString(szPars[0]);
|
|
csLine=fn_csReplaceChar(csLine,'\'','\"');
|
|
s_pclMainBehaviour->m_csText+=csLine+"\xD\xA";
|
|
}
|
|
}
|
|
}
|
|
else
|
|
if(eType==SCR_EA_Anl_EndSection)
|
|
{
|
|
CPA_EdIR_MainBehaviourList *p_clMainBehaviourList;
|
|
SCR_M_RdL0_GetContextLong(0,0,CPA_EdIR_MainBehaviourList *,p_clMainBehaviourList);
|
|
|
|
//Deletes the last "\xD\xA" sequence
|
|
if(s_pclMainBehaviour->m_csText.Right(2).CompareNoCase("\xD\xA")==0)
|
|
s_pclMainBehaviour->m_csText=s_pclMainBehaviour->m_csText.Left(s_pclMainBehaviour->m_csText.GetLength()-2);
|
|
|
|
//Translates text if needed
|
|
CString csCurrentLanguage=g_pclAIInterface->M_GetMainWorld()->GetInterface()->fn_csGetCurrentLanguage();
|
|
if(s_csLanguage!=csCurrentLanguage)
|
|
{
|
|
//s_pclMainBehaviour->m_csText=fn_csTranslateText(s_pclMainBehaviour->m_csText,csCurrentLanguage);
|
|
s_pclMainBehaviour->m_csText=fn_csFastTranslateText(s_pclMainBehaviour->m_csText,s_csLanguage,csCurrentLanguage);
|
|
}
|
|
|
|
p_clMainBehaviourList->AddTail(s_pclMainBehaviour);
|
|
}
|
|
|
|
return SCR_ERV_Anl_NormalReturn;
|
|
}
|
|
|
|
//#endif //D_ED_IR_ACTIVE
|