private void SetStatus(string msg, bool error = false, bool success = false) { if (msg == null) { msg = $"Created by thefifthmatt. Current config hash: {options.ConfigHash()}"; } statusL.Text = msg; statusStrip1.BackColor = error ? Color.IndianRed : (success ? Color.PaleGreen : SystemColors.Control); }
private async void randomize_Click(object sender, EventArgs e) { if (working) { return; } SetWarning(); Random seedRandom = new Random(); if (!defaultReroll.Checked && fixedseed.Text.Trim() != "") { if (uint.TryParse(fixedseed.Text.Trim(), out uint seed)) { options.Seed = seed; } else { SetStatus("Invalid fixed seed", true); return; } } else { options.Seed = (uint)seedRandom.Next(); } bool newEnemySeed = false; if (!defaultRerollEnemy.Checked && enemyseed.Text.Trim() != "" && enemyseed.Text != enemySeedPlaceholder) { if (uint.TryParse(enemyseed.Text.Trim(), out uint seed)) { options.Seed2 = seed; } else { SetStatus("Invalid enemy seed", true); return; } } // TODO: What is exact condition to use for when rerolling should be allowed? What is condition for enemySeedPlaceholder about to be set? else if (defaultRerollEnemy.Checked && defaultRerollEnemy.Enabled) { options.Seed2 = (uint)seedRandom.Next(); newEnemySeed = true; } else { options.Seed2 = 0; } SaveOptions(); RandomizerOptions rand = options.Copy(); working = true; string buttonText = randomize.Text; randomize.Text = $"Running..."; randomize.BackColor = Color.LightYellow; fixedseed.Text = rand.Seed.ToString(); if (newEnemySeed) { enemyseed.Text = rand.Seed2.ToString(); enemyseed.ForeColor = SystemColors.WindowText; } bool success = false; Randomizer randomizer = new Randomizer(); await Task.Factory.StartNew(() => { Directory.CreateDirectory("spoiler_logs"); string seed2 = rand.Seed2 == 0 || rand.Seed2 == rand.Seed ? "" : $"_{rand.Seed2}"; string runId = $"{DateTime.Now.ToString("yyyy-MM-dd_HH.mm.ss")}_log_{rand.Seed}{seed2}_{rand.ConfigHash()}.txt"; TextWriter log = File.CreateText($@"spoiler_logs\{runId}"); TextWriter stdout = Console.Out; Console.SetOut(log); try { randomizer.Randomize(rand, status => { SetStatus(status); }, sekiro: true, preset: selectedPreset); SetStatus($"Done! Hints and spoilers in spoiler_logs directory as {runId} - Restart your game!!", success: true); success = true; } catch (Exception ex) { Console.WriteLine(ex); SetError($"Error encountered: {ex.Message}\r\nIt may work to try again with a different seed. See most recent file in spoiler_logs directory for the full error."); SetStatus($"Error! Partial log in spoiler_logs directory as {runId}", true); } finally { log.Close(); Console.SetOut(stdout); } }); randomize.Text = buttonText; randomize.BackColor = SystemColors.Control; working = false; if (success) { RefreshImage(); } }
private void SetStatus(string msg, bool error = false, bool success = false) { if (msg == null) { DateTime now = DateTime.Now; msg = "Created by thefifthmatt. Art by Souv" + (now.Month == 3 && now.Day == 22 ? ". Happy Birthday Sekiro!" : ".") + $" Current config hash: {options.ConfigHash()}"; } statusL.Text = msg; statusStrip1.BackColor = error ? Color.IndianRed : (success ? Color.PaleGreen : SystemColors.Control); }