225 lines
6.4 KiB
C++
225 lines
6.4 KiB
C++
/*=========================================================================
|
|
*
|
|
* NameMngr.cpp : Name Manager : 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/EDTBase.hpp"
|
|
|
|
#include "itf/CPAInter.hpp"
|
|
#include "itf/NameMngr.hpp"
|
|
|
|
#include "DPT.h"
|
|
|
|
CPA_NameManager g_oNameManager;
|
|
|
|
//#################################################################################
|
|
// NAME CONFLICT
|
|
//#################################################################################
|
|
/*===========================================================================
|
|
Constructor (initial object)
|
|
=========================================================================*/
|
|
CPA_NameConflict::CPA_NameConflict (CPA_BaseObject *pInitial, CPA_BaseObject *pRenamed,
|
|
const CString csInitialName, tdeMissingCriteria eConflict)
|
|
{
|
|
// init parameters
|
|
m_pInitialObject = pInitial;
|
|
m_pRenamedObject = pRenamed;
|
|
m_csInitialName = csInitialName;
|
|
m_eConflict = eConflict;
|
|
}
|
|
|
|
/*===========================================================================
|
|
Destructor
|
|
=========================================================================*/
|
|
CPA_NameConflict::~CPA_NameConflict (void)
|
|
{
|
|
|
|
}
|
|
|
|
//#################################################################################
|
|
// CONSTRUCTOR
|
|
//#################################################################################
|
|
/*===========================================================================
|
|
Constructor - init the list
|
|
=========================================================================*/
|
|
CPA_NameManager::CPA_NameManager ( )
|
|
{
|
|
|
|
}
|
|
|
|
/*===========================================================================
|
|
Destructor -
|
|
=========================================================================*/
|
|
CPA_NameManager::~CPA_NameManager (void)
|
|
{
|
|
|
|
}
|
|
|
|
//#################################################################################
|
|
// CONFLICTS
|
|
//#################################################################################
|
|
/*===========================================================================
|
|
Register a name conflict
|
|
=========================================================================*/
|
|
void CPA_NameManager::fn_vRegisterConflict (CPA_BaseObject *pObject, const CString csInitialName, tdeMissingCriteria eConflict)
|
|
{
|
|
CPA_BaseObjectList *pListObject;
|
|
CPA_BaseObjectList *pListInvalid;
|
|
CPA_BaseObject *pFirstObject;
|
|
CPA_BaseObject *pOwner;
|
|
CString csTypeName;
|
|
|
|
// no object => no conflict
|
|
if (!pObject)
|
|
return;
|
|
|
|
// init parameters
|
|
pListObject = pObject->GetBaseObjectList();
|
|
pListInvalid = pObject->GetInvalidObjectList();
|
|
csTypeName = pObject->GetType();
|
|
pOwner = pObject->GetOwner();
|
|
|
|
// switch conflict type to find object
|
|
switch (eConflict)
|
|
{
|
|
case E_mc_TypeUnicity:
|
|
pFirstObject = pListObject->fn_p_oFindObject(csInitialName, csTypeName, NO_CRITERIA);
|
|
if (!pFirstObject)
|
|
pFirstObject = pListInvalid->fn_p_oFindObject(csInitialName, csTypeName, NO_CRITERIA);
|
|
break;
|
|
|
|
case E_mc_OwnerUnicity:
|
|
pFirstObject = pListObject->fn_p_oFindObject(csInitialName, csTypeName, pOwner);
|
|
if (!pFirstObject)
|
|
pFirstObject = pListInvalid->fn_p_oFindObject(csInitialName, csTypeName, pOwner);
|
|
break;
|
|
|
|
case E_mc_CustomUnicity:
|
|
pFirstObject = NULL;
|
|
break;
|
|
default:
|
|
pFirstObject = NULL;
|
|
}
|
|
|
|
m_oListOfNameConflict.AddTail (new CPA_NameConflict(pFirstObject, pObject, csInitialName, eConflict));
|
|
}
|
|
|
|
|
|
/*===========================================================================
|
|
Register name conflict file
|
|
=========================================================================*/
|
|
void CPA_NameManager::fn_vWriteNameConflicts (void)
|
|
{
|
|
CPA_NameConflict *pElem;
|
|
CPA_BaseObject *pObject;
|
|
POSITION pos;
|
|
CString csInitialName;
|
|
CString csTime;
|
|
CTime oTime = CTime::GetCurrentTime();
|
|
FILE *pFile;
|
|
char szFileName[MAX_PATH];
|
|
char szText[MAX_PATH];
|
|
|
|
// Compute modification file name (last and new)
|
|
strcpy(szFileName, fn_szGetGameDataPath());
|
|
strcat(szFileName, "\\NameMngr.txt");
|
|
|
|
// Append modification list
|
|
pFile = fopen(szFileName, "at");
|
|
if (!pFile)
|
|
return;
|
|
|
|
// Date
|
|
csTime.Format("%d/%d/%d %d:%d:%d", oTime.GetDay(), oTime.GetMonth(), oTime.GetYear(),
|
|
oTime.GetHour(), oTime.GetMinute(), oTime.GetSecond());
|
|
sprintf(szText, "\nCONFLICTS : %s\n", csTime);
|
|
fputs(szText, pFile);
|
|
|
|
for (pElem = m_oListOfNameConflict.GetHeadElement(pos); pElem;
|
|
pElem = m_oListOfNameConflict.GetNextElement(pos))
|
|
{
|
|
fputs("\n*********** Conflict *************\n\n", pFile);
|
|
csInitialName = pElem->m_csInitialName;
|
|
// conflict type
|
|
switch (pElem->m_eConflict)
|
|
{
|
|
case E_mc_TypeUnicity:
|
|
sprintf(szText, "CONFLICT ON : (Name + Type) unicity criteria \n");
|
|
break;
|
|
case E_mc_OwnerUnicity:
|
|
sprintf(szText, "CONFLICT ON : (Name + Type + Owner) unicity criteria \n");
|
|
break;
|
|
case E_mc_CustomUnicity:
|
|
sprintf(szText, "CONFLICT ON : custom unicity criteria\n");
|
|
break;
|
|
}
|
|
fputs(szText, pFile);
|
|
|
|
// renamed object
|
|
fputs("RENAMED OBJECT :\n", pFile);
|
|
pObject = pElem->m_pRenamedObject;
|
|
// type
|
|
sprintf(szText, "Type : %s \n", pObject->GetType());
|
|
fputs(szText, pFile);
|
|
if (pObject->GetOwner())
|
|
{
|
|
sprintf(szText, "Owner : %s \n", pObject->GetOwner()->GetName());
|
|
fputs(szText, pFile);
|
|
}
|
|
// section
|
|
if (pObject->fn_bCanBeSaved())
|
|
{
|
|
sprintf(szText, "Section : %s \n", ((CPA_SaveObject *) pObject)->fn_csComputeCompleteSectionName(csInitialName));
|
|
fputs(szText, pFile);
|
|
}
|
|
else
|
|
{
|
|
sprintf(szText, "OldName : %s \n", csInitialName);
|
|
fputs(szText, pFile);
|
|
}
|
|
|
|
// initial object
|
|
if (pElem->m_pInitialObject)
|
|
{
|
|
fputs("CONFLICT WITH :\n", pFile);
|
|
pObject = pElem->m_pInitialObject;
|
|
// type
|
|
sprintf(szText, "Type : %s \n", pObject->GetType());
|
|
fputs(szText, pFile);
|
|
// owner
|
|
if (pObject->GetOwner())
|
|
{
|
|
sprintf(szText, "Owner : %s \n", pObject->GetOwner()->GetName());
|
|
fputs(szText, pFile);
|
|
}
|
|
// section
|
|
if (pObject->fn_bCanBeSaved())
|
|
{
|
|
sprintf(szText, "Section : %s \n", ((CPA_SaveObject *) pObject)->GetCompleteSectionName());
|
|
fputs(szText, pFile);
|
|
}
|
|
else
|
|
{
|
|
sprintf(szText, "Name : %s \n", csInitialName);
|
|
fputs(szText, pFile);
|
|
}
|
|
}
|
|
}
|
|
fputs("\n##########################################################\n", pFile);
|
|
fclose(pFile);
|
|
}
|
|
|
|
#endif // ACTIVE_EDITOR
|