363 lines
11 KiB
C++
363 lines
11 KiB
C++
// Classes for the Editor tree
|
|
//
|
|
// YB
|
|
//////////////////////////////////////////////
|
|
|
|
//BEGIN ROMTEAM Cristi Petrescu 98-05-
|
|
#include "StdAfx.h"
|
|
#define HieFriend
|
|
|
|
#include "IADEdttr.hpp"
|
|
|
|
#include "IADEdtTr.hpp"
|
|
#include "IADLnkMt.hpp"
|
|
#include "_IADItrf.hpp"
|
|
#include "IADVwRst.hpp"
|
|
#include "IAD_Res.h"
|
|
#include "x:/cpa/tempgrp/tia/inc/ai_intf.hpp"
|
|
#include "x:/cpa/main/inc/_EditId.h"
|
|
|
|
//External Modules
|
|
#include "OAc.h"
|
|
//End of External Modules
|
|
|
|
//END ROMTEAM Cristi Petrescu 98-05-
|
|
|
|
//*********************************************************************
|
|
//Constructor
|
|
// BEGIN ROMTEAM Cristi Petrescu 98-06-
|
|
IAD_EditorTreeNode::IAD_EditorTreeNode(enum AIDebug_tdeSectionType_ _tdeNodeType,
|
|
tdstNodeInterpret *_p_stNode,
|
|
CPA_Actor *_pclParentActor,
|
|
IAD_EditorTreeNode *_pclParentNode,
|
|
short _wDepth,
|
|
CString _csNodeType,
|
|
CString _csNodeName /*= ""*/,
|
|
CString _csValue /*= ""*/,
|
|
CString _csReturnValue /*= ""*/,
|
|
CString _csNodeAdditionnalInfo /*= ""*/,
|
|
BOOL bSubtreeBuilded /*= TRUE*/,
|
|
unsigned short uwSubtreeTraceIndex /*= -1*/)
|
|
// END ROMTEAM Cristi Petrescu 98-06-
|
|
{
|
|
m_pro_tdeNodeType = _tdeNodeType;
|
|
m_p_stMotorNode = _p_stNode;
|
|
m_pri_pclParentActor = _pclParentActor;
|
|
|
|
m_pro_pclParentNode = _pclParentNode;
|
|
m_pro_wDepth = _wDepth;
|
|
m_pro_csNodeType = _csNodeType;
|
|
m_pro_csNodeName = _csNodeName;
|
|
m_pro_csReturnValue = _csReturnValue;
|
|
m_pro_csValue = _csValue;
|
|
|
|
m_pro_csNodeAdditionnalInfo = _csNodeAdditionnalInfo;
|
|
|
|
m_pro_csCompleteString = m_pri_fn_csComputeTotalName();
|
|
|
|
m_pro_hTreeItem = NULL;
|
|
|
|
// BEGIN ROMTEAM Cristi Petrescu 98-06-
|
|
m_bSubtreeBuilded = bSubtreeBuilded;
|
|
m_uwSubtreeTraceIndex = uwSubtreeTraceIndex;
|
|
|
|
m_lNumberOfVariableValues = 0;
|
|
m_a_tdstArrayOfVariableValues = NULL;
|
|
// END ROMTEAM Cristi Petrescu 98-06-
|
|
}
|
|
|
|
//*********************************************************************
|
|
//Empty Constructor for Root
|
|
IAD_EditorTreeNode::IAD_EditorTreeNode()
|
|
{
|
|
// CG PB DEBUGGER 23/06/98 {
|
|
#ifdef ACTIVE_AIDEBUG
|
|
m_pro_tdeNodeType = (enum AIDebug_tdeSectionType_)AI_DEBUGGER_CONSTANT_FOR_TREE_ROOT_ID;
|
|
#endif // CG PB DEBUGGER }
|
|
|
|
m_pro_pclParentNode = NULL;
|
|
m_pro_wDepth = IAD_NODE_DEPTH_UNKNOWN;
|
|
m_pro_csNodeType = "** Root **";
|
|
m_pro_csNodeAdditionnalInfo = "";
|
|
|
|
// BEGIN ROMTEAM Cristi Petrescu 98-06-
|
|
m_bSubtreeBuilded = TRUE;
|
|
m_uwSubtreeTraceIndex = -1;
|
|
|
|
m_lNumberOfVariableValues = 0;
|
|
m_a_tdstArrayOfVariableValues = NULL;
|
|
// END ROMTEAM Cristi Petrescu 98-06-
|
|
}
|
|
|
|
//*********************************************************************
|
|
//Destructor
|
|
IAD_EditorTreeNode::~IAD_EditorTreeNode()
|
|
{
|
|
// BEGIN ROMTEAM Cristi Petrescu 98-06-
|
|
if (m_a_tdstArrayOfVariableValues != NULL)
|
|
free (m_a_tdstArrayOfVariableValues);
|
|
// END ROMTEAM Cristi Petrescu 98-06-
|
|
}
|
|
|
|
//////////////////////
|
|
// Public Functions //
|
|
//////////////////////
|
|
|
|
//Get/Set functions
|
|
////////////////////
|
|
|
|
//*********************************************************************
|
|
IAD_tdListOfNodes *IAD_EditorTreeNode::m_pub_fn_ptdGetListOfChildNodes()
|
|
{
|
|
return &m_pro_clListOfChildNodes;
|
|
}
|
|
|
|
//BEGIN ROMTEAM Cristi Petrescu 98-05-
|
|
//*********************************************************************
|
|
void IAD_EditorTreeNode::m_fn_vSetListOfChildNodes (IAD_tdListOfNodes *pclListOfChildNodes)
|
|
{
|
|
// cleaning
|
|
IAD_EditorTreeNode *pclWasteNode;
|
|
POSITION pos = m_pro_clListOfChildNodes . GetHeadPosition ();
|
|
while (pos != NULL)
|
|
{
|
|
pclWasteNode = m_pro_clListOfChildNodes . GetNext (pos);
|
|
// BEGIN ROMTEAM Cristi Petrescu 98-06-
|
|
if (! pclListOfChildNodes -> Find (pclWasteNode))
|
|
delete pclWasteNode;
|
|
// END ROMTEAM Cristi Petrescu 98-06-
|
|
}
|
|
m_pro_clListOfChildNodes . RemoveAll ();
|
|
|
|
// add the new ones
|
|
pos = pclListOfChildNodes -> GetHeadPosition ();
|
|
while (pos != NULL)
|
|
{
|
|
m_pro_clListOfChildNodes . AddTail (pclListOfChildNodes -> GetNext (pos));
|
|
}
|
|
}
|
|
//END ROMTEAM Cristi Petrescu 98-05-
|
|
|
|
//*********************************************************************
|
|
IAD_EditorTreeNode *IAD_EditorTreeNode::m_pub_fn_pclGetParentNode()
|
|
{
|
|
return m_pro_pclParentNode;
|
|
}
|
|
|
|
//BEGIN ROMTEAM Cristi Petrescu 98-05-
|
|
//*********************************************************************
|
|
IAD_EditorTreeNode *IAD_EditorTreeNode::m_fn_pclGetBehaviourParentNode()
|
|
{
|
|
// CG PB DEBUGGER 23/06/98 {
|
|
#ifdef ACTIVE_AIDEBUG
|
|
|
|
IAD_EditorTreeNode *pclBehaviourNode = this;
|
|
|
|
while (pclBehaviourNode && pclBehaviourNode -> m_pub_fn_tdeGetNodeType () != AIDebug_E_SecTyp_ReflexOrAI)
|
|
{
|
|
pclBehaviourNode = pclBehaviourNode -> m_pub_fn_pclGetParentNode ();
|
|
}
|
|
|
|
return pclBehaviourNode;
|
|
|
|
#else
|
|
return NULL;
|
|
#endif
|
|
// CG PB DEBUGGER
|
|
}
|
|
|
|
//*********************************************************************
|
|
void IAD_EditorTreeNode::m_fn_vAddExecutedNodes (void)
|
|
{
|
|
// CG PB DEBUGGER 23/06/98 {
|
|
#ifdef ACTIVE_AIDEBUG
|
|
// for me
|
|
if (m_pro_tdeNodeType != AIDebug_E_SecTyp_ReflexOrAI)
|
|
{
|
|
m_pri_pclParentActor -> m_fn_vSetOneExecutedNode (m_p_stMotorNode);
|
|
}
|
|
#endif
|
|
// CG PB DEBUGGER
|
|
|
|
// and for all the childs
|
|
IAD_EditorTreeNode *pclChildNode;
|
|
|
|
POSITION pos = m_pro_clListOfChildNodes . GetHeadPosition ();
|
|
while (pos != NULL)
|
|
{
|
|
pclChildNode = m_pro_clListOfChildNodes . GetNext (pos);
|
|
pclChildNode -> m_fn_vAddExecutedNodes ();
|
|
}
|
|
}
|
|
//END ROMTEAM Cristi Petrescu 98-05-
|
|
|
|
// BEGIN ROMTEAM Cristi Petrescu 98-06-
|
|
//*********************************************************************
|
|
IAD_EditorTreeNode *IAD_EditorTreeNode::m_fn_pclGetEngineLoopParentNode()
|
|
{
|
|
IAD_EditorTreeNode *pclBehaviourNode = this;
|
|
|
|
while (pclBehaviourNode && pclBehaviourNode -> m_pub_fn_tdeGetNodeType () != AIDebug_E_SecTyp_EngineLoop)
|
|
{
|
|
pclBehaviourNode = pclBehaviourNode -> m_pub_fn_pclGetParentNode ();
|
|
}
|
|
|
|
ASSERT (pclBehaviourNode);
|
|
return pclBehaviourNode;
|
|
}
|
|
// END ROMTEAM Cristi Petrescu 98-06-
|
|
|
|
//*********************************************************************
|
|
tdstNodeInterpret *IAD_EditorTreeNode::m_pub_fn_p_stGetMotorNode()
|
|
{
|
|
return m_p_stMotorNode;
|
|
}
|
|
|
|
//*********************************************************************
|
|
CPA_Actor *IAD_EditorTreeNode::m_pub_fn_pclGetParentActor()
|
|
{
|
|
return m_pri_pclParentActor;
|
|
}
|
|
|
|
//*********************************************************************
|
|
short IAD_EditorTreeNode::m_pub_fn_wGetDepth()
|
|
{
|
|
return m_pro_wDepth;
|
|
}
|
|
|
|
//*********************************************************************
|
|
HTREEITEM IAD_EditorTreeNode::m_pub_fn_hGetTreeItem()
|
|
{
|
|
return m_pro_hTreeItem;
|
|
}
|
|
|
|
//*********************************************************************
|
|
void IAD_EditorTreeNode::m_pub_fn_vSetTreeItem(HTREEITEM _hTreeItem)
|
|
{
|
|
m_pro_hTreeItem = _hTreeItem;
|
|
}
|
|
|
|
//*********************************************************************
|
|
enum AIDebug_tdeSectionType_ IAD_EditorTreeNode::m_pub_fn_tdeGetNodeType()
|
|
{
|
|
return m_pro_tdeNodeType;
|
|
}
|
|
|
|
//*********************************************************************
|
|
CString IAD_EditorTreeNode::m_pub_fn_csGetNodeType()
|
|
{
|
|
return m_pro_csNodeType;
|
|
}
|
|
|
|
//*********************************************************************
|
|
CString IAD_EditorTreeNode::m_pub_fn_csGetNodeName()
|
|
{
|
|
return m_pro_csNodeName;
|
|
}
|
|
|
|
//*********************************************************************
|
|
CString IAD_EditorTreeNode::m_pub_fn_csGetNodeValue()
|
|
{
|
|
return m_pro_csValue;
|
|
}
|
|
|
|
//*********************************************************************
|
|
CString IAD_EditorTreeNode::m_pub_fn_csGetNodeReturnValue()
|
|
{
|
|
return m_pro_csReturnValue;
|
|
}
|
|
|
|
//*********************************************************************
|
|
CString IAD_EditorTreeNode::m_pub_fn_csGetNodeAdditionnalInfo()
|
|
{
|
|
return m_pro_csNodeAdditionnalInfo;
|
|
}
|
|
|
|
//*********************************************************************
|
|
void IAD_EditorTreeNode::m_pub_fn_vSetNodeAdditionnalInfo(CString _csNewNodeInfo)
|
|
{
|
|
m_pro_csNodeAdditionnalInfo = _csNewNodeInfo;
|
|
}
|
|
|
|
//*********************************************************************
|
|
CString IAD_EditorTreeNode::m_pub_fn_csGetCompleteString()
|
|
{
|
|
return m_pro_csCompleteString;
|
|
}
|
|
|
|
|
|
//Tree construction
|
|
////////////////////
|
|
|
|
//*********************************************************************
|
|
IAD_EditorTreeNode *IAD_EditorTreeNode::m_pub_fn_pclAddChildNode(enum AIDebug_tdeSectionType_ _tdeNodeType,
|
|
tdstNodeInterpret *_p_stNode,
|
|
CPA_Actor *_pclParentActor,
|
|
CString _csNewElementType,
|
|
CString _csNewElementName,
|
|
CString _csNewElementValue,
|
|
CString _csNewElemenReturnValue,
|
|
CString _csNodeAdditionnalInfo)
|
|
{
|
|
IAD_EditorTreeNode *pclNewNode = new IAD_EditorTreeNode(_tdeNodeType,
|
|
_p_stNode,
|
|
_pclParentActor,
|
|
this,
|
|
m_pub_fn_wGetDepth() + 1,
|
|
_csNewElementType,
|
|
_csNewElementName,
|
|
_csNewElementValue,
|
|
_csNewElemenReturnValue,
|
|
_csNodeAdditionnalInfo);
|
|
//Adds to internal list
|
|
m_pro_clListOfChildNodes.AddTail(pclNewNode);
|
|
|
|
return pclNewNode;
|
|
}
|
|
|
|
// BEGIN ROMTEAM Cristi Petrescu 98-06-
|
|
// Description: this function add a new variable value to a given node
|
|
// Note: it uses dinamic reallocation of the array of values
|
|
//*********************************************************************
|
|
#define BLOCK_INCREMENT 20
|
|
void IAD_EditorTreeNode :: m_fn_vAddVariableValue (tdstGetSetParam *p_tdstValue)
|
|
{
|
|
// realloc
|
|
if (m_lNumberOfVariableValues % BLOCK_INCREMENT == 0)
|
|
m_a_tdstArrayOfVariableValues = (tdstGetSetParam *) realloc (m_a_tdstArrayOfVariableValues, (m_lNumberOfVariableValues + BLOCK_INCREMENT) * sizeof (tdstGetSetParam));
|
|
|
|
if (m_a_tdstArrayOfVariableValues)
|
|
m_a_tdstArrayOfVariableValues [m_lNumberOfVariableValues ++] = * p_tdstValue;
|
|
}
|
|
#undef BLOCK_INCREMENT
|
|
|
|
//*********************************************************************
|
|
tdstGetSetParam * IAD_EditorTreeNode :: m_fn_p_tdstGetVariableValue (long lIndex)
|
|
{
|
|
if (lIndex >= 0 && lIndex < m_lNumberOfVariableValues)
|
|
return & m_a_tdstArrayOfVariableValues [lIndex];
|
|
else
|
|
return NULL;
|
|
}
|
|
// END ROMTEAM Cristi Petrescu 98-06-
|
|
|
|
////////////////////////
|
|
// Private Functions //
|
|
////////////////////////
|
|
|
|
//*********************************************************************
|
|
CString IAD_EditorTreeNode::m_pri_fn_csComputeTotalName()
|
|
{
|
|
CString csTotalName = m_pro_csNodeType;
|
|
|
|
if ( !m_pro_csNodeName.IsEmpty() )
|
|
csTotalName += CString(" ") + m_pro_csNodeName;
|
|
if ( !m_pro_csValue.IsEmpty() )
|
|
csTotalName += CString(" = ") + m_pro_csValue;
|
|
if ( !m_pro_csReturnValue.IsEmpty() )
|
|
csTotalName += CString(" [ returns ") + m_pro_csReturnValue + " ]";
|
|
|
|
return csTotalName;
|
|
}
|
|
|