use std::path::Path; use anyhow::ensure; use crate::option_flags::OptionFlags; use crate::rom::RomData; use crate::PatchSet; impl RomData { pub fn randomize( &mut self, base_patch: &Path, option_flags: OptionFlags, seed: i32, ) -> anyhow::Result<()> { ensure!( self.is_randomizer(), "Enemizer only supports randomizer ROMs for input." ); ensure!(!self.is_race(), "Enemizer does not support race roms."); if self.is_enemizer() { // Reuse seed in ROM, not the one given. self.reset_enemizer(); } else { self.set_enemizer_seed(seed); } self.expand_rom(); self.set_info_flags(option_flags)?; let patches = PatchSet::load(base_patch)?; patches.patch_rom(self); Ok(()) } }