281 lines
9.5 KiB
C++
281 lines
9.5 KiB
C++
/*=========================================================================
|
|
*
|
|
* SECTobj.cpp : Implementation of Sector Object
|
|
*
|
|
*
|
|
* Version 1.0
|
|
* Creation date 10/06/99
|
|
* Revision date
|
|
*
|
|
* Shaitan
|
|
*=======================================================================*/
|
|
#include "stdafx.h"
|
|
#include "acp_base.h"
|
|
|
|
#include "TBKobj.hpp"
|
|
|
|
#include "DPT.h"
|
|
#include "incGAM.h"
|
|
|
|
#include "_EditID.h"
|
|
|
|
/*=============================================================================
|
|
Globals
|
|
=============================================================================*/
|
|
|
|
|
|
//#################################################################################
|
|
// CONSTRUCTOR & DESTRUCTOR
|
|
//#################################################################################
|
|
|
|
/*===========================================================================
|
|
* Description: Constructor
|
|
* Creation date: 10/06/99
|
|
* Author: Shaitan
|
|
*---------------------------------------------------------------------------
|
|
* Revision date: Author:
|
|
*=========================================================================*/
|
|
TBK_BankObject::TBK_BankObject(TBK_BanksInterface *pInterface, TBK_tdeBankType eType, CString csName, BOOL bExistingBank)
|
|
: CPA_SaveObject (pInterface, C_szBankTypeName, E_ss_Responsible, NULL, TRUE, fn_szGetLevelsDataPath(), TBK_BankObject::TBK_fn_eCallBackSaveBank)
|
|
{
|
|
char szSectionName[SCR_CV_ui_Cfg_MaxLenName];
|
|
char szFileName[SCR_CV_ui_Cfg_MaxLenName];
|
|
|
|
// section object
|
|
SetSectionData(this);
|
|
// section name
|
|
sprintf(szFileName, "%s\\%s.bnk", fn_p_szGetLevelName(), fn_p_szGetLevelName());
|
|
SCR_fn_v_RdL0_ComputeSectionName(szSectionName, szFileName, (eType == TBK_E_bt_Common) ? C_CommonSectionName : C_BankSectionName, " ");
|
|
SetReferencedSectionName(szSectionName);
|
|
|
|
// name
|
|
if (fn_eRename(csName ) != E_mc_None)
|
|
SetDefaultValidName();
|
|
fn_vUpdateSectionName();
|
|
|
|
// existence
|
|
SetExistingSection(bExistingBank);
|
|
|
|
// init parameters
|
|
m_eBankType = eType;
|
|
m_lBankIndex = (m_eBankType == TBK_E_bt_Common) ? 0 : pInterface->m_fn_lAddANewBank();
|
|
|
|
// save bank
|
|
if (!bExistingBank && (m_eBankType != TBK_E_bt_Common))
|
|
fn_vNotifySave();
|
|
};
|
|
|
|
|
|
/*===========================================================================
|
|
* Description: Destructor
|
|
* Creation date: 10/06/99
|
|
* Author: Shaitan
|
|
*---------------------------------------------------------------------------
|
|
* Revision date: Author:
|
|
*=========================================================================*/
|
|
TBK_BankObject::~TBK_BankObject()
|
|
{
|
|
}
|
|
|
|
|
|
//#################################################################################
|
|
// SECTORS
|
|
//#################################################################################
|
|
|
|
/*===========================================================================
|
|
* Description: check if a sector belong to the bank
|
|
* Creation date: 11/06/99
|
|
* Author: Shaitan
|
|
*---------------------------------------------------------------------------
|
|
* Revision date: Author:
|
|
*=========================================================================*/
|
|
BOOL TBK_BankObject::m_fn_bIsSectorInBank (CPA_SuperObject *pSector)
|
|
{
|
|
return (m_oListOfSector.Find(pSector) != NULL);
|
|
}
|
|
|
|
/*===========================================================================
|
|
* Description: add a sector to the bank
|
|
* Creation date: 11/06/99
|
|
* Author: Shaitan
|
|
*---------------------------------------------------------------------------
|
|
* Revision date: Author:
|
|
*=========================================================================*/
|
|
BOOL TBK_BankObject::m_fn_bAddSectorToBank (CPA_SuperObject *pSector)
|
|
{
|
|
// check if the sector is already in the list
|
|
if (m_fn_bIsSectorInBank(pSector))
|
|
return FALSE;
|
|
|
|
// add sector to the list
|
|
m_oListOfSector.AddTail(pSector);
|
|
// update sector color
|
|
m_fn_pGetBanksInterface()->m_fn_vSetSectorColor(pSector, (tdeLocalColor) m_lBankIndex);
|
|
|
|
// notify bank for saving
|
|
if (!m_fn_pGetBanksInterface()->GetInterface()->fn_bIsLoadingWorld())
|
|
fn_vNotifySave();
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
/*===========================================================================
|
|
* Description: remove a sector from the bank
|
|
* Creation date: 11/06/99
|
|
* Author: Shaitan
|
|
*---------------------------------------------------------------------------
|
|
* Revision date: Author:
|
|
*=========================================================================*/
|
|
BOOL TBK_BankObject::m_fn_bRemoveSectorFromBank (CPA_SuperObject *pSector)
|
|
{
|
|
// check if the sector is really in the list
|
|
POSITION pos = m_oListOfSector.Find(pSector);
|
|
if (!pos)
|
|
return FALSE;
|
|
|
|
// remove sector from the list
|
|
m_oListOfSector.RemoveAt(pos);
|
|
|
|
// notify bank for saving
|
|
fn_vNotifySave();
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
/*===========================================================================
|
|
* Description: remove a sector from the bank
|
|
* Creation date: 11/06/99
|
|
* Author: Shaitan
|
|
*---------------------------------------------------------------------------
|
|
* Revision date: Author:
|
|
*=========================================================================*/
|
|
BOOL TBK_BankObject::m_fn_bTransferAllSectors (TBK_BankObject *pNewBank)
|
|
{
|
|
// empty list ?
|
|
if (!m_oListOfSector.GetCount())
|
|
return FALSE;
|
|
|
|
// transfer all list
|
|
while (m_oListOfSector.GetCount())
|
|
{
|
|
CPA_SuperObject *pSector = m_oListOfSector.RemoveTail();
|
|
pNewBank->m_fn_bAddSectorToBank(pSector);
|
|
}
|
|
// notify bank for saving
|
|
fn_vNotifySave();
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
/*===========================================================================
|
|
* Description: get the next sector (for tree)
|
|
* Creation date: 11/06/99
|
|
* Author: Shaitan
|
|
*---------------------------------------------------------------------------
|
|
* Revision date: Author:
|
|
*=========================================================================*/
|
|
CPA_SuperObject * TBK_BankObject::m_fn_pGetNextSector (CPA_SuperObject *pSector)
|
|
{
|
|
// empty list ?
|
|
if (!m_oListOfSector.GetCount())
|
|
return NULL;
|
|
|
|
// first sector ?
|
|
if (!pSector)
|
|
return m_oListOfSector.GetHead();
|
|
|
|
// next sector
|
|
return m_oListOfSector.GetNextElement(pSector);
|
|
}
|
|
|
|
|
|
/*===========================================================================
|
|
* Description: reinit the sector list
|
|
* Creation date: 16/06/99
|
|
* Author: Shaitan
|
|
*---------------------------------------------------------------------------
|
|
* Revision date: Author:
|
|
*=========================================================================*/
|
|
void TBK_BankObject::m_fn_vReinitSectorList (void)
|
|
{
|
|
m_oListOfSector.RemoveAll();
|
|
}
|
|
|
|
|
|
/*===========================================================================
|
|
* Description: update colors for the sectors of the bank
|
|
* Creation date: 16/06/99
|
|
* Author: Shaitan
|
|
*---------------------------------------------------------------------------
|
|
* Revision date: Author:
|
|
*=========================================================================*/
|
|
void TBK_BankObject::m_fn_vReinitSectorColors (BOOL bColor)
|
|
{
|
|
POSITION pos = m_oListOfSector.GetHeadPosition();
|
|
while (pos)
|
|
{
|
|
CPA_SuperObject *pSector = m_oListOfSector.GetNext(pos);
|
|
m_fn_pGetBanksInterface()->m_fn_vSetSectorColor(pSector, bColor ? (tdeLocalColor) m_lBankIndex : E_lc_NoColor);
|
|
}
|
|
}
|
|
|
|
|
|
//#################################################################################
|
|
// SAVES
|
|
//#################################################################################
|
|
|
|
/*===========================================================================
|
|
* Description: callback to save the bank
|
|
* Creation date:
|
|
* Author: Shaitan
|
|
*---------------------------------------------------------------------------
|
|
* Revision date: Author:
|
|
*=========================================================================*/
|
|
void TBK_BankObject::TBK_fn_eCallBackSaveBank (SCR_tdst_File_Description *p_stFile, char *szSectionName, void *p_vData, SCR_tde_Ntfy_Action eAction)
|
|
{
|
|
// get sector
|
|
TBK_BankObject *pBankObject = (TBK_BankObject *) p_vData;
|
|
CPA_SuperObject *pSector;
|
|
POSITION pos;
|
|
char szNewSectionName[SCR_CV_ui_Cfg_MaxLenName];
|
|
|
|
switch (eAction)
|
|
{
|
|
case SCR_EA_Ntfy_AddSection:
|
|
// go to end of file
|
|
SCR_fn_v_SvL1_ToEndSection(p_stFile);
|
|
SCR_M_SvL0_SaveBlankLine (p_stFile);
|
|
|
|
case SCR_EA_Ntfy_RebuildSection:
|
|
|
|
// save section name
|
|
SCR_fn_v_RdL0_ComputeSectionName(szNewSectionName, NULL, (pBankObject->m_fn_eGetBankType() == TBK_E_bt_Common) ? C_CommonSectionName : C_BankSectionName, (char *) (LPCSTR)pBankObject->GetName());
|
|
SCR_M_SvL0_SaveBeginSection(p_stFile, szNewSectionName, SCR_CC_C_Cfg_EOL);
|
|
|
|
// save list of sectors
|
|
pos = pBankObject->m_oListOfSector.GetHeadPosition();
|
|
while (pos)
|
|
{
|
|
SCR_M_SvL0_SaveEntry(p_stFile, C_BankSectorEntry, SCR_CC_C_Cfg_NoChar);
|
|
|
|
pSector = pBankObject->m_oListOfSector.GetNext(pos);
|
|
SCR_fn_v_SvL0_SaveParameters_MP(p_stFile, SCR_EF_SvL0_Normal, 1, pSector->GetReferencedSectionName());
|
|
|
|
}
|
|
|
|
// end section
|
|
SCR_M_SvL0_SaveEndSection (p_stFile, SCR_CC_C_Cfg_EOL);
|
|
if (eAction == SCR_EA_Ntfy_AddSection)
|
|
SCR_M_SvL0_SaveBlankLine (p_stFile);
|
|
|
|
// reinit existence
|
|
pBankObject->fn_vSectionSaved();
|
|
break;
|
|
|
|
case SCR_EA_Ntfy_DeleteSection:
|
|
// update existence
|
|
pBankObject->fn_vSectionDeleted();
|
|
break;
|
|
}
|
|
}
|