#include "pch.h"
#include "treasureSetIGC.h"
HRESULT CtreasureSetIGC::Initialize(ImissionIGC* pMission, Time now, const void* data, int dataSize)
{
assert (pMission);
m_pMission = pMission;
ZRetailAssert (data && (dataSize >= sizeof(DataTreasureSetIGC)));
int size;
if (((DataTreasureSetIGC*)data)->nTreasureData == 0)
{
assert (dataSize == sizeof(DataTreasureSetIGC));
const short c_maxDefault = 10;
m_maxTreasureData = c_maxDefault;
size = sizeof(DataTreasureSetIGC) +
c_maxDefault * sizeof(TreasureData);
}
else
{
m_maxTreasureData = ((DataTreasureSetIGC*)data)->nTreasureData;
assert (dataSize == int(sizeof(DataTreasureSetIGC) +
m_maxTreasureData *
sizeof(TreasureData)));
size = dataSize;
}
assert (size >= dataSize);
m_data = (DataTreasureSetIGC*)(new char [size]);
memcpy(m_data, data, dataSize);
m_totalTreasureChance = 0;
{
TreasureData* ptd = m_data->treasureData0();
for (short i = 0; (i < m_data->nTreasureData); i++)
m_totalTreasureChance += (ptd + i)->chance;
}
pMission->AddTreasureSet(this);
return S_OK;
}
int CtreasureSetIGC::Export(void* data) const
{
int size = sizeof(DataTreasureSetIGC) + sizeof(TreasureData) *
m_data->nTreasureData;
if (data)
memcpy(data, m_data, size);
return size;
}