static void RunWithOptions(Options opt) { if (opt.InputFile == null && opt.InputFolder == null) { Console.WriteLine("ERROR: Input file OR folder must be provided"); return; } if (opt.OutputFile == null && opt.OutputFolder == null) { Console.WriteLine("ERROR: Input file OR folder must be provided"); return; } if (opt.OutputFile != null) { s_writer = new SingleFileGameWriter(opt.OutputFile); } else if (opt.OutputFolder != null) { s_writer = new MultiFileGameWriter(opt.OutputFolder); } if (opt.InputFile != null) { SingleFileProcessor sfp = new SingleFileProcessor(opt.InputFile); sfp.GameComplete += GameComplete; sfp.Run(); sfp.GameComplete -= GameComplete; } else if (opt.InputFolder != null) { MultiFileProcessor mfp = new MultiFileProcessor(opt.InputFolder); mfp.GameComplete += GameComplete; mfp.Run(); mfp.GameComplete -= GameComplete; } s_writer.Finish(); //int discards = c.TrackedGames.Values.Sum(x => x.Discards); //int processed = c.TrackedGames.Values.Sum(x => x.Processed); //int errors = c.TrackedGames.Values.Sum(x => x.Errors); //IEnumerable<string> errorGameIds = c.TrackedGames.Values.Where(x => x.Errors > 0).Select(x => x.GameId); //Console.WriteLine($"Error Games:"); //foreach (var game in errorGameIds) // Console.WriteLine(game); //Console.WriteLine("========="); //Console.WriteLine($"Updates Processed: {processed}\nDuplicates Discarded: {discards}\nGames With Errors: {errorGameIds.Count()}\nErrors: {errors}\nGames Found: {c.TrackedGames.Keys.Count}"); }
public GameServer(IPAddress ipAddress, IGameWriter writer) { IpAddress = ipAddress; GameWriter = writer; ModManager = new ModManager(this); }
private Game() { this.writer = new ConsoleGameWriter(); }