Skip to content

Commit

Permalink
[gui] make seed generation actually work
Browse files Browse the repository at this point in the history
  • Loading branch information
mike8699 committed Jan 21, 2024
1 parent 1ae457c commit 7d0ef93
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 15 deletions.
7 changes: 7 additions & 0 deletions ph_rando/shuffler/_util.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import random
import string


def generate_random_seed() -> str:
# TODO: make this more robust
return ''.join(random.choices(string.ascii_letters, k=20))
5 changes: 2 additions & 3 deletions ph_rando/ui/cli.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
import json
import logging
from pathlib import Path
import random
import string

import click

from ph_rando.common import click_setting_options
from ph_rando.patcher._patcher import Patcher
from ph_rando.shuffler._shuffler import Shuffler
from ph_rando.shuffler._spoiler_log import generate_spoiler_log
from ph_rando.shuffler._util import generate_random_seed


@click.command()
Expand Down Expand Up @@ -56,7 +55,7 @@ def randomizer_cli(

# Generate random seed if one isn't provided
if seed is None:
seed = ''.join(random.choices(string.ascii_letters, k=20))
seed = generate_random_seed()

# Run the shuffler
shuffled_aux_data = Shuffler(seed, settings).generate()
Expand Down
45 changes: 33 additions & 12 deletions ph_rando/ui/gui.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,19 @@
import inflection

from ph_rando.common import RANDOMIZER_SETTINGS
from ph_rando.shuffler._util import generate_random_seed


class RandomizerUi(QWidget):
rom_path: Path
rom_path: Path | None
seed: str | None

def __init__(self) -> None:
super().__init__()

self.rom_path = None
self.seed = None

self.setWindowTitle('Phantom Hourglass Randomizer')
layout = QFormLayout()
self.setLayout(layout)
Expand All @@ -35,7 +40,7 @@ def __init__(self) -> None:
self.render_settings()
self.render_bottom_panel()

def _get_rom_file_select_widget(self) -> None:
def _get_rom_file_select_widget(self) -> QWidget:
rom_input_widget = QWidget()
hbox = QHBoxLayout()
rom_input_widget.setLayout(hbox)
Expand All @@ -62,24 +67,40 @@ def on_rom_path_change(path: str) -> None:

return rom_input_widget

def _get_seed_widget(self) -> QWidget:
seed_widget = QWidget()
hbox = QHBoxLayout()
seed_widget.setLayout(hbox)
seed = QLineEdit()
hbox.addWidget(QLabel('Seed'))
hbox.addWidget(seed)

gen_seed_button = QPushButton(text='Random Seed')
hbox.addWidget(gen_seed_button)

def on_random_seed_click() -> None:
self.seed = generate_random_seed()
seed.setText(self.seed)

def on_seed_change(value: str) -> None:
self.seed = value
seed.setText(value)

gen_seed_button.clicked.connect(on_random_seed_click)
seed.textChanged.connect(on_seed_change)

return seed_widget

def render_file_open_ui(self) -> None:
layout = self.layout()

groupbox = QGroupBox('ROM Selection')
layout.addWidget(groupbox)
vbox = QVBoxLayout()
groupbox.setLayout(vbox)

vbox.addWidget(self._get_rom_file_select_widget())

seed_input_widget = QWidget()
vbox.addWidget(seed_input_widget)
hbox = QHBoxLayout()
seed_input_widget.setLayout(hbox)
seed = QLineEdit()
gen_seed_button = QPushButton(text='Random Seed')
hbox.addWidget(QLabel('Seed'))
hbox.addWidget(seed)
hbox.addWidget(gen_seed_button)
vbox.addWidget(self._get_seed_widget())

def render_settings(self) -> None:
groupbox = QGroupBox('Randomizer Settings')
Expand Down

0 comments on commit 7d0ef93

Please sign in to comment.