public void SetDirtyFlags(RegionFile region)
{
if (lastBiomeAction == null || lastPopulateAction == null)
throw new Exception("No record of last region save state.");
region.Dirty = false;
foreach (ChunkState state in lastBiomeAction.Chunks)
{
Chunk c = region.Chunks[state.Coords.X, state.Coords.Z];
if (c == null)
continue;
else if (c.Root == null)
{
c.Dirty = false;
continue;
}
if (ByteArraysEqual((byte[])c.Root["Level"]["Biomes"], state.Biomes))
{
c.Dirty = false;
}
else
{
c.Dirty = true;
region.Dirty = true;
}
}
for (int chunkX = 0; chunkX < 32; chunkX++)
{
for (int chunkZ = 0; chunkZ < 32; chunkZ++)
{
Chunk c = region.Chunks[chunkX, chunkZ];
if (c == null)
continue;
else if (c.Root == null)
{
c.Dirty = false;
continue;
}
if (((byte)c.Root["Level"]["TerrainPopulated"]) != lastPopulateAction.PopulatedFlags[chunkX, chunkZ])
{
c.Dirty = true;
region.Dirty = true;
}
}
}
}