CvUnitInfo::CvUnitInfo() :
...
m_pbPrereqBuildingClass(NULL),
...
CvUnitInfo::~CvUnitInfo()
{...
SAFE_DELETE_ARRAY(m_pbPrereqBuildingClass);
...}
bool CvUnitInfo::getPrereqBuildingClass(int i) const //Afforess
{
FAssertMsg(i < GC.getNumBuildingClassInfos(), "Index out of bounds");
FAssertMsg(i > -1, "Index out of bounds");
return m_pbPrereqBuildingClass ? m_pbPrereqBuildingClass[i] : false;
}
...}
void CvUnitInfo::read(FDataStreamBase* stream)
{...
SAFE_DELETE_ARRAY(m_pbPrereqBuildingClass);
m_pbPrereqBuildingClass = new bool[GC.getNumBuildingClassInfos()];
stream->Read(GC.getNumBuildingClassInfos(), m_pbPrereqBuildingClass);
...}
void CvUnitInfo::write(FDataStreamBase* stream)
{...
stream->Write(GC.getNumBuildingClassInfos(), m_pbPrereqBuildingClass);
...}
bool CvUnitInfo::read(CvXMLLoadUtility* pXML)
{...
pXML->SetVariableListTagPair(&m_pbPrereqBuildingClass, "PrereqBuildingClass", sizeof(GC.getBuildingClassInfo((BuildingClassTypes)0)), GC.getNumBuildingClassInfos());
...}
void CvUnitInfo::copyNonDefaults(CvUnitInfo* pClassInfo)
{ ...
for ( int i = 0; i < GC.getNumBuildingClassInfos(); i++) //Afforess
{
if ( getPrereqBuildingClass(i) == bDefault )
{
m_pbPrereqBuildingClass[i] = pClassInfo->getPrereqBuildingClass(i);
}
}
...}