public void Run() { Console.WriteLine(JournalPath); var journalFileName = FileUtils.GetJournalFilenames(JournalPath).OrderByDescending(x => x.StartDate).FirstOrDefault(); if (journalFileName == null) { Console.WriteLine("Could not find a journal file to open"); return; } Console.WriteLine($"Using journal file {journalFileName.Fullpath}"); var journalFile = new EliteJournal(journalFileName.Fullpath); int i = 0; while (true) { foreach (var line in journalFile.GetLines()) { Console.WriteLine(journalFile.FilePosition.ToString() + " " + line); } i++; if (i > 20) { i = 0; var latestJournal = FileUtils.GetLatestJournalFilename(JournalPath); if (latestJournal.Fullpath != journalFileName.Fullpath) { journalFileName = latestJournal; journalFile = new EliteJournal(journalFileName.Fullpath); } } Thread.Sleep(250); } }
public void Run() { // tell panel to start up controlPanel.SendCommand(new StartupCommand()); Thread.Sleep(100); // TODO: exit condition while (true) { InitJournalReader(); InitStatusReader(); ship.JournalFileName = journalFile.Filename; var items = new List <IEliteEventHeader>(); if (journalFile != null) { items.AddRange(journalFile.GetLines().Select(s => { var a = JsonConvert.DeserializeObject <JournalHeader>(s); a._InputLine = s; return(a); })); } var status = statusFile?.GetStatus()?.FirstOrDefault(); if (status != null) { items.Add(status); } bool update = false; bool clear = true; foreach (var item in items.OrderBy(i => i.Timestamp)) { if (parser.Parse(item, ship)) { if (!item.EventName.Equals("status", StringComparison.InvariantCultureIgnoreCase)) { if (clear) { ship.LastJournalLines.Clear(); } clear = false; ship.LastJournalLines.Add(item._InputLine); } update = true; } } if (Console.KeyAvailable) { var key = Console.ReadKey(); if (key.Key == ConsoleKey.Escape) { Thread.Sleep(100); controlPanel.SendCommand(new ShutdownCommand()); Thread.Sleep(500); break; } if (key.Key == ConsoleKey.U) { update = true; } } if (update) { ship.RenderToConsole(); controlPanel.SendCommand(new LED7SegCommand(0, ship.Cargo)); int tempFuel = ship.TotalFuelKg; controlPanel.SendCommand(new LED7SegIntCommand(1, tempFuel)); controlPanel.SendCommand(new LCDLineCommand(0, $"@ {ship.Location}")); controlPanel.SendCommand(new LCDLineCommand(1, $"{ship.RemainingJumpsInRoute}> {ship.FSDTarget} ({ship.FSDTargetStarClass})")); controlPanel.SendCommand(new LCDLineCommand(2, $"* {ship.TargetName}")); if (!ship.TargetLocked) { controlPanel.SendCommand(new LCDLineCommand(3, $"?")); } if (ship.TargetLocked && ship.TargetScanStage < 3) { string scantext = "***"; controlPanel.SendCommand(new LCDLineCommand(3, $"! {ship.TargetName} {scantext.Substring(0, ship.TargetScanStage + 1)}")); } if (ship.TargetLocked && ship.TargetScanStage == 3) { controlPanel.SendCommand(new LCDLineCommand(3, $"! {ship.TargetName} {((ship.TargetWanted ?? false) ? "W!" : "C")}")); } controlPanel.SendCommand(new ShiftRegisterCommand(ship)); } Thread.Sleep(100); } }