Exemplo n.º 1
0
 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);
 }
Exemplo n.º 2
0
        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();
            }
        }
Exemplo n.º 3
0
 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);
 }