CvCivicInfo::CvCivicInfo() :
m_piCivicAttitudeChanges(NULL),
m_pszCivicAttitudeReason(NULL),
...
CvCivicInfo::~CvCivicInfo()
{
...
SAFE_DELETE_ARRAY(m_piCivicAttitudeChanges);
SAFE_DELETE_ARRAY(m_pszCivicAttitudeReason);
...
int* CvCivicInfo::getCivicAttitudeChanges() const
{
return m_piCivicAttitudeChanges;
}
int CvCivicInfo::getCivicAttitudeChange(int i) const
{
FAssertMsg(i < GC.getNumCivicInfos(), "Index out of bounds");
FAssertMsg(i > -1, "Index out of bounds");
return m_piCivicAttitudeChanges ? m_piCivicAttitudeChanges[i] : 0;
}
const wchar* CvCivicInfo::getCivicAttitudeReason(int i) const
{
FAssertMsg(i < GC.getNumCivicInfos(), "Index out of bounds");
FAssertMsg(i > -1, "Index out of bounds");
return m_pszCivicAttitudeReason ? m_pszCivicAttitudeReason[i] : -1;
}
....
void CvCivicInfo::read(FDataStreamBase* stream)
{
...
SAFE_DELETE_ARRAY(m_piCivicAttitudeChanges);
m_piCivicAttitudeChanges = new int[GC.getNumCivicInfos()];
stream->Read(GC.getNumCivicInfos(), m_piCivicAttitudeChanges);
SAFE_DELETE_ARRAY(m_pszCivicAttitudeReason);
m_pszCivicAttitudeReason = new CvString[GC.getNumCivicInfos()];
stream->ReadString(GC.getNumCivicInfos(), m_pszCivicAttitudeReason);
...
void CvCivicInfo::write(FDataStreamBase* stream)
{
...
stream->Write(GC.getNumCivicInfos(), m_piCivicAttitudeChanges);
stream->WriteString(GC.getNumCivicInfos(), m_pszCivicAttitudeReason);
...
bool CvCivicInfo::read(CvXMLLoadUtility* pXML)
{....
pXML->InitList(&m_piCivicAttitudeChanges, GC.getNumCivicInfos(), 0);
pXML->InitList(&m_pszCivicAttitudeReason, GC.getNumCivicInfos(), "");
...
bool CvCivicInfo::readPass2(CvXMLLoadUtility* pXML)
{
if (!CvInfoBase::read(pXML))
{
return false;
}
if (gDLL->getXMLIFace()->SetToChildByTagName(pXML->GetXML(),"CivicAttitudeChanges"))
{
//gDLL->MessageBox("Found CivicAttitudeChanges", "readPass2");
if (pXML->SkipToNextVal())
{
// gDLL->MessageBox("Found first CivicAttitudeChange", "readPass2");
pXML->InitList(&m_piCivicAttitudeChanges, GC.getNumCivicInfos(), 0);
int iCount = gDLL->getXMLIFace()->GetNumChildren(pXML->GetXML());
TCHAR szCivicKey[256];
if (gDLL->getXMLIFace()->SetToChild(pXML->GetXML()))
{
if(!(iCount <= GC.getNumCivicInfos()))
{
char szMessage[1024];
sprintf(szMessage, "For loop iterator is greater than array size \n Current XML file is: %s", GC.getCurrentXMLFile().GetCString());
gDLL->MessageBox(szMessage, "XML Error");
}
for (int i = 0; i < iCount; i++)
{
if (pXML->SkipToNextVal())
{
if (pXML->GetChildXmlVal(szCivicKey))
{
char szMessage[1024];
sprintf(szMessage, "Civic: %s", szCivicKey);
//gDLL->MessageBox(szMessage, "readPass2");
int iCivicType = pXML->FindInInfoClass(szCivicKey);
if (iCivicType >= 0)
{
pXML->GetNextXmlVal(&m_piCivicAttitudeChanges[iCivicType]);
pXML->GetNextXmlVal(&m_pszCivicAttitudeReason[iCivicType]);
gDLL->getXMLIFace()->SetToParent(pXML->GetXML());
char szMessage[1024];
sprintf(szMessage, "Modifier: %d", m_piCivicAttitudeChanges[iCivicType]);
//gDLL->MessageBox(szMessage, "readPass2");
}
else
{
// skip unknown civic type
gDLL->getXMLIFace()->SetToParent(pXML->GetXML());
}
}
if (!gDLL->getXMLIFace()->NextSibling(pXML->GetXML()))
{
break;
}
}
}
gDLL->getXMLIFace()->SetToParent(pXML->GetXML());
}
}
gDLL->getXMLIFace()->SetToParent(pXML->GetXML());
}
else
{
pXML->InitList(&m_piCivicAttitudeChanges, GC.getNumCivicInfos(), 0);
}
return true;
}