private void LoadCluDescript(string fileName)
{
// The cluster description file is always little endian (even on the mac version, whose cluster files are big endian)
using (var stream = ServiceLocator.FileStorage.OpenFileRead(fileName))
using (var file = new BinaryReader(stream))
{
_prj = new Prj();
_prj.noClu = file.ReadUInt32();
_prj.clu = new Clu[_prj.noClu];
var cluIndex = file.ReadUInt32s((int)_prj.noClu);
for (uint clusCnt = 0; clusCnt < _prj.noClu; clusCnt++)
if (cluIndex[clusCnt] != 0)
{
var cluster = _prj.clu[clusCnt] = new Clu();
cluster.label = new string(file.ReadChars(MAX_LABEL_SIZE));
cluster.file = null;
cluster.noGrp = file.ReadUInt32();
cluster.grp = new Grp[cluster.noGrp];
cluster.nextOpen = null;
cluster.refCount = 0;
var grpIndex = file.ReadUInt32s((int)cluster.noGrp);
for (uint grpCnt = 0; grpCnt < cluster.noGrp; grpCnt++)
if (grpIndex[grpCnt] != 0)
{
Grp group = cluster.grp[grpCnt] = new Grp();
group.noRes = file.ReadUInt32();
group.resHandle = new MemHandle[group.noRes];
group.offset = new uint[group.noRes];
group.length = new uint[group.noRes];
var resIdIdx = file.ReadUInt32s((int)@group.noRes);
for (uint resCnt = 0; resCnt < group.noRes; resCnt++)
{
if (resIdIdx[resCnt] != 0)
{
group.offset[resCnt] = file.ReadUInt32();
group.length[resCnt] = file.ReadUInt32();
group.resHandle[resCnt] = new MemHandle();
_memMan.InitHandle(group.resHandle[resCnt]);
}
else
{
group.offset[resCnt] = 0xFFFFFFFF;
group.length[resCnt] = 0;
group.resHandle[resCnt] = new MemHandle();
_memMan.InitHandle(group.resHandle[resCnt]);
}
}
}
}
if (_prj.clu[3].grp[5].noRes == 29)
for (byte cnt = 0; cnt < 29; cnt++)
_srIdList[cnt] = (uint)(0x04050000 | cnt);
}
}