public static void Save(bool message)
{
object[] objArray1;
if (World.m_Saving || (AsyncWriter.ThreadCount > 0))
{
return;
}
World.m_Saving = true;
if (message)
{
World.Broadcast(53, true, "The world is saving, please wait.");
}
Console.Write("World: Saving...");
DateTime time1 = DateTime.Now;
if (!Directory.Exists("Saves/Mobiles/"))
{
Directory.CreateDirectory("Saves/Mobiles/");
}
if (!Directory.Exists("Saves/Items/"))
{
Directory.CreateDirectory("Saves/Items/");
}
if (!Directory.Exists("Saves/Guilds/"))
{
Directory.CreateDirectory("Saves/Guilds/");
}
if (!Directory.Exists("Saves/Regions/"))
{
Directory.CreateDirectory("Saves/Regions/");
}
World.SaveMobiles();
World.SaveItems();
World.SaveGuilds();
World.SaveRegions();
try
{
EventSink.InvokeWorldSave(new WorldSaveEventArgs(message));
}
catch (Exception exception1)
{
throw new Exception("World Save event threw an exception. Save failed!", exception1);
}
GC.Collect();
DateTime time2 = DateTime.Now;
TimeSpan span1 = ((TimeSpan)(time2 - time1));
Console.WriteLine("done in {0:F1} seconds.", span1.TotalSeconds);
if (message)
{
objArray1 = new object[1];
span1 = ((TimeSpan)(time2 - time1));
objArray1[0] = span1.TotalSeconds;
World.Broadcast(53, true, "World save complete. The entire process took {0:F1} seconds.", objArray1);
}
World.m_Saving = false;
}