reman3/Rayman_X/cpa/tempgrp/ITF/CPAHieEd.cpp

213 lines
6.6 KiB
C++

/*=========================================================================
*
* CPAHieEd.cpp : CPA_HierarchyEditor : Implementation file.
*
*
* Version 1.0
* Creation date
* Revision date
*
* Shaitan
*=======================================================================*/
#include "stdafx.h"
#include "itf/customid.h"
#ifdef ACTIVE_EDITOR
#include "acp_base.h"
#include "itf/CPAHieEd.hpp"
#include "itf/CPAInter.hpp"
#include "itf/CPAMWorl.hpp"
#include "itf/CPAFileO.hpp"
//#################################################################################
// INITS
//#################################################################################
/*===========================================================================
Creation
=========================================================================*/
void CPA_HierarchyEditor::Create (void)
{
CString types[] = {C_szSuperObjectTypeName, C_szFileTypeName};
// reachable object list
fn_vRegisterObjectsType(types,2);
}
//#################################################################################
// FOCUS
//#################################################################################
/*===========================================================================
Called just before engine loop
=========================================================================*/
void CPA_HierarchyEditor::fn_vBeforeEngine()
{
// update menu
GetMainWorld()->GetFRMBase()->fn_vUpdateCurrentEditor(NULL);
// update state
GetInterface()->SetInitialState(FALSE);
}
/*===========================================================================
Update editor hierarchy after engine loop
=========================================================================*/
void CPA_HierarchyEditor::fn_vBeforeEditor()
{
}
//#################################################################################
// EDITOR
//#################################################################################
/*===========================================================================
Activate default editor
=========================================================================*/
void CPA_HierarchyEditor::fn_vOnActivateEditor (CPA_List<CPA_BaseObject> *pParams, BOOL bBackActivated)
{
CPA_SuperObject *pEdObj;
CPA_BaseObject *pElem;
POSITION pos;
// if there is a list, select corresponding super-objects
if (pParams)
{
// cancel current selection
GetInterface()->fn_vCancelCurrentSelection(FALSE);
// select parameters
for (pElem = pParams->GetHeadElement(pos); pElem;
pElem = pParams->GetNextElement(pos))
{
// check if this is a super-object
if (pElem->GetType() == C_szSuperObjectTypeName)
{
// if possible, select it
pEdObj = (CPA_SuperObject *) pElem;
if (GetInterface()->fn_bCanSelect(pEdObj) == C_Accept)
GetInterface()->fn_vAddSelectedObject(pEdObj, FALSE);
}
}
}
}
/*===========================================================================
Close default editor
=========================================================================*/
void CPA_HierarchyEditor::fn_vOnCloseEditor (void)
{
fn_vCancelAllModes();
}
//#################################################################################
// SUPER-OBJECT
//#################################################################################
/*===========================================================================
GetEditor SO from engine SO
=========================================================================*/
CPA_SuperObject * CPA_HierarchyEditor::GetEditorObject (HIE_tdxHandleToSuperObject hSupObj)
{
CPA_SuperObject *pElem;
POSITION pos;
// test the structure
for (pElem = M_GetWorld()->GetListAllObjects()->GetHeadElement(pos); pElem;
pElem = M_GetWorld()->GetListAllObjects()->GetNextElement(pos))
{
if (pElem->GetStruct() == hSupObj)
return pElem;
}
// object was not found
return NULL;
}
/*===========================================================================
Create new super-object (from engine struct)
=========================================================================*/
CPA_SuperObject * CPA_HierarchyEditor::GetNewSuperObject (HIE_tdxHandleToSuperObject hEngineSO,
tdeSaveStatus eStatus, tdeTypeSO eTypeSO,
CString csName, CString csEngineFileName)
{
CPA_SuperObject *pSupObj;
// create super-object
pSupObj = new CPA_SuperObject(this, hEngineSO, eStatus, eTypeSO);
// name
if (pSupObj->fn_eRename(csName) != E_mc_None)
pSupObj->SetDefaultUniqueName();
return pSupObj;
}
/*===========================================================================
Create new super-object
=========================================================================*/
CPA_SuperObject * CPA_HierarchyEditor::GetNewSuperObject (tdeSaveStatus eStatus, tdeTypeSO eTypeSO,
CString csName, CString csEngineFileName)
{
CPA_SuperObject *pSupObj;
// create super-object
pSupObj = new CPA_SuperObject(this, eStatus, eTypeSO);
// name
if (pSupObj->fn_eRename(csName) != E_mc_None)
pSupObj->SetDefaultUniqueName();
return pSupObj;
}
/*===========================================================================
Copy super-object
=========================================================================*/
CPA_SuperObject * CPA_HierarchyEditor::GetCopyOfSuperObject (CPA_SuperObject *pModel)
{
CPA_SuperObject *pSupObj;
// copy super-object
pSupObj = new CPA_SuperObject(*pModel);
// set new name
pSupObj->SetDefaultUniqueName();
return pSupObj;
}
//#################################################################################
// FILE-OBJECT
//#################################################################################
/*===========================================================================
Get or load file object
=========================================================================*/
CPA_FileObject * CPA_HierarchyEditor::GetFileObject (CString csFileName)
{
CPA_FileObject *pFileObject;
// get corresponding prefixed name
csFileName = GetInterface()->GetPrefixedName(csFileName);
CPA_FileObject::sm_vUniformizeSlashes(csFileName);
// check if file object already exists
pFileObject = (CPA_FileObject *) GetBaseObject(csFileName, C_szFileTypeName, NO_CRITERIA, E_rc_AllObjects);
// if necessary, create it
if (!pFileObject)
pFileObject = new CPA_FileObject(this, csFileName);
return pFileObject;
}
//ANNECY Shaitan EmptySectors 25/02/98
BOOL CPA_HierarchyEditor::fn_bCanBeParent (CPA_SuperObject *pParent, tdstPosition *p_stPosition, tdeTypeSO eTypeSO, tdeSaveStatus eStatus)
{
return FALSE;
}
//ENDANNECY Shaitan EmptySectors
#endif // ACTIVE_EDITOR