/// <summary> /// Metoda vrátí generaci se zadaným pořadovým číslem, které obdrží. Zároveň vymaže všechny budoucí záznamy. /// </summary> /// <param name="number">pořadové číslo generace</param> /// <returns>Metoda vrací generaci s požadovaným pořadovým číslem.</returns> public Generation LoadRecord(int number) { Generation wantedGeneration = Changelog[0].Generation; //generace s požadovaným pořadovým číslem Generation loadedRecord = Changelog[0].Generation; //záznam načtený z Changelogu for (int i = 0; i < Changelog.Count; i++) { //získání generace, která předchází požadované generaci //generaace jsou řazeny chronologicky if (Changelog[i].Generation.GenerationNumber < number) { loadedRecord = Changelog[i].Generation; } } int difference = number - loadedRecord.GenerationNumber; //počet generací mezi načteným záznamem a požadovanou generací wantedGeneration = loadedRecord; //dopočítání požadované generace for (int i = 0; i < difference; i++) { wantedGeneration = new Generation(wantedGeneration.GenerationNumber + 1, wantedGeneration.NextGeneration()); } int serialNumber = Changelog.IndexOf(loadedRecord); //pořadové číslo záznamu v Changelogu, který předchází požadované generaci //vymazání všech generací, které následují Changelog.RemoveRange(serialNumber + 1, Changelog.Count - serialNumber - 1); CurrentGeneration = wantedGeneration.GenerationNumber; //aktuální číslo vykreslené generace return(wantedGeneration); }