reman3/Rayman_X/cpa/tempgrp/OAC/Inc/EdActors/EDACModl.hpp

135 lines
4.4 KiB
C++

// Definition for the class of Editor Actors Models
/////////////////////////////////////////////////////
#ifndef _CPACMODL_HPP_
#define _CPACMODL_HPP_
#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
#include <afxtempl.h>
#include "EDACActr.hpp"
#include "EDACInst.hpp"
#include "_Ainterf.hpp"
#include "Defines.hpp"
//CPA2 Stegaru Cristian 98/06/22
#define REASON_ALL_INSTANCES 0
#define REASON_STANDARD_INSTANCES 1
#define REASON_INSTANCES_IN_THE_LIST 2
//End CPA2 Stegaru Cristian 98/06/22
//-----------------IR-------------------------
class CPA_EdIR_Brain;
//--------------------------------------------
//################################################################
//define this if you want models with unspecified name lists to fail their instanciation
//#define D_DoNotInstanciateIncompleteModels
//################################################################
class EdActors_EditorActorModel : public EdActors_EditorActor
{
public:
//Normal constructor
EdActors_EditorActorModel(CPA_Family *pclFamily,CPA_Actor *pclActor);
//"Empty" constructor (for loading)
EdActors_EditorActorModel(CPA_Actor *pclActor);
//Copy constructor
EdActors_EditorActorModel(EdActors_EditorActorModel *_pclSourceModel, CPA_Actor *_pclActor);
//Destructor
~EdActors_EditorActorModel();
//CPA2 Stegaru Cristian 98/06/22
void mfn_vUpdateInstances (CTL_Editor_Data *_pclSourceData, int nReason = REASON_ALL_INSTANCES, CStringList *pInstanceNames = NULL);
void mfn_vGetStandardInstances (CTL_Editor_Data *pSourceData, CTL_Editor_Data *pModifiedData, CStringList &rlstStandardInstances);
BOOL mfn_bIsAStandardInstance (EdActors_EditorActorInstance *pclInstance, CTL_Editor_Data *pSourceData, CTL_Editor_Data *pModifiedData);
void mfn_vGetAllInstances (CStringList &rlstAllInstances);
//End CPA2 Stegaru Cristian 98/06/22
//Attributes
public:
//The List of Instances
CPA_List<EdActors_EditorActorInstance> m_clInstancesList;
//-----------------IR-------------------------
CPA_EdIR_Brain *m_pclBrain;
CTL_Editor_ControlList m_clListOfDesignerVariableControl;
//--------------------------------------------
protected:
private:
CString m_csBitmapName;
//Functions
public:
#if defined ( D_DoNotInstanciateIncompleteModels )
BOOL m_bAllListsAreSpecified();
#endif /* D_DoNotInstanciateIncompleteModels */
CString m_fn_csGetBitmapName();
void m_fn_vSetBitmapName(CString);
short m_fn_wGetRelatedInstancesCount();
void m_fn_vUpdateAllInstances(CTL_Editor_Data *_pclSourceData,
CTL_tdeUpdateReason _eReason = CTL_UPDATE_REASON__NO_REASON_GIVEN,
long _lUserDefinedReason = 0);
BOOL m_fn_bUpdateList(EdActors_ActorMiniStructureList *_pclDestList,
EdActors_ActorMiniStructureList *_pclSourceList,
CTL_Editor_Data *_pclSourceData,
CTL_tdeUpdateReason _eReason = CTL_UPDATE_REASON__NO_REASON_GIVEN,
//CPA2 Stegaru Cristian 98/06/24
long _lUserDefinedReason = 0,
BOOL bUsePropagate = FALSE);
//End CPA2 Stegaru Cristian 98/06/24
//Allocates MS and all corresponding MS in existing Instances
BOOL m_fn_bAllocateMS(EdActors_ActorMiniStructure *pclAMS);
void m_fn_vAllocateMSInInstances(EdActors_ActorMiniStructure *pclAMS);
void m_fn_vUnallocateMSInInstances(EdActors_ActorMiniStructure *pclAMS);
//Unallocates MS and all corresponding MS in existing Instances
BOOL m_fn_bUnallocateMS(EdActors_ActorMiniStructure *pclAMS);
//Saving & Loading functions
void m_fn_vSaveActor(SCR_tdst_File_Description *p_stFile);
void m_fn_vRemoveFromInstancesList(EdActors_EditorActorInstance *pclInstanceToRemove);
void m_fn_vAddToInstancesList(EdActors_EditorActorInstance *pclInstanceToAdd);
//Returns TRUE only if Data exists and belongs to an allocated MS
BOOL m_fn_bDataBelongsToAnAllocatedMS(CString csDataName);
//Updates all linked Data in given Instance, according to Model
void m_pub_fn_vUpdateLinkedDataInInstance(CPA_Actor *_pclInstanceToUpdate);
void m_pub_fn_vSetLink(CTL_Editor_Data *_pclSourceData,
BOOL _bMustLink);
// Shaitan FastC {
void m_pub_fn_vNotifyBrain (void);
static void m_fn_vSaveEngineAI(SCR_tdst_File_Description *,char *,void *,SCR_tde_Ntfy_Action);
//End Shaitan FastC }
protected:
private:
//This function allocates the MS which must always be Allocated
void m_fn_vMinimalAllocation();
//Links the Data to Instances
void m_pri_fn_vLinkData(CTL_Editor_Data *pclData);
};
#endif //_CPACMODL_HPP_