reman3/Rayman_X/cpa/tempgrp/TBK/Src/TBKobj.cpp

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;
}
}