reman3/Rayman_X/cpa/tempgrp/Ctl/Src/Data/CTL_Dat.cpp

304 lines
9.9 KiB
C++

// Implementation file for the definition of a characteristic base type
////////////////////////////////////////////////////////////////////////
#include "StdAfx.h"
#include "Data\CTL_Dat.hpp"
#include "Others\CTL_Pub.hpp"
#include "Others\CTL_Pri.hpp"
//External Modules
#include "CTL_ErO.hpp"
//End of External Modules
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
//Constructor / Destructor
//************************************************************************
CTL_Editor_Data::CTL_Editor_Data(CTL_tdeEditorDataType _tdeType,
CString _csDataName,
CTL_Editor_DataList *_pclParentList,
CTL_Editor_Data *_pclCurrentBaseData /*= NULL*/,
long _lUSerDefinedDataType /*= 0*/)
{
m_pro_tdeDataType = _tdeType;
m_pro_pvMotorData = NULL;
m_pri_pclParentList = _pclParentList;
m_pro_bDataHasChanged = TRUE;
m_pro_csDataName = _csDataName;
//Sets Initial and Current Data links
m_pclAssociatedCurrentData = NULL;
m_pclAssociatedInitialData = NULL;
m_pro_pclParentControl = NULL;
//If a current data corresponds to 'this' data, sets 'this' as the
// initial data of the other
if ( _pclCurrentBaseData != NULL )
{
m_fn_vSetAssociatedCurrentData(_pclCurrentBaseData);
m_pclAssociatedCurrentData->m_fn_vSetAssociatedInitialData(this);
}
m_pro_lUSerDefinedDataType = _lUSerDefinedDataType;
//CallBack functions
m_pro_td_p_fn_vDataHasChangedCallBack = CTL_g_p_fnDefaultCallBack_DataHasChanged;
m_pro_td_p_fn_vDataHasChangedSpecialCallBack = NULL;
m_pro_td_p_fn_vDataModifWhenRead = NULL;
m_pro_td_p_fn_vDataModifWhenWrite = NULL;
m_pro_td_p_fn_bDataMustBeRead = NULL;
m_pro_td_p_fn_bDataMustBeWritten = NULL;
}
//************************************************************************
CTL_Editor_Data::~CTL_Editor_Data()
{
// Removes from Watch Window if necessary
// if ( (g_pclInterface->m_pclWatchWindow != NULL)
// && (m_bIsInWatch)
// )
// g_pclInterface->m_pclWatchWindow->m_fn_vRemoveValue(this);
}
//Member functions
//**************************************************************************************
//Function called to Init the data
void CTL_Editor_Data::m_fn_vInitData()
{
}
// BEGIN ROMTEAM Cristi Petrescu 98-11-
#include "scr.h"
#include "ai/aibase/gsparam.h"
// END ROMTEAM Cristi Petrescu 98-11-
//************************************************************************
void CTL_Editor_Data::m_fn_vSetMotorDataPtr(void *p_vMotorData)
{
// BEGIN ROMTEAM Cristi Petrescu 98-11-
tduGetSetParam *p_TMotorData = (tduGetSetParam *)p_vMotorData;
// END ROMTEAM Cristi Petrescu 98-11-
m_pro_pvMotorData = p_vMotorData;
}
//************************************************************************
void *CTL_Editor_Data::m_fn_pvGetMotorDataPtr()
{
return m_pro_pvMotorData;
}
//*********************************************************************************
CTL_OwnerData *CTL_Editor_Data::m_pub_fn_pclAddOwnerData(void *_pvDataPtr,
CString _csName)
{
return m_pri_clListOfOwnerData.m_pub_fn_pclAddOwnerData(_pvDataPtr, _csName);
}
//*********************************************************************************
CTL_OwnerData *CTL_Editor_Data::m_pub_fn_pclAddOwnerData(long _lData,
CString _csName)
{
return m_pri_clListOfOwnerData.m_pub_fn_pclAddOwnerData(_lData, _csName);
}
//*********************************************************************************
CTL_OwnerData *CTL_Editor_Data::m_pub_fn_pclGetOwnerDataWithName(CString _csSearchedName)
{
return m_pri_clListOfOwnerData.m_pub_fn_pclFindOwnerDataWithName(_csSearchedName);
}
//*********************************************************************************
//Parent List of Data
CTL_Editor_DataList *CTL_Editor_Data::m_pub_fn_pclGetParentList()
{
return m_pri_pclParentList;
}
//*********************************************************************************
//User Defined Data type
long CTL_Editor_Data::m_pub_fn_lGetUSerDefinedDataType()
{
return m_pro_lUSerDefinedDataType;
}
//************************************************************************
CStringList *CTL_Editor_Data::m_fn_pcslFormatDataValueString()
{
m_csStringList.RemoveAll();
m_csStringList.AddTail("NO APPROPRIATE SAVING FOR THIS DATA !");
return &m_csStringList;
}
//************************************************************************
//Returns the name of the Data
CString CTL_Editor_Data::m_pub_fn_csGetDataName()
{
return m_pro_csDataName;
}
//************************************************************************
//Get/Set for the Parent Control
CTL_Editor_Control *CTL_Editor_Data::m_pub_fn_pclGetParentControl()
{
return m_pro_pclParentControl;
}
//************************************************************************
void CTL_Editor_Data::m_pub_fn_vSetParentControl(CTL_Editor_Control *_pclParentControl)
{
m_pro_pclParentControl = _pclParentControl;
}
//************************************************************************
//Get/Set for the pointer on motor's data
void *CTL_Editor_Data::m_pub_fn_pvGetMotorData()
{
return m_pro_pvMotorData;
}
//************************************************************************
void CTL_Editor_Data::m_pub_fn_vSetMotorData(void *_p_vMotorData)
{
m_pro_pvMotorData = _p_vMotorData;
}
//************************************************************************
//Indicates wether current value is different from the old one or not
// (used during motor run)
BOOL CTL_Editor_Data::m_pub_fn_bGetDataHasChanged()
{
return m_pro_bDataHasChanged;
}
//************************************************************************
void CTL_Editor_Data::m_pub_fn_vSetDataHasChanged(BOOL _bNewSate)
{
m_pro_bDataHasChanged = _bNewSate;
}
//************************************************************************
CTL_tdeEditorDataType CTL_Editor_Data::m_pub_fn_tdeGetDataType()
{
return m_pro_tdeDataType;
}
//Link between initial and current Data
//The associated current Data
//************************************************************************
BOOL CTL_Editor_Data::m_fn_bHasACurrentData()
{
return ( m_pclAssociatedCurrentData != NULL );
}
//************************************************************************
CTL_Editor_Data *CTL_Editor_Data::m_fn_pclGetAssociatedCurrentData()
{
return m_pclAssociatedCurrentData;
}
//************************************************************************
void CTL_Editor_Data::m_fn_vSetAssociatedCurrentData(CTL_Editor_Data *pclData)
{
ERROR_ASSERT( m_pro_tdeDataType == pclData->m_pro_tdeDataType );
m_pclAssociatedCurrentData = pclData;
}
//The associated Initial Data
//************************************************************************
BOOL CTL_Editor_Data::m_fn_bHasAnInitialData()
{
return ( m_pclAssociatedInitialData != NULL );
}
//************************************************************************
CTL_Editor_Data *CTL_Editor_Data::m_fn_pclGetAssociatedInitialData()
{
return m_pclAssociatedInitialData;
}
//************************************************************************
void CTL_Editor_Data::m_fn_vSetAssociatedInitialData(CTL_Editor_Data *pclData)
{
//This must be already done
ERROR_ASSERT( pclData->m_pclAssociatedCurrentData == this );
ERROR_ASSERT( m_pro_tdeDataType == pclData->m_pro_tdeDataType );
m_pclAssociatedInitialData = pclData;
}
//************************************************************************
//Set : CallBack function : called when Data has changed
void CTL_Editor_Data::m_pub_fn_vSetDataChangedCallBackFunction(CTL_td_p_fn_vCallBackWhenDataHasChanged _td_p_fn_vDataHasChangedCallBack)
{
ERROR_ASSERT( m_pro_td_p_fn_vDataHasChangedCallBack == NULL );
m_pro_td_p_fn_vDataHasChangedCallBack = _td_p_fn_vDataHasChangedCallBack;
}
//************************************************************************
//Set : CallBack function : called when Data has changed (specific for one type of Data)
void CTL_Editor_Data::m_pub_fn_vSetDataChangedSpecialCallBackFunction(CTL_td_p_fn_vCallBackWhenDataHasChanged _td_p_fn_vDataHasChangedSpecialCallBack)
{
ERROR_ASSERT( m_pro_td_p_fn_vDataHasChangedSpecialCallBack == NULL );
m_pro_td_p_fn_vDataHasChangedSpecialCallBack = _td_p_fn_vDataHasChangedSpecialCallBack;
}
//**************************************************************************************
void CTL_Editor_Data::m_fn_vDataHasBeenChanged(CTL_tdeUpdateReason _eReason,
long _lUserDefinedReason /*= 0*/)
{
if ( m_pro_td_p_fn_vDataHasChangedCallBack != NULL )
m_pro_td_p_fn_vDataHasChangedCallBack(this, _eReason, _lUserDefinedReason);
if ( m_pro_td_p_fn_vDataHasChangedSpecialCallBack != NULL )
m_pro_td_p_fn_vDataHasChangedSpecialCallBack(this, _eReason, _lUserDefinedReason);
}
//Modification Functions
//************************************************************************
void CTL_Editor_Data::m_pub_fn_vSetModificationFunctionWhenRead(CTL_tdp_fn_vDataModificationFunction p_fn_vDataModifWhenRead)
{
ERROR_ASSERT( m_pro_td_p_fn_vDataModifWhenRead == NULL );
m_pro_td_p_fn_vDataModifWhenRead = p_fn_vDataModifWhenRead;
}
//************************************************************************
void CTL_Editor_Data::m_pub_fn_vSetModificationFunctionWhenWrite(CTL_tdp_fn_vDataModificationFunction p_fn_vDataModifWhenWrite)
{
ERROR_ASSERT( m_pro_td_p_fn_vDataModifWhenWrite == NULL );
m_pro_td_p_fn_vDataModifWhenWrite = p_fn_vDataModifWhenWrite;
}
//************************************************************************
//When Data must be Read or Write
void CTL_Editor_Data::m_pub_fn_vSetDataMustBeRead_CallBack(CTL_td_p_fn_bCallBackWhenDataMustBeReadOrWritten _p_fn_CallBack)
{
ERROR_ASSERT( m_pro_td_p_fn_bDataMustBeRead == NULL );
m_pro_td_p_fn_bDataMustBeRead = _p_fn_CallBack;
}
//************************************************************************
void CTL_Editor_Data::m_pub_fn_vSetDataMustBeWritten_CallBack(CTL_td_p_fn_bCallBackWhenDataMustBeReadOrWritten _p_fn_CallBack)
{
ERROR_ASSERT( m_pro_td_p_fn_bDataMustBeWritten == NULL );
m_pro_td_p_fn_bDataMustBeWritten = _p_fn_CallBack;
}