Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 41 additions & 0 deletions constants.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# Constants for default values used throughout the application

# Default frame ranges
DEFAULT_MIN_FRAME = 1000
DEFAULT_MAX_FRAME = 2000

# Default IV values
DEFAULT_MIN_IVS = "0/0/0/0/0/0"
DEFAULT_MAX_IVS = "31/31/31/31/31/31"

# Default ability value
DEFAULT_ABILITY = 0

# Default hidden power values
DEFAULT_MIN_HIDDEN_POWER = 60

# Default item determinator values
DEFAULT_MIN_ITEM_DETER = 0
DEFAULT_MAX_ITEM_DETER = 100

# Default encounter rates
DEFAULT_ENC_RATE = 30
DEFAULT_MOVEMENT_RATE = 70

# Default water level values
DEFAULT_MIN_LEVEL_WATER = 20
DEFAULT_MAX_LEVEL_WATER = 40
DEFAULT_MIN_AVAIL_LEVEL_WATER = 20
DEFAULT_MAX_AVAIL_LEVEL_WATER = 40

# Default nature examples
DEFAULT_NATURES = "Adamant/Modest"

# Default hidden power types
DEFAULT_HIDDEN_POWER_TYPES = "Fire/Psychic"

# Default placeholder names
DEFAULT_POKE_NAME = "Poke name :)"

# Default encounter area
DEFAULT_ENCOUNTER_AREA = "Surfing"
64 changes: 64 additions & 0 deletions gui_helpers.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
import tkinter as tk
from constants import *

def create_entry_with_default(master, default_value):
"""Create an Entry widget with a default value."""
entry = tk.Entry(master)
entry.insert(0, str(default_value))
return entry

def create_boolean_checkbutton(master):
"""Create a BooleanVar and associated Checkbutton."""
variable = tk.BooleanVar(master)
button = tk.Checkbutton(master, variable=variable)
return button, variable

def create_encounter_area_menu(master, default_area=DEFAULT_ENCOUNTER_AREA):
"""Create an OptionMenu for encounter areas."""
variable = tk.StringVar(master)
variable.set(default_area)
menu = tk.OptionMenu(master, variable, "Grass", "Surfing", "FishingOld", "FishingGood", "FishingSuper")
return menu, variable

def create_standard_entries(master):
"""Create common entry widgets used in both Method1 and MethodJ."""
entries = {}

# Common entries with default values
entries['natures'] = create_entry_with_default(master, DEFAULT_NATURES)
entries['hidden_power_types'] = create_entry_with_default(master, DEFAULT_HIDDEN_POWER_TYPES)
entries['min_hidden_power'] = create_entry_with_default(master, DEFAULT_MIN_HIDDEN_POWER)
entries['min_ivs'] = create_entry_with_default(master, DEFAULT_MIN_IVS)
entries['max_ivs'] = create_entry_with_default(master, DEFAULT_MAX_IVS)
entries['ability'] = create_entry_with_default(master, DEFAULT_ABILITY)
entries['min_frame'] = create_entry_with_default(master, DEFAULT_MIN_FRAME)
entries['max_frame'] = create_entry_with_default(master, DEFAULT_MAX_FRAME)

# Boolean checkbuttons
entries['is_shiny'], entries['is_shiny_var'] = create_boolean_checkbutton(master)
entries['has_pokerus'], entries['has_pokerus_var'] = create_boolean_checkbutton(master)

return entries

def create_methodj_specific_entries(master):
"""Create MethodJ-specific entry widgets."""
entries = {}

entries['enc_slots'] = create_entry_with_default(master, "0-11")
entries['synchronize_target'] = create_entry_with_default(master, DEFAULT_NATURES)
entries['min_item_deter'] = create_entry_with_default(master, DEFAULT_MIN_ITEM_DETER)
entries['max_item_deter'] = create_entry_with_default(master, DEFAULT_MAX_ITEM_DETER)
entries['enc_rate'] = create_entry_with_default(master, DEFAULT_ENC_RATE)
entries['movement_rate'] = create_entry_with_default(master, DEFAULT_MOVEMENT_RATE)
entries['min_level_water'] = create_entry_with_default(master, DEFAULT_MIN_LEVEL_WATER)
entries['max_level_water'] = create_entry_with_default(master, DEFAULT_MAX_LEVEL_WATER)
entries['min_avail_level_water'] = create_entry_with_default(master, DEFAULT_MIN_AVAIL_LEVEL_WATER)
entries['max_avail_level_water'] = create_entry_with_default(master, DEFAULT_MAX_AVAIL_LEVEL_WATER)

