using System; using System.Linq; using System.Collections.Generic; using System.IO; namespace EDJournal { public class PlayerJournal { public static string DefaultPath = "%UserProfile%\\Saved Games\\Frontier Developments\\Elite Dangerous"; private List journalfiles = new List(); private string basepath = null; public string Location => basepath; public PlayerJournal() { Initialise(DefaultPath); } public PlayerJournal(string path) { Initialise(path); } private void Initialise(string path) { basepath = Environment.ExpandEnvironmentVariables(path); ScanFiles(); } public List Files { get { return journalfiles; } } public void Open() { if (!Directory.Exists(basepath)) { throw new JournalException("Invalid base path, path could not be found"); } this.ScanFiles(); } public JournalFile GetLastFile() { var lastfile = Files .GroupBy(x => x.Timestamp) .Last() .ToArray() .Last() ; return lastfile; } public void ScanFiles() { var files = Directory.EnumerateFiles(basepath); journalfiles.Clear(); foreach (var file in files) { string full = Path.Combine(basepath, file); try { JournalFile journalfile = new JournalFile(full); journalfiles.Add(journalfile); } catch (JournalException) { /* invalid journal file, or one of the other json files in there */ continue; } } journalfiles.Sort(); } } }