int OnExecute(IConsole console) { RandomizerSettings settings; if (!String.IsNullOrEmpty(Preset)) { try { settings = new RandomizerSettings( Seed, FFR.Common.Presets.Load(Preset).Flags, new Preferences() ); } catch (System.IO.FileNotFoundException) { console.Error.WriteLine($"Preset not found: '{Preset}'"); return(1); } } else if (!String.IsNullOrEmpty(Import)) { try { settings = RandomizerSettings.FromImportString(Import); } catch { console.Error.WriteLine("Ensure that you are using an import string in a format as supplied by crim_bot or the finalfantasyrandomizer.com web version."); return(1); } } else if (!String.IsNullOrEmpty(Json)) { try { settings = RandomizerSettings.FromJson(Seed, Json); } catch { console.Error.WriteLine("Ensure valid Json exported from finalfantasyrandomizer.com."); return(1); } } else { try { settings = new RandomizerSettings(Seed, FlagString); } catch (Exception e) { console.Error.WriteLine(e.ToString()); console.Error.WriteLine("Ensure that you are using an 8 character hexadecimal string as a seed and a valid base64 encoded set of flags."); return(1); } } var outFile = String.IsNullOrEmpty(OutFile) ? GenerateDefaultFilename(RomPath, settings) : OutFile; var rom = new FF1Rom(RomPath); rom.Randomize(settings.Seed, settings.Flags, settings.Preferences); rom.Save(outFile); if (Verbose) { console.WriteLine($"Seed: {settings.Seed.ToHex()}"); console.WriteLine($"Flags: {Flags.EncodeFlagsText(settings.Flags)}"); } console.WriteLine($"ROM created at: {outFile}"); return(0); }