private void setCollectionChanged(bool changed, string species = null)
{
if (changed)
{
if (species == null || (pedigree1.creature != null && pedigree1.creature.species == species))
pedigreeNeedsUpdate = true;
if (species == null || breedingPlan1.currentSpecies == species)
breedingPlanNeedsUpdate = true;
}
if (autoSave && changed)
{
// save changes automatically
// backup currentFile if older than 5 min
if (currentFileName != "" && autoSaveMinutes > 0 && (DateTime.Now - lastAutoSaveBackup).TotalMinutes > autoSaveMinutes)
{
string filenameWOExt = Path.GetFileNameWithoutExtension(currentFileName);
File.Copy(currentFileName, Path.GetDirectoryName(currentFileName) + "\\" + filenameWOExt + "_backup_" + DateTime.Now.ToString("yyyyMMdd_HHmmss") + ".xml");
lastAutoSaveBackup = DateTime.Now;
// delete oldest backupfile if more than a certain number
var directory = new System.IO.DirectoryInfo(Path.GetDirectoryName(currentFileName));
var oldBackupfiles = directory.GetFiles().Where(f => (f.Name.Length > filenameWOExt.Length + 8 && f.Name.Substring(0, filenameWOExt.Length + 8) == filenameWOExt + "_backup_")).OrderByDescending(f => f.LastWriteTime).Skip(3).ToList();
foreach (FileInfo f in oldBackupfiles)
{
f.Delete();
}
}
// save changes
saveCollection();
return; // function is called soon again from savecollection()
}
collectionDirty = changed;
string fileName = System.IO.Path.GetFileName(currentFileName);
this.Text = "ARK Smart Breeding" + (fileName.Length > 0 ? " - " + fileName : "") + (changed ? " *" : "");
}