コード例 #1
0
ファイル: EnemizerForm.cs プロジェクト: tcprescott/Enimizer
        string GenerateSeed(int seed, byte[] rom_data, string linkSpriteFilename, string inputFilename, string outputPath)
        {
#if !DEBUG
            try // make sure we don't crash in release build
            {
#endif

            RomData romData         = new RomData(rom_data);
            Randomization randomize = new Randomization();
            RomData randomizedRom   = randomize.MakeRandomization("", seed, config.OptionFlags, romData, linkSpriteFilename);

            string fileNameNoExtension = Path.Combine(outputPath, $"Enemizer {EnemizerLibrary.Version.CurrentVersion} - {Path.GetFileNameWithoutExtension(inputFilename)} (EN{randomizedRom.EnemizerSeed})");

            if (config.OptionFlags.GenerateSpoilers)
            {
                File.WriteAllText($"{fileNameNoExtension}.txt", randomizedRom.Spoiler.ToString());
            }

#if DEBUG
            // build a patch for testing
            var romPatch = randomizedRom.GeneratePatch();
            string patch = JsonConvert.SerializeObject(romPatch);
            File.WriteAllText($"{fileNameNoExtension}.patch", patch);
#endif

            Randomization.SetSwordGfx(randomizedRom, config.OptionFlags.SwordGraphics);
            Randomization.SetShieldGfx(randomizedRom, config.OptionFlags.ShieldGraphics);
            if (config.OptionFlags.RandomizeSpriteOnHit)
            {
                Randomization.BuildRandomLinkSpriteTable(randomizedRom, seed, config.OptionFlags);
            }

            string fileName = $"{fileNameNoExtension}.sfc";
            var fs          = new FileStream(fileName, FileMode.Create, FileAccess.Write);
            randomizedRom.WriteRom(fs);
            fs.Close();


            return(fileName);

#if !DEBUG
        }

        catch (Exception ex)
        {
            logger.Error(ex);
            MessageBox.Show($"{ex.Message}\r\n{ex.StackTrace}", "Enemizer");
        }

        return("Failed");
#endif
        }