public bool Backup()
{
Int16 backupNumber;
string nextBackupPath;
if (!Directory.Exists(backupPath))
{
Directory.CreateDirectory(backupPath);
backupNumber = 1;
// If we have to make the backup path, we should ensure it gets backed up!
backedup = false;
}
else
{
// Count how many backups we have
backupNumber = Convert.ToInt16(Directory.GetDirectories(backupPath + name).Length + 1);
}
// Only make a backup if we need it.
if (!backedup)
{
try
{
nextBackupPath = backupPath + name + "/" + backupNumber + "/";
if (!Directory.Exists(nextBackupPath))
{
Directory.CreateDirectory(nextBackupPath);
}
File.Copy(levelPath, nextBackupPath + name + ".lvl", true);
backedup = true;
foreach (Player p in Player.players)
{
if (p.level == this)
p.SendMessage("Backup " + backupNumber + " saved.");
}
Logger.Log("Backup " + backupNumber + " saved for " + this.name);
}
catch (Exception e)
{
Logger.Log("Failed to backup: " + name, LogType.Error);
Logger.Log(e.Message, LogType.ErrorMessage);
Player.GlobalMessage("Failed to backup: " + name);
}
}
else
{
Logger.Log("Map unchanged, skipping backup", LogType.Debug);
}
return backedup;
}