readFromChunk static method
Implementation
static List<ZoneInfo> readFromChunk(BinaryReader reader, int size)
{
if (size % 4 != 0)
{
throw "The zone list is invalid.";
}
int count = size ~/ 4;
List<ZoneInfo> z = [];
for (var i = 0; i < count; i++)
{
int genIdx = reader.readUInt16();
int modIdx = reader.readUInt16();
z.add(ZoneInfo(
generatorIndex: genIdx,
modulatorIndex: modIdx,
generatorCount: 0,
modulatorCount: 0
));
}
List<ZoneInfo> zones = [];
for (var i = 0; i < count - 1; i++)
{
int generatorCount = z[i + 1].generatorIndex - z[i].generatorIndex;
int modulatorCount = z[i + 1].modulatorIndex - z[i].modulatorIndex;
zones.add(ZoneInfo(
generatorIndex: z[i].generatorIndex,
modulatorIndex: z[i].modulatorIndex,
generatorCount: generatorCount,
modulatorCount: modulatorCount
));
}
// the last one stays the same
zones.add(z[count - 1]);
return zones;
}