639 lines
22 KiB
C++
639 lines
22 KiB
C++
/*=========================================================================
|
|
*
|
|
* EDTSpec.cpp : EDT_SpecificEditor : 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 "geo.h"
|
|
#include "gli.h"
|
|
#include "col.h"
|
|
#define HieFriend
|
|
#include "spo.h"
|
|
#include "lst.hpp"
|
|
#undef HieFriend
|
|
|
|
#include "IncMEC.h"
|
|
// Shaitan Clean Env {
|
|
//#include "ENV.h"
|
|
//End Shaitan Clean Env }
|
|
#include "snd.h"
|
|
#include "incSCT.h"
|
|
|
|
#include "ITF.h"
|
|
|
|
#include "EDTSpec.hpp"
|
|
#include "EDTBase.hpp"
|
|
#include "EDTSObj.hpp"
|
|
|
|
#include <direct.h>
|
|
|
|
#define C_lNbSpecificEntries 0
|
|
|
|
#define M_GetSpecificInterface() (GetEditor()->GetInterface()->GetSpecificInterface())
|
|
|
|
//CPA2 Stegaru Cristian 98-02
|
|
#include "EDTModif.hpp"
|
|
//End CPA2 Stegaru Cristian 98-02
|
|
|
|
//#################################################################################
|
|
// CONSTRUCT
|
|
//#################################################################################
|
|
EDT_SpecificEditor::EDT_SpecificEditor (EDT_HierarchyEditor *pEditor)
|
|
{
|
|
m_bIsLoadingWorld = FALSE;
|
|
m_pEditor = pEditor;
|
|
}
|
|
|
|
EDT_SpecificEditor::~EDT_SpecificEditor (void)
|
|
{
|
|
|
|
}
|
|
|
|
//#################################################################################
|
|
// INITS
|
|
//#################################################################################
|
|
|
|
void EDT_SpecificEditor::fn_vSpecificInit (void)
|
|
{
|
|
// init parameters
|
|
m_bIsLoadingWorld = FALSE;
|
|
}
|
|
|
|
|
|
//#################################################################################
|
|
// SUBMENU
|
|
//#################################################################################
|
|
|
|
/*===========================================================================
|
|
* Description: Fill Submenu with specific commands
|
|
* Creation date:
|
|
* Author: Shaitan
|
|
*---------------------------------------------------------------------------
|
|
* Revision date: Author:
|
|
*=========================================================================*/
|
|
long EDT_SpecificEditor::fn_lDefineSubmenu (EDT_SubMenu *p_oSubMenu, UINT uiStartID)
|
|
{
|
|
return C_lNbSpecificEntries;
|
|
}
|
|
|
|
/*===========================================================================
|
|
* Description: answer to submenu specific commands
|
|
* Creation date:
|
|
* Author: Shaitan
|
|
*---------------------------------------------------------------------------
|
|
* Revision date: Author:
|
|
*=========================================================================*/
|
|
void EDT_SpecificEditor::fn_vOnSubmenuCommand (UINT uiCmdMsg)
|
|
{
|
|
/*
|
|
switch (uiCmdMsg)
|
|
{
|
|
case C_ui_DisplayWorldAction:
|
|
SetDisplayMode(E_dm_DrawWorld);
|
|
break;
|
|
case C_ui_DisplaySectorAction:
|
|
SetDisplayMode(E_dm_DrawOnlyCurrentSector);
|
|
break;
|
|
}
|
|
*/
|
|
}
|
|
|
|
|
|
//#################################################################################
|
|
// SUPER OBJECT TYPE AND LEVEL
|
|
//#################################################################################
|
|
/*===========================================================================
|
|
* Description: check if new type is valid
|
|
* Creation date:
|
|
* Author: Shaitan
|
|
*---------------------------------------------------------------------------
|
|
* Revision date: Author:
|
|
*=========================================================================*/
|
|
BOOL EDT_SpecificEditor::fn_bCanChangeTypeSO (EDT_SuperObject *pEdObj, tdeTypeSO eType)
|
|
{
|
|
CPA_SuperObject *pParent;
|
|
|
|
if (!M_GetSpecificInterface()->fn_bHasValidWorld(!m_bIsLoadingWorld))
|
|
return TRUE;
|
|
|
|
// check parent
|
|
pParent = pEdObj->GetSuperObjectFather();
|
|
if (!pParent)
|
|
return TRUE;
|
|
|
|
// protected objects are free
|
|
if ((eType == C_Protected)&&(pEdObj->GetSuperObjectOwner()))
|
|
return TRUE;
|
|
// else type must be coherent with hierarchy
|
|
return (pParent->GetTypeSO() == eType);
|
|
}
|
|
|
|
|
|
//#################################################################################
|
|
// DEFAULT PARENT
|
|
//#################################################################################
|
|
|
|
//ANNECY Shaitan EmptySectors 25/02/98
|
|
/*===========================================================================
|
|
* Description: find parent from pos
|
|
* Creation date:
|
|
* Author: Shaitan
|
|
*---------------------------------------------------------------------------
|
|
* Revision date: Author:
|
|
*=========================================================================*/
|
|
/*
|
|
EDT_SuperObject * EDT_SpecificEditor::GetDefaultParentFromPos (tdstPosition *p_stPosition, tdeTypeSO eTypeInsert)
|
|
{
|
|
// invalid world => no default parent
|
|
return (EDT_SuperObject *) M_GetSpecificInterface()->GetDefaultParentFromPos(p_stPosition, eTypeInsert);
|
|
}
|
|
*/
|
|
//ENDANNECY Shaitan EmptySectors
|
|
|
|
/*===========================================================================
|
|
* Description: get parent for copy / paste.
|
|
* Creation date:
|
|
* Author: Shaitan
|
|
*---------------------------------------------------------------------------
|
|
* Revision date: Author:
|
|
*=========================================================================*/
|
|
EDT_SuperObject * EDT_SpecificEditor::GetDefaultParentForPaste (EDT_SuperObject *pEdObj)
|
|
{
|
|
//ANNECY Shaitan EmptySectors 25/02/98
|
|
// CPA_SuperObject *pSector;
|
|
//ENDANNECY Shaitan EmptySectors
|
|
|
|
// invalid world => no default parent
|
|
if (!M_GetSpecificInterface()->fn_bHasValidWorld(!m_bIsLoadingWorld))
|
|
return NULL;
|
|
|
|
// protected objects have no default parent
|
|
if (pEdObj->GetTypeSO() == C_Protected)
|
|
return NULL;
|
|
|
|
// dynamic objects => dynamic root
|
|
if (pEdObj->GetTypeSO() == C_Dynamic)
|
|
return (EDT_SuperObject *) M_GetSpecificInterface()->GetDynamicRoot();
|
|
|
|
// static object => current sector
|
|
if (pEdObj->GetTypeSO() == C_Static)
|
|
{
|
|
//ANNECY Shaitan EmptySectors 25/02/98
|
|
return (EDT_SuperObject *) M_GetSpecificInterface()->GetSuperObjectCurrentSector(pEdObj);
|
|
// pSector = M_GetSpecificInterface()->GetSuperObjectCurrentSector(pEdObj);
|
|
// if (pSector)
|
|
// return (EDT_SuperObject *) pSector->GetSuperObjectFirstChild();
|
|
//ENDANNECY Shaitan EmptySectors
|
|
}
|
|
|
|
// others => invalid
|
|
return NULL;
|
|
}
|
|
|
|
|
|
//#################################################################################
|
|
// PERMISSIONS
|
|
//#################################################################################
|
|
|
|
/*==========================================================================
|
|
* Description: check if parent is available
|
|
* Creation date:
|
|
* Author: Shaitan
|
|
*---------------------------------------------------------------------------
|
|
* Revision date: Author:
|
|
*=========================================================================*/
|
|
BOOL EDT_SpecificEditor::fn_bCanBeParent (EDT_SuperObject *pNewParent, EDT_SuperObject *pChild)
|
|
{
|
|
return fn_bCheckParentAndType(pChild, pNewParent);
|
|
}
|
|
|
|
/*==========================================================================
|
|
==========================================================================*/
|
|
BOOL EDT_SpecificEditor::fn_bCanBeParent (EDT_SuperObject *pNewParent, CPA_List<CPA_SuperObject> *pListOfChilds)
|
|
{
|
|
CPA_SuperObject *pElem;
|
|
POSITION pos;
|
|
|
|
// check all element in the list
|
|
for (pElem = pListOfChilds->GetHeadElement(pos); pElem;
|
|
pElem = pListOfChilds->GetNextElement(pos))
|
|
{
|
|
if (!fn_bCheckParentAndType((EDT_SuperObject *) pElem, pNewParent))
|
|
return FALSE;
|
|
}
|
|
|
|
// no objection
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
/*==========================================================================
|
|
* Description: check if move is available
|
|
* Creation date:
|
|
* Author: Shaitan
|
|
*---------------------------------------------------------------------------
|
|
* Revision date: Author:
|
|
*=========================================================================*/
|
|
long EDT_SpecificEditor::fn_lCanMoveObjects (CPA_List<CPA_SuperObject> *pObjectsToMove)
|
|
{
|
|
CPA_SuperObject *pElem;
|
|
POSITION pos;
|
|
long lNbBreak = 0;
|
|
|
|
// invalid world => only protected are free
|
|
if (!M_GetSpecificInterface()->fn_bHasValidWorld(!m_bIsLoadingWorld))
|
|
{
|
|
// only protected objects are free
|
|
for (pElem = pObjectsToMove->GetHeadElement(pos); pElem;
|
|
pElem = pObjectsToMove->GetNextElement(pos))
|
|
{
|
|
if (pElem->GetTypeSO() != C_Protected)
|
|
return -1;
|
|
}
|
|
// no condition
|
|
return 0;
|
|
}
|
|
// reinit list modifs
|
|
while (m_pEditor->GetListOfModifParent()->GetCount())
|
|
delete (m_pEditor->GetListOfModifParent()->RemoveTail());
|
|
// check all moved objects
|
|
for (pElem = pObjectsToMove->GetHeadElement(pos); pElem;
|
|
pElem = pObjectsToMove->GetNextElement(pos))
|
|
{
|
|
if (!fn_bCheckSectorMove((EDT_SuperObject *) pElem, &lNbBreak, TRUE))
|
|
return -1;
|
|
}
|
|
// number of broken links
|
|
return lNbBreak;
|
|
}
|
|
|
|
|
|
|
|
//#################################################################################
|
|
// SECTORS
|
|
//#################################################################################
|
|
|
|
//ANNECY Shaitan EmptySectors 25/02/98
|
|
/*===========================================================================
|
|
* Description: init protection for sectors
|
|
* Creation date:
|
|
* Author: Shaitan
|
|
*---------------------------------------------------------------------------
|
|
* Revision date: Author:
|
|
*=========================================================================*/
|
|
/*
|
|
void EDT_SpecificEditor::fn_vInitSectorsParameters (EDT_SuperObject *pSRoot)
|
|
{
|
|
CPA_SuperObject *pSector, *pChild;
|
|
|
|
// check all sectors
|
|
for (pSector = pSRoot->GetSuperObjectFirstChild(); pSector;
|
|
pSector = pSRoot->GetSuperObjectNextChild(pSector))
|
|
{
|
|
// first levels of sectors => protected childs
|
|
for (pChild = pSector->GetSuperObjectFirstChild(); pChild;
|
|
pChild = pSector->GetSuperObjectNextChild(pChild))
|
|
{
|
|
pChild->SetEditProtected(TRUE);
|
|
pChild->SetSuperObjectOwner(pSector);
|
|
}
|
|
}
|
|
|
|
}
|
|
*/
|
|
//ENDANNECY Shaitan EmptySectors
|
|
|
|
//#################################################################################
|
|
// PERMISSIONS
|
|
//#################################################################################
|
|
|
|
/*==========================================================================
|
|
* Description: check if move is available (recursive function)
|
|
* Creation date:
|
|
* Author: Shaitan
|
|
*---------------------------------------------------------------------------
|
|
* Revision date: Author:
|
|
*=========================================================================*/
|
|
BOOL EDT_SpecificEditor::fn_bCheckSectorMove (EDT_SuperObject *pEdObj, long *p_lNbBreak, BOOL bSelected)
|
|
{
|
|
CPA_SuperObject *pSector;
|
|
CPA_SuperObject *pParent;
|
|
CPA_SuperObject *pChild;
|
|
|
|
// object must stay in a sector
|
|
pSector = M_GetSpecificInterface()->GetSuperObjectCurrentSector(pEdObj);
|
|
if ((pEdObj->GetTypeSO() != C_Protected)&&(!pSector))
|
|
return FALSE;
|
|
|
|
// check for Univers Sector
|
|
if (pSector == M_GetSpecificInterface()->GetStaticRoot()->GetSuperObjectLastChild())
|
|
{
|
|
CString csName = pEdObj->GetObject() ? pEdObj->GetObject()->GetName() : pEdObj->GetName();
|
|
if (MessageBox( NULL,
|
|
" Object " + csName + " is in Univers sector\n"
|
|
" Are you sure you want to move it here ?\n",
|
|
"Object In Univers Sector",
|
|
MB_YESNO | MB_ICONEXCLAMATION | MB_TASKMODAL | MB_TOPMOST)
|
|
== IDNO)
|
|
return FALSE;
|
|
}
|
|
|
|
// only static objects require special handling
|
|
if (pEdObj->GetTypeSO() == C_Static)
|
|
{
|
|
pParent = pEdObj->GetSuperObjectFather();
|
|
// if sector is invalid, create modif parent
|
|
if (pSector != M_GetSpecificInterface()->GetSuperObjectCurrentSector(pParent))
|
|
{
|
|
m_pEditor->GetListOfModifParent()->AddTail( new EDT_SaveParents
|
|
//ANNECY Shaitan EmptySectors 25/02/98
|
|
// (pEdObj, (EDT_SuperObject *) pParent, (EDT_SuperObject *) pSector->GetSuperObjectFirstChild()));
|
|
(pEdObj, (EDT_SuperObject *) pParent, (EDT_SuperObject *) pSector));
|
|
//ENDANNECY Shaitan EmptySectors
|
|
if (!bSelected)
|
|
*p_lNbBreak++;
|
|
}
|
|
}
|
|
// next level of hierarchy
|
|
for (pChild = pEdObj->GetSuperObjectFirstChild(); pChild;
|
|
pChild = pEdObj->GetSuperObjectNextChild(pChild))
|
|
{
|
|
if (!fn_bCheckSectorMove((EDT_SuperObject *) pChild, p_lNbBreak, FALSE))
|
|
return FALSE;
|
|
}
|
|
|
|
// no objection
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
/*===========================================================================
|
|
* Description: check type
|
|
* Creation date:
|
|
* Author: Shaitan
|
|
*---------------------------------------------------------------------------
|
|
* Revision date: Author:
|
|
*=========================================================================*/
|
|
BOOL EDT_SpecificEditor::fn_bCheckParentAndType (EDT_SuperObject *pEdObj, EDT_SuperObject *pParent)
|
|
{
|
|
// invalid world => only protected are free
|
|
if (!M_GetSpecificInterface()->fn_bHasValidWorld(!m_bIsLoadingWorld))
|
|
return ((pParent)&&(pEdObj->GetTypeSO() == C_Protected));
|
|
|
|
// root or NULL are not available
|
|
if ((!pParent)||(pParent == m_pEditor->GetInterface()->GetCurrentWorld()->GetRoot()))
|
|
return FALSE;
|
|
|
|
switch (pEdObj->GetTypeSO())
|
|
{
|
|
// protected objects are free, except for roots and sectors
|
|
case C_Protected:
|
|
if ((pParent == M_GetSpecificInterface()->GetDynamicRoot())||(pParent == M_GetSpecificInterface()->GetStaticRoot()))
|
|
return FALSE;
|
|
//ANNECY Shaitan NewBorder 13/02/98
|
|
// if (pParent->GetRealTypeName() == C_szSectorTypeName)
|
|
// return FALSE;
|
|
//ENDANNECY Shaitan NewBorder
|
|
return TRUE;
|
|
|
|
// dynamic => only dynamic root
|
|
case C_Dynamic:
|
|
return (pParent == M_GetSpecificInterface()->GetDynamicRoot());
|
|
|
|
// static => same sector
|
|
case C_Static:
|
|
// parent must be static
|
|
if (pParent->GetTypeSO() != C_Static)
|
|
return FALSE;
|
|
//ANNECY Shaitan EmptySectors 25/02/98
|
|
// root is not a valid parent
|
|
if (pParent == M_GetSpecificInterface()->GetStaticRoot())
|
|
return FALSE;
|
|
// // root or sector itself are not valid parent
|
|
// if ((pParent == M_GetSpecificInterface()->GetStaticRoot())||(pParent->GetRealTypeName() == C_szSectorTypeName))
|
|
//ENDANNECY Shaitan EmptySectors
|
|
// child must be in the same sector
|
|
if (M_GetSpecificInterface()->GetSuperObjectCurrentSector(pEdObj) != M_GetSpecificInterface()->GetSuperObjectCurrentSector(pParent))
|
|
return FALSE;
|
|
//ANNECY Shaitan EmptySectors 25/02/98
|
|
// check super-object status
|
|
if (!fn_bCheckSaveStatus(pEdObj->GetSaveStatus(), pParent))
|
|
return FALSE;
|
|
// // Designer mode => under sector first child
|
|
// if (M_GetSpecificInterface()->GetUserStatus() == E_us_StatusDesign)
|
|
// return (GetDefaultParentForPaste(pEdObj) == pParent);
|
|
//ENDANNECY Shaitan EmptySectors
|
|
// no objection
|
|
return TRUE;
|
|
}
|
|
return FALSE;
|
|
}
|
|
|
|
//ANNECY Shaitan EmptySectors 25/02/98
|
|
/*===========================================================================
|
|
* Description: check status
|
|
* Creation date:
|
|
* Author: Shaitan
|
|
*---------------------------------------------------------------------------
|
|
* Revision date: Author:
|
|
*=========================================================================*/
|
|
BOOL EDT_SpecificEditor::fn_bCheckSaveStatus (tdeSaveStatus eStatus, EDT_SuperObject *pParent)
|
|
{
|
|
tdeSaveStatus eParentStatus = pParent->GetSaveStatus();
|
|
|
|
|
|
switch (eStatus)
|
|
{
|
|
case E_ss_Responsible:
|
|
case E_ss_Modify:
|
|
return (eParentStatus != E_ss_NoSave);
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
//ENDANNECY Shaitan EmptySectors
|
|
|
|
//#################################################################################
|
|
// LOAD
|
|
//#################################################################################
|
|
|
|
/*===========================================================================
|
|
* Description: Load editor infos corresponding to engine current map
|
|
* Creation date:
|
|
* Author: Shaitan
|
|
*---------------------------------------------------------------------------
|
|
* Revision date: Author:
|
|
*=========================================================================*/
|
|
EDT_SuperObject * EDT_SpecificEditor::fn_pInitEditorMap (HIE_tdxHandleToSuperObject hRoot)
|
|
{
|
|
HIE_tdxHandleToSuperObject hDRoot, hSRoot, hDInactiveRoot;
|
|
CPA_SuperObject *pRoot, *pDRoot, *pDInactiveRoot, *pSRoot;
|
|
CString csSectionName;
|
|
char szFileName[SCR_CV_ui_Cfg_MaxLenName];
|
|
char szActionName[SCR_CV_ui_Cfg_MaxLenName];
|
|
char szName[SCR_CV_ui_Cfg_MaxLenName];
|
|
int iPos;
|
|
|
|
// set load mode
|
|
m_bIsLoadingWorld = TRUE;
|
|
|
|
// get roots
|
|
hDRoot = HIE_fn_hGetSuperObjectFirstChild(hRoot);
|
|
hDInactiveRoot = HIE_fn_hGetSuperObjectNextBrother(hDRoot);
|
|
hSRoot = HIE_fn_hGetSuperObjectLastChild(hRoot);
|
|
|
|
// init static file name
|
|
csSectionName = m_pEditor->GetEngineSectionName(hSRoot);
|
|
SCR_fn_v_RdL0_SplitSectionName((char*)(LPCSTR) csSectionName, szFileName, szActionName, szName);
|
|
m_csStaticFileName = szFileName;
|
|
// init dynamic file name
|
|
iPos = m_csStaticFileName.ReverseFind('.');
|
|
m_csDynamicFileName = m_csStaticFileName.Left(iPos) + ".lvl";
|
|
|
|
// create root
|
|
pRoot = m_pEditor->GetNewSuperObject(hRoot, E_ss_NoSave, C_NoType, "SO_Root", "");
|
|
pRoot->SetEditProtected(TRUE);
|
|
// create Dynamic Root
|
|
pDRoot = m_pEditor->GetNewSuperObject(hDRoot, E_ss_NoSave, C_Dynamic, "SO_DynamicRoot", "");
|
|
pDRoot->SetEditProtected(TRUE);
|
|
pRoot->AddANewChild(pDRoot, FALSE);
|
|
// create Inactivate Dynamic Root
|
|
pDInactiveRoot = m_pEditor->GetNewSuperObject(hDInactiveRoot, E_ss_NoSave, C_Dynamic, "SO_InactiveDynamicRoot", "");
|
|
pDInactiveRoot->SetEditProtected(TRUE);
|
|
pRoot->AddANewChild(pDInactiveRoot, FALSE);
|
|
// create Static Root
|
|
pSRoot = m_pEditor->GetNewSuperObject(hSRoot, E_ss_NoSave, C_Static, "SO_StaticRoot", m_csStaticFileName);
|
|
pSRoot->SetEditProtected(TRUE);
|
|
pRoot->AddANewChild(pSRoot, FALSE);
|
|
|
|
// build dynamic hierarchy
|
|
g_oBaseFrame.mfnv_UpdateTitle("Loading Editor Dynamic Hierarchy");
|
|
// M_GetMainWnd()->UpdateStatus("Loading Editor Dynamic Hierarchy", C_STATUSPANE_INFOS, C_STATUS_NORMAL);
|
|
m_pEditor->fn_vBuildEditorHierarchy(pDRoot, hDRoot);
|
|
// build static hierarchy
|
|
g_oBaseFrame.mfnv_UpdateTitle("Loading Editor Static Hierarchy");
|
|
// M_GetMainWnd()->UpdateStatus("Loading Editor Static Hierarchy", C_STATUSPANE_INFOS, C_STATUS_NORMAL);
|
|
m_pEditor->fn_vBuildEditorHierarchy(pSRoot, hSRoot);
|
|
//ANNECY Shaitan EmptySectors 25/02/98
|
|
// // update for sectors
|
|
// M_GetMainWnd()->UpdateStatus("Initializing Sectors", C_STATUSPANE_INFOS, C_STATUS_NORMAL);
|
|
// fn_vInitSectorsParameters((EDT_SuperObject *) pSRoot);
|
|
//ENDANNECY Shaitan EmptySectors
|
|
|
|
// load all modifs
|
|
//CPA2 Stegaru Cristian 98-02
|
|
csSectionName = m_pEditor->GetSOReferencePath() + GetModifSectionName();
|
|
if (SCR_fn_c_RdL0_IsSectionExists((char *)(LPCTSTR) csSectionName))
|
|
{
|
|
g_oBaseFrame.mfnv_UpdateTitle("Loading temporary modifications");
|
|
//M_GetMainWnd()->UpdateStatus("Loading temporary modifications", C_STATUSPANE_INFOS, C_STATUS_NORMAL);
|
|
SCR_M_RdL0_SetContextLong(1, 0, (long) m_pEditor);
|
|
SCR_fnp_st_RdL0_AnalyseSection((char *)(LPCTSTR) csSectionName, SCR_CDF_uw_Anl_Normal);
|
|
}
|
|
//End CPA2 Stegaru Cristian 98-02
|
|
// new editor root
|
|
// g_oBaseFrame.mfnv_UpdateTitle("Editor Hierarchy Load >> 100%");
|
|
// M_GetMainWnd()->UpdateStatus("Editor Hierarchy Load >> 100%", C_STATUSPANE_INFOS, C_STATUS_NORMAL);
|
|
m_bIsLoadingWorld = FALSE;
|
|
return (EDT_SuperObject *) pRoot;
|
|
}
|
|
|
|
/*===========================================================================
|
|
* Description: Get modifications section name
|
|
* Creation date:
|
|
* Author: Shaitan
|
|
*---------------------------------------------------------------------------
|
|
* Revision date: Author:
|
|
*=========================================================================*/
|
|
CString EDT_SpecificEditor::GetModifSectionName (void)
|
|
{
|
|
CString csSectionName;
|
|
char szModifName[SCR_CV_ui_Cfg_MaxLenName];
|
|
|
|
//CPA2 Stegaru Cristian 98-02
|
|
CString csFileName;
|
|
int iPos = m_csStaticFileName.ReverseFind ('.');
|
|
ASSERT (-1 != iPos);
|
|
csFileName = m_csStaticFileName.Left (iPos) + szModifExt;
|
|
//End CPA2 Stegaru Cristian 98-02
|
|
SCR_fn_v_RdL0_ComputeSectionName(szModifName, (char*)(LPCSTR)csFileName, "Edit-Modifications", NULL);
|
|
csSectionName = szModifName;
|
|
|
|
return csSectionName;
|
|
}
|
|
|
|
/*===========================================================================
|
|
* Description: init parameters for load
|
|
* Creation date:
|
|
* Author: Shaitan
|
|
*---------------------------------------------------------------------------
|
|
* Revision date: Author:
|
|
*=========================================================================*/
|
|
void EDT_SpecificEditor::fn_vInitTypeSO (EDT_SuperObject *pEdObj, EDT_SuperObject *pParent)
|
|
{
|
|
// init type from hierarchy position
|
|
if (pEdObj->GetTypeSO() == C_NoType)
|
|
{
|
|
if (pEdObj->GetSuperObjectOwner())
|
|
pEdObj->SetTypeSO(C_Protected);
|
|
else
|
|
pEdObj->SetTypeSO(pParent->GetTypeSO());
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//#################################################################################
|
|
// SUPER OBJECT TYPE
|
|
//#################################################################################
|
|
|
|
|
|
/*===========================================================================
|
|
* Description: check if object's type correspond to user status
|
|
* Creation date:
|
|
* Author: Shaitan
|
|
*---------------------------------------------------------------------------
|
|
* Revision date: Author:
|
|
*=========================================================================*/
|
|
BOOL EDT_SpecificEditor::fn_bIsValidType (tdeTypeSO eTypeSO)
|
|
{
|
|
// invalid world => no condition
|
|
if (!M_GetSpecificInterface()->fn_bHasValidWorld(!m_bIsLoadingWorld))
|
|
return TRUE;
|
|
|
|
//chbani :desactive le test de USER Statut
|
|
return TRUE;
|
|
|
|
switch (eTypeSO)
|
|
{
|
|
// static objects => always temporary modifs
|
|
case C_Static:
|
|
return (M_GetSpecificInterface()->GetUserStatus() != E_us_StatusDesign);
|
|
// dynamic objects => temporary for graphist
|
|
case C_Dynamic:
|
|
return (M_GetSpecificInterface()->GetUserStatus() != E_us_StatusGraphic);
|
|
// protected objets => always free
|
|
case C_Protected:
|
|
return TRUE;
|
|
|
|
default:
|
|
return FALSE;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
#endif // ACTIVE_EDITOR
|