protected void SaveMobiles(SaveMetrics metrics)
{
Dictionary <Serial, Mobile> mobiles = World.Mobiles;
GenericWriter idx;
GenericWriter tdb;
GenericWriter bin;
if (UseSequentialWriters)
{
idx = new BinaryFileWriter(World.MobileIndexPath, false);
tdb = new BinaryFileWriter(World.MobileTypesPath, false);
bin = new BinaryFileWriter(World.MobileDataPath, true);
}
else
{
idx = new AsyncWriter(World.MobileIndexPath, false);
tdb = new AsyncWriter(World.MobileTypesPath, false);
bin = new AsyncWriter(World.MobileDataPath, true);
}
idx.Write(( int )mobiles.Count);
foreach (Mobile m in mobiles.Values)
{
long start = bin.Position;
idx.Write(( int )m.m_TypeRef);
idx.Write(( int )m.Serial);
idx.Write(( long )start);
m.Serialize(bin);
if (metrics != null)
{
metrics.OnMobileSaved(( int )(bin.Position - start));
}
idx.Write(( int )(bin.Position - start));
m.FreeCache();
}
tdb.Write(( int )World.m_MobileTypes.Count);
for (int i = 0; i < World.m_MobileTypes.Count; ++i)
{
tdb.Write(World.m_MobileTypes[i].FullName);
}
idx.Close();
tdb.Close();
bin.Close();
}