예제 #1
0
def main(argv):
    args = parser.parse_args(argv)

    settings = RandomizerData(args.seed, args.difficulty, args.goal, args.logic, args.statues, args.enemizer, args.start, args.firebird, args.ohko, args.red_jewel_madness,
                              args.allow_glitches, args.boss_shuffle, args.overworld_shuffle, args.dungeon_shuffle)

    rom_filename = generate_filename(settings, "sfc")
    spoiler_filename = generate_filename(settings, "json")

    randomizer = Randomizer(args.path)
    patch = randomizer.generate_rom(rom_filename, settings)
    spoiler = randomizer.generate_spoiler()

    write_patch(patch, rom_filename, args.path)
    write_spoiler(spoiler, spoiler_filename, args.path)
예제 #2
0
def generateSeed() -> Response:
    request_data = SeedRequest(request.get_json())
    settings = Settings(request_data.seed, request_data.difficulty, request_data.goal,
                        request_data.logic,
                        request_data.statues, request_data.enemizer, request_data.start_location, request_data.firebird,
                        request_data.ohko, request_data.red_jewel_madness, request_data.allow_glitches,
                        request_data.boss_shuffle, request_data.open_mode, request_data.z3_mode, request_data.overworld_shuffle, request_data.entrance_shuffle)

    randomizer = Randomizer("./data/gaia.bin")
    result = __generate(randomizer, settings, request_data.generate_race_rom, 0)
    if result is None:
        return make_response("Failed to generate a seed", 500)

    if result.patch is None:
        return make_response("Failed to generate a seed", 500)

    patch = result.patch
    spoiler = result.spoiler
    permalink = result.permalink

    response = SeedResponse(patch.patch, patch.patchName, patch.version, permalink)
    if spoiler is not None:
        response.spoiler = spoiler.spoiler
        response.spoilerName = spoiler.spoilerName

    if permalink is not None:
        response.permalink_id = permalink

    return make_response(response.to_json(), 200)
예제 #3
0
파일: gui.py 프로젝트: neomatamune/IoGR
def generate_ROM():
    rompath = ROM.get()
    seed_str = seed.get()

    def get_difficulty():
        d = difficulty.get()
        if d == "Easy":
            return Difficulty.EASY
        if d == "Normal":
            return Difficulty.NORMAL
        if d == "Hard":
            return Difficulty.HARD
        if d == "Extreme":
            return Difficulty.EXTREME

    def get_goal():
        g = goal.get()
        if g == "Dark Gaia":
            return Goal.DARK_GAIA
        if g == "Apocalypse Gaia":
            return Goal.APO_GAIA
        if g == "Random Gaia":
            return Goal.RANDOM_GAIA
        if g == "Red Jewel Hunt":
            return Goal.RED_JEWEL_HUNT

    def get_logic():
        l = logic.get()
        if l == "Completable":
            return Logic.COMPLETABLE
        if l == "Beatable":
            return Logic.BEATABLE
        if l == "Chaos":
            return Logic.CHAOS

    def get_enemizer():
        e = enemizer.get()
        if e == "None":
            return Enemizer.NONE
        if e == "Limited":
            return Enemizer.LIMITED
        if e == "Balanced":
            return Enemizer.BALANCED
        if e == "Full":
            return Enemizer.FULL
        if e == "Insane":
            return Enemizer.INSANE

    def get_start_location():
        g = start.get()
        if g == "South Cape":
            return StartLocation.SOUTH_CAPE
        if g == "Safe":
            return StartLocation.SAFE
        if g == "Unsafe":
            return StartLocation.UNSAFE
        if g == "Forced Unsafe":
            return StartLocation.FORCED_UNSAFE

    if not seed_str.isdigit():
        tkinter.messagebox.showinfo("ERROR",
                                    "Please enter or generate a valid seed")
        return

    try:
        seed_int = int(seed_str)
        settings = RandomizerData(seed_int, get_difficulty(), get_goal(),
                                  get_logic(), statues.get(), get_enemizer(),
                                  get_start_location(), firebird.get(),
                                  ohko.get(), red_jewel_madness.get(),
                                  glitches.get(), boss_shuffle.get(),
                                  open_mode.get())

        rom_filename = generate_filename(settings, "sfc")
        spoiler_filename = generate_filename(settings, "json")

        randomizer = Randomizer(rompath)

        patch = randomizer.generate_rom(rom_filename, settings)
        spoiler = randomizer.generate_spoiler()

        write_patch(patch, rompath, rom_filename)
        write_spoiler(spoiler, spoiler_filename, rompath)

        tkinter.messagebox.showinfo(
            "Success!", rom_filename + " has been successfully created!")
    except OffsetError:
        tkinter.messagebox.showerror(
            "ERROR",
            "This randomizer is only compatible with the (US) version of Illusion of Gaia"
        )
    except FileNotFoundError:
        tkinter.messagebox.showerror("ERROR", "ROM file does not exist")
    except Exception as e:
        tkinter.messagebox.showerror("ERROR", e)
예제 #4
0
def __generateSpoiler(randomizer: Randomizer, settings: Settings) -> Spoiler:
    spoiler_filename = generate_filename(settings, "txt")
    spoiler = randomizer.generate_spoiler()
    return Spoiler(spoiler, spoiler_filename)
예제 #5
0
def __generatePatch(randomizer: Randomizer, settings: Settings) -> Patch:
    patch_filename = generate_filename(settings, "sfc")
    patch = randomizer.generate_rom(patch_filename, settings)
    return Patch(patch, patch_filename, VERSION)