# Encounter area menu
entries['encounter_area'], entries['encounter_area_var'] = create_encounter_area_menu(master)

# Ignore encounter check
entries['ignore_encounter_check'], entries['ignore_encounter_check_var'] = create_boolean_checkbutton(master)

return entries
214 changes: 63 additions & 151 deletions main.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@
from benchmark import Benchmark
from search import search_details
from tests import Test
from constants import *
from gui_helpers import *

import multiprocessing

Expand Down Expand Up @@ -183,183 +185,93 @@ def load_file():


def add_method_j():
entry14 = tk.Entry(master)
entry14.insert(0, "Poke Name :)")

entry1 = tk.Entry(master)
entry1.insert(0, "1/3/5/7/9")

entry2 = tk.Entry(master)
entry2.insert(0, "Adamant/Modest")

entry15 = tk.Entry(master)
entry15.insert(0, "PokeLabel/Nature1/Nature2")

entry3 = tk.Entry(master)
entry3.insert(0, "Fire/Psychic")

entry4 = tk.Entry(master)
entry4.insert(0, "60")

entry5 = tk.Entry(master)
entry5.insert(0, "0/0/0/0/0/0")

entry6 = tk.Entry(master)
entry6.insert(0, "31/31/31/31/31/31")

entry7 = tk.Entry(master)
entry7.insert(0, 0)

entry8 = tk.Entry(master)
entry8.insert(0, 100)

entry9 = tk.Entry(master)
entry9.insert(0, 0)

entry10 = tk.Entry(master)
entry10.insert(0, 1000)

entry11 = tk.Entry(master)
entry11.insert(0, 2000)

entry12 = tk.Entry(master)
entry12.insert(0, 30)

entry13 = tk.Entry(master)
entry13.insert(0, 70)

variable3 = tk.StringVar(master)
variable3.set("Surfing") # default value
menu3 = tk.OptionMenu(master, variable3, "Grass", "Surfing", "FishingOld", "FishingGood", "FishingSuper")

variable4 = tk.BooleanVar(master)
button4 = tk.Checkbutton(master, variable=variable4)

variable5 = tk.BooleanVar(master)
button5 = tk.Checkbutton(master, variable=variable5)

variable6 = tk.BooleanVar(master)
button6 = tk.Checkbutton(master, variable=variable6)

entry16 = tk.Entry(master)
entry16.insert(0, 20)

entry19 = tk.Entry(master)
entry19.insert(0, 40)

entry17 = tk.Entry(master)
entry17.insert(0, 20)

entry18 = tk.Entry(master)
entry18.insert(0, 40)
# Create label entry
label_entry = create_entry_with_default(master, "Poke Name :)")

# Create standard entries common to both methods
standard_entries = create_standard_entries(master)

# Create MethodJ-specific entries
methodj_entries = create_methodj_specific_entries(master)

# Create specific entries for MethodJ
enc_slots_entry = create_entry_with_default(master, "1/3/5/7/9")
synchronize_target_entry = create_entry_with_default(master, "PokeLabel/Nature1/Nature2")

new_query = {
"type": "MethodJ",
"label": entry14,
"enc_slots": entry1,
"natures": entry2,
"synchronize_target": entry15,
"hidden_power_types": entry3,
"min_hidden_power": entry4,
"min_ivs": entry5,
"max_ivs": entry6,
"min_item_deter": entry7,
"max_item_deter": entry8,
"ability": entry9,
"min_frame": entry10,
"max_frame": entry11,
"enc_rate": entry12,
"movement_rate": entry13,
"encounter_area": menu3,
"encounter_area_var": variable3,
"ignore_encounter_check": button4,
"ignore_encounter_check_var": variable4,
"is_shiny": button5,
"is_shiny_var": variable5,
"has_pokerus": button6,
"has_pokerus_var": variable6,
"min_level_water": entry16,
"max_level_water": entry19,
"min_avail_level_water": entry17,
"max_avail_level_water": entry18
"label": label_entry,
"enc_slots": enc_slots_entry,
"natures": standard_entries['natures'],
"synchronize_target": synchronize_target_entry,
"hidden_power_types": standard_entries['hidden_power_types'],
"min_hidden_power": standard_entries['min_hidden_power'],
"min_ivs": standard_entries['min_ivs'],
"max_ivs": standard_entries['max_ivs'],
"min_item_deter": methodj_entries['min_item_deter'],
"max_item_deter": methodj_entries['max_item_deter'],
"ability": standard_entries['ability'],
"min_frame": standard_entries['min_frame'],
"max_frame": standard_entries['max_frame'],
"enc_rate": methodj_entries['enc_rate'],
"movement_rate": methodj_entries['movement_rate'],
"encounter_area": methodj_entries['encounter_area'],
"encounter_area_var": methodj_entries['encounter_area_var'],
"ignore_encounter_check": methodj_entries['ignore_encounter_check'],
"ignore_encounter_check_var": methodj_entries['ignore_encounter_check_var'],
"is_shiny": standard_entries['is_shiny'],
"is_shiny_var": standard_entries['is_shiny_var'],
"has_pokerus": standard_entries['has_pokerus'],
"has_pokerus_var": standard_entries['has_pokerus_var'],
"min_level_water": methodj_entries['min_level_water'],
"max_level_water": methodj_entries['max_level_water'],
"min_avail_level_water": methodj_entries['min_avail_level_water'],
"max_avail_level_water": methodj_entries['max_avail_level_water']
}

queries.append(new_query)

fill_queries()


def add_method_1():
entry13 = tk.Entry(master)
entry13.insert(0, "Poke name :)")

entry2 = tk.Entry(master)
entry2.insert(0, "Adamant/Modest")

entry3 = tk.Entry(master)
entry3.insert(0, "Fire/Psychic")

entry4 = tk.Entry(master)
entry4.insert(0, "60")

entry5 = tk.Entry(master)
entry5.insert(0, "0/0/0/0/0/0")

entry6 = tk.Entry(master)
entry6.insert(0, "31/31/31/31/31/31")

entry9 = tk.Entry(master)
entry9.insert(0, 0)

variable = tk.BooleanVar(master)
button = tk.Checkbutton(master, variable=variable)

variable6 = tk.BooleanVar(master)
button6 = tk.Checkbutton(master, variable=variable6)

entry10 = tk.Entry(master)
entry10.insert(0, 1000)

entry11 = tk.Entry(master)
entry11.insert(0, 2000)
# Create label entry
label_entry = create_entry_with_default(master, DEFAULT_POKE_NAME)

# Create standard entries common to both methods
standard_entries = create_standard_entries(master)

new_query = {
"type": "Method1",
"label": entry13,
"natures": entry2,
"hidden_power_types": entry3,
"min_hidden_power": entry4,
"min_ivs": entry5,
"max_ivs": entry6,
"ability": entry9,
"is_shiny": button,
"is_shiny_var": variable,
"has_pokerus": button6,
"has_pokerus_var": variable6,
"min_frame": entry10,
"max_frame": entry11
"label": label_entry,
"natures": standard_entries['natures'],
"hidden_power_types": standard_entries['hidden_power_types'],
"min_hidden_power": standard_entries['min_hidden_power'],
"min_ivs": standard_entries['min_ivs'],
"max_ivs": standard_entries['max_ivs'],
"ability": standard_entries['ability'],
"is_shiny": standard_entries['is_shiny'],
"is_shiny_var": standard_entries['is_shiny_var'],
"has_pokerus": standard_entries['has_pokerus'],
"has_pokerus_var": standard_entries['has_pokerus_var'],
"min_frame": standard_entries['min_frame'],
"max_frame": standard_entries['max_frame']
}

queries.append(new_query)

fill_queries()


def add_pokerus():
entry1 = tk.Entry(master)
entry1.insert(0, 0)

entry2 = tk.Entry(master)
entry2.insert(0, 1000)
min_frame_entry = create_entry_with_default(master, 0)
max_frame_entry = create_entry_with_default(master, 1000)

new_query = {
"type": "PKRS",
"min_frame": entry1,
"max_frame": entry2
"min_frame": min_frame_entry,
"max_frame": max_frame_entry
}

queries.append(new_query)

fill_queries()


Expand Down
Loading