reman3/Rayman_X/cpa/tempgrp/TIA/Src/EdIRBeEn.cpp

304 lines
8.0 KiB
C++

// EdIRBeEn.cpp : implementation file
//
#include "stdafx.h"
#include "Defines.hpp"
#ifdef D_ED_IR_ACTIVE
#include "EdIRBeEn.hpp"
#include "EdIRBvw.hpp"
#include "EdIRBeha.hpp"
#include "EdIRFrm.hpp"
#include "EdIRIRD.hpp"
#include "EdIRStrg.hpp"
#include "x:\cpa\main\inc\_EditID.h"
#include "ai_intf.hpp" //for g_pclAIInterface
#define C_BEHAVIOUR_TITLE_LINE "/************************************************************/\n"
#define C_BEHAVIOUR_TITLE_TEMPLATE "/* */\n"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
//////////////////////////////////////////////////////////////////
// class CPA_EdIR_MainBehaviour
//////////////////////////////////////////////////////////////////
/****************************************************************************/
CPA_EdIR_MainBehaviour::CPA_EdIR_MainBehaviour(CPA_Actor *pclActor)
:CPA_BaseObject(g_pclAIInterface,C_szIABehaviourTypeName,(CPA_BaseObject *)pclActor)
{
//m_csName ="";
m_crPosition =CRect(0,0,0,0);
m_csText ="";
m_pclBehaviour =NULL;
m_bHasBeenModified =FALSE;
//BEGIN ROMTEAM Cristi Petrescu 98-05-
m_clDebugInfoList . RemoveAll ();
//END ROMTEAM Cristi Petrescu 98-05-
}
/****************************************************************************/
CPA_EdIR_MainBehaviour::CPA_EdIR_MainBehaviour(CPA_Actor *pclActor,CString csName,CRect crPosition,CString csText,CPA_EdIR_Behaviour *pclBehaviour)
:CPA_BaseObject(g_pclAIInterface,C_szIABehaviourTypeName,(CPA_BaseObject *)pclActor)
{
//m_csName=csName;
if(fn_eRename(csName)!=E_mc_None)
SetDefaultUniqueName();
m_crPosition=crPosition;
m_csText=csText;
m_pclBehaviour=pclBehaviour;
//BEGIN ROMTEAM Cristi Petrescu 98-05-
m_clDebugInfoList .RemoveAll ();
//END ROMTEAM Cristi Petrescu 98-05-
}
/****************************************************************************/
CPA_EdIR_MainBehaviour::CPA_EdIR_MainBehaviour(CPA_Actor *pclActor,CPA_EdIR_MainBehaviour &clMainBehaviour)
:CPA_BaseObject(g_pclAIInterface,C_szIABehaviourTypeName,(CPA_BaseObject *)pclActor)
{
if(clMainBehaviour.m_pclBehaviour!=NULL)
{
//In order to skip prefix checking
BOOL bIsLoadingWorld=g_pclAIInterface->GetInterface()->fn_bIsLoadingWorld();
g_pclAIInterface->GetInterface()->SetLoadingWorld(TRUE);
//m_csName=clMainBehaviour.m_pclBehaviour->m_fn_csGetName();
if(fn_eRename(clMainBehaviour.m_pclBehaviour->m_fn_csGetName())!=E_mc_None)
SetDefaultUniqueName();
g_pclAIInterface->GetInterface()->SetLoadingWorld(bIsLoadingWorld);
m_crPosition=clMainBehaviour.m_pclBehaviour->m_fn_crGetBoundingBox();
m_csText=clMainBehaviour.m_pclBehaviour->m_fn_csGetRules();
m_pclBehaviour=NULL;
}
else
{
//In order to skip prefix checking
BOOL bIsLoadingWorld=g_pclAIInterface->GetInterface()->fn_bIsLoadingWorld();
g_pclAIInterface->GetInterface()->SetLoadingWorld(TRUE);
if(fn_eRename(clMainBehaviour.GetName())!=E_mc_None)
SetDefaultUniqueName();
g_pclAIInterface->GetInterface()->SetLoadingWorld(bIsLoadingWorld);
m_crPosition=clMainBehaviour.m_crPosition;
m_csText=clMainBehaviour.m_csText;
m_pclBehaviour=NULL;
}
//BEGIN ROMTEAM Cristi Petrescu 98-05-
m_clDebugInfoList . RemoveAll ();
//END ROMTEAM Cristi Petrescu 98-05-
}
/****************************************************************************/
CPA_EdIR_MainBehaviour::~CPA_EdIR_MainBehaviour()
{
delete m_pclBehaviour;
//BEGIN ROMTEAM Cristi Petrescu 98-05-
m_clDebugInfoList . RemoveAll ();
//END ROMTEAM Cristi Petrescu 98-05-
}
/****************************************************************************/
long CPA_EdIR_MainBehaviour::GetDataType(void)
{
return 0;
}
/****************************************************************************/
void *CPA_EdIR_MainBehaviour::GetData(void)
{
return NULL;
}
/****************************************************************************/
tdeMissingCriteria CPA_EdIR_MainBehaviour::fn_eCheckUnicity(const CString csName)
{
if(csName==g_c_csDsgVarName ||
csName==g_c_csMacroName)
{
return E_mc_None;
}
else
{
return fn_eCheckUnicityWithOwner(csName);
}
}
/****************************************************************************/
void CPA_EdIR_MainBehaviour::m_fn_vUpdateBehaviour(CPA_EdIR_DiagView *pclDiagView,BOOL bDeclarationMode)
{
if(m_pclBehaviour==NULL)
{
m_pclBehaviour=pclDiagView->m_fn_pclAddOneBehaviour(GetName(),m_crPosition,m_csText,bDeclarationMode,0);
m_pclBehaviour->m_fn_vSetMainBehaviour(this);
}
}
/****************************************************************************/
CString CPA_EdIR_MainBehaviour::m_fn_csGetBehaviourTitle()
{
CString csTitle;
CString csName;
csTitle+=C_BEHAVIOUR_TITLE_LINE;
csTitle+=C_BEHAVIOUR_TITLE_TEMPLATE;
csTitle+=C_BEHAVIOUR_TITLE_LINE;
csName=GetName();
int iStart=strlen(C_BEHAVIOUR_TITLE_LINE)+
(strlen(C_BEHAVIOUR_TITLE_TEMPLATE)-csName.GetLength())/2;
for(int iCpt=0;iCpt<csName.GetLength();iCpt++)
{
csTitle.SetAt(iStart+iCpt,csName[iCpt]);
}
return csTitle;
}
/****************************************************************************/
long CPA_EdIR_MainBehaviour::m_fn_lGetNbLines()
{
CString csText;
csText+=m_fn_csGetBehaviourTitle();
csText+=m_csText;
long lNbLines=0;
long lIndex;
while((lIndex=csText.Find('\n'))!=-1)
{
csText=csText.Right(csText.GetLength()-lIndex-1);
lNbLines++;
}
return lNbLines+1;
}
/****************************************************************************/
long CPA_EdIR_MainBehaviour::m_fn_lGetNbPages(long lLineHeight,
long lPageHeight)
{
long lNbLines=m_fn_lGetNbLines();
long lNbPages=0;
long lNbLinesInAPage=lPageHeight/lLineHeight;
while(lNbLines>=0)
{
lNbLines-=lNbLinesInAPage;
lNbPages++;
}
return lNbPages;
}
/****************************************************************************/
CString CPA_EdIR_MainBehaviour::m_fn_csGetTextToPrint(long lLineHeight,
long lPageHeight,
long lCurrentPage)
{
long lNbLines=m_fn_lGetNbLines();
long lNbLinesInAPage=lPageHeight/lLineHeight;
long lCurPage=1;
long lCurLine=0;
while(lCurPage!=lCurrentPage)
{
lCurLine+=lNbLinesInAPage;
lCurPage++;
}
return m_fn_csGetTextBetweenLines(lCurLine,lCurLine+lNbLinesInAPage-1);
}
/****************************************************************************/
CString CPA_EdIR_MainBehaviour::m_fn_csGetTextBetweenLines(long lLine1,long lLine2)
{
CString csText;
csText+=m_fn_csGetBehaviourTitle();
csText+=m_csText;
CString csTemp=csText;
long lCurLine=0;
long lIndex;
long lOldIndex=0;
long lStartIndex=-1;
long lEndIndex=-1;
while((lIndex=csTemp.Find('\n'))!=-1)
{
csTemp=csTemp.Right(csTemp.GetLength()-lIndex-1);
if(lCurLine==lLine1)
lStartIndex=lOldIndex;
if(lCurLine==lLine2)
lEndIndex=lOldIndex+lIndex+1;
lCurLine++;
//Adds lIndex+1 because '\n' is two character
lOldIndex+=lIndex+1;
}
if(lStartIndex==-1)
return "";
if(lEndIndex==-1)
lEndIndex=csText.GetLength();
else
lEndIndex--;
return csText.Mid(lStartIndex,lEndIndex-lStartIndex+1);
}
/****************************************************************************/
BOOL CPA_EdIR_MainBehaviour::m_fn_bHasBeenModified()
{
if(m_pclBehaviour)
return (m_bHasBeenModified||m_pclBehaviour->m_fn_bHasBeenModified());
else
return m_bHasBeenModified;
}
/****************************************************************************/
void CPA_EdIR_MainBehaviour::m_fn_vSetModified(BOOL bIsModified)
{
if(m_pclBehaviour)
m_pclBehaviour->m_fn_vSetModified(bIsModified);
m_bHasBeenModified=bIsModified;
}
//BEGIN ROMTEAM Cristi Petrescu 98-05-
//****************************************************************************
void CPA_EdIR_MainBehaviour::m_fn_vClearExecutedNodes (void)
{
POSITION pos = m_clDebugInfoList . GetHeadPosition ();
CPA_EdIR_DebugInfo *pclDebugInfo;
while (pos)
{
pclDebugInfo = m_clDebugInfoList . GetNext (pos);
pclDebugInfo -> m_fn_vSetExecuted (FALSE);
}
}
//END ROMTEAM Cristi Petrescu 98-05-
#endif //D_ED_IR_ACTIVE