From 82a60026b2e98a7cde1928f9c5731c6967d81a5a Mon Sep 17 00:00:00 2001 From: Thaloria Date: Sun, 16 Oct 2022 14:23:11 +0200 Subject: [PATCH] updated ui elements --- combined_user_interface.py | 65 ++++++++++++++++++++++++++++++++------ crops.py | 21 ++++++------ farm.py | 21 ++++++------ 3 files changed, 79 insertions(+), 28 deletions(-) diff --git a/combined_user_interface.py b/combined_user_interface.py index 051b2aa..1a2356d 100644 --- a/combined_user_interface.py +++ b/combined_user_interface.py @@ -55,10 +55,11 @@ class PrimaryOverlay(threading.Thread): self.rb_frame = tk.Frame(self.root) self.rb_int = tk.IntVar(self.root, value=1) self.RadioButtons = dict() - #var = tk.IntVar(value=1) + # var = tk.IntVar(value=1) for i in range(1, 7): - self.RadioButtons[i] = tk.Radiobutton(self.rb_frame, text=self.RadioButtonNames[i-1], variable=self.rb_int, - value=i) + self.RadioButtons[i] = tk.Radiobutton(self.rb_frame, text=self.RadioButtonNames[i - 1], + variable=self.rb_int, + value=i, command=self.radio_button_callback) self.RadioButtons[i].grid(row=i, column=0, sticky='w') self.parameter_frame = tk.Frame(self.root) @@ -68,13 +69,16 @@ class PrimaryOverlay(threading.Thread): self.EnergyLabel = tk.Label(self.parameter_frame, text="Runs:", font=("Helvetica", 10, "bold"), background="grey", width='6') - self.EnergyEntry = tk.Entry(self.parameter_frame, textvariable=self.energy_use, font=("Helvetica", 10, "bold"), width='10') + self.EnergyEntry = tk.Entry(self.parameter_frame, textvariable=self.energy_use, font=("Helvetica", 10, "bold"), + width='10') self.SpawnLabel = tk.Label(self.parameter_frame, text="Spawn:", font=("Helvetica", 10, "bold"), background="grey", width='6') - self.SpawnEntry = tk.Entry(self.parameter_frame, textvariable=self.spawn_use, font=("Helvetica", 10, "bold"), width='10') + self.SpawnEntry = tk.Entry(self.parameter_frame, textvariable=self.spawn_use, font=("Helvetica", 10, "bold"), + width='10') self.EmitterLabel = tk.Label(self.parameter_frame, text="Emitter:", font=("Helvetica", 10, "bold"), background="grey", width='6') - self.Emitter_Box = ttk.Combobox(self.parameter_frame, textvariable=self.emitter_use, font=("Helvetica", 8, "bold"), + self.Emitter_Box = ttk.Combobox(self.parameter_frame, textvariable=self.emitter_use, + font=("Helvetica", 8, "bold"), width='9') self.Emitter_Box['values'] = ('multi', 'main', 'mushroom', 'amulett', 'sword', 'staff', 'wand', 'ring') @@ -92,7 +96,7 @@ class PrimaryOverlay(threading.Thread): self.PauseButton = tk.Button(self.ButtonFrame, text="Pause", command=self.pause_button_callback, width='5', state=tk.DISABLED) self.QuitButton = tk.Button(self.ButtonFrame, text="Quit", command=self.quit_button_callback, width='5', - state=tk.NORMAL) + state=tk.NORMAL) self.StartButton.grid(row=0, column=0) self.StopButton.grid(row=1, column=0) @@ -110,10 +114,10 @@ class PrimaryOverlay(threading.Thread): # self.ClearButton.pack(side="top") self.root.geometry(self.TkPosition) self.root.overrideredirect(1) # fenster ohne aussen rum :-) - #self.root.attributes('-alpha', 0.7) # fenster transparent + # self.root.attributes('-alpha', 0.7) # fenster transparent self.root.attributes('-topmost', 1) # fenster immer im vordergrund # self.root.wm_attributes("-disabled", True) - #self.root.configure(background='black') + # self.root.configure(background='black') self.root.mainloop() @@ -124,6 +128,7 @@ class PrimaryOverlay(threading.Thread): self.StartButton.configure(state=tk.DISABLED) self.StopButton.configure(state=tk.NORMAL) self.PauseButton.configure(state=tk.NORMAL) + self.QuitButton.configure(state=tk.DISABLED) for i in range(1, 7): tt = self.rb_int.get() if self.rb_int.get() != i: @@ -137,6 +142,7 @@ class PrimaryOverlay(threading.Thread): self.StartButton.configure(state=tk.NORMAL) self.StopButton.configure(state=tk.DISABLED) self.PauseButton.configure(state=tk.DISABLED) + self.QuitButton.configure(state=tk.NORMAL) for i in range(1, 7): self.RadioButtons[i].configure(state=tk.NORMAL) self.run_mode = 'stopped' @@ -145,13 +151,52 @@ class PrimaryOverlay(threading.Thread): self.StartButton.configure(state=tk.NORMAL) self.StopButton.configure(state=tk.NORMAL) self.PauseButton.configure(state=tk.DISABLED) + self.QuitButton.configure(state=tk.DISABLED) self.run_mode = 'paused' def quit_button_callback(self): self.run_mode = 'quit' + def radio_button_callback(self): + if self.rb_int.get() == 1: + self.EnergyEntry.configure(state=tk.NORMAL) + self.energy_use.set('2000') + self.SpawnEntry.configure(state=tk.NORMAL) + self.spawn_use.set('25') + self.Emitter_Box.configure(state=tk.NORMAL) + self.emitter_use.set('multi') + elif self.rb_int.get() == 2 or self.rb_int.get() == 3: + self.EnergyEntry.configure(state=tk.DISABLED) + self.energy_use.set('') + self.SpawnEntry.configure(state=tk.DISABLED) + self.spawn_use.set('') + self.Emitter_Box.configure(state=tk.DISABLED) + self.emitter_use.set('') + elif self.rb_int.get() == 4: + self.EnergyEntry.configure(state=tk.DISABLED) + self.energy_use.set('') + self.SpawnEntry.configure(state=tk.NORMAL) + self.spawn_use.set('100') + self.Emitter_Box.configure(state=tk.DISABLED) + self.emitter_use.set('') + elif self.rb_int.get() == 5: + self.EnergyEntry.configure(state=tk.NORMAL) + self.energy_use.set('100') + self.SpawnEntry.configure(state=tk.DISABLED) + self.spawn_use.set('') + self.Emitter_Box.configure(state=tk.DISABLED) + self.emitter_use.set('') + elif self.rb_int.get() == 6: + self.EnergyEntry.configure(state=tk.NORMAL) + self.energy_use.set('2') + self.SpawnEntry.configure(state=tk.DISABLED) + self.spawn_use.set('') + self.Emitter_Box.configure(state=tk.DISABLED) + self.emitter_use.set('') + + # def get_run_mode(self): return self.run_mode def update_status_label(self, msg): - self.StatusLabel.configure(text=msg) \ No newline at end of file + self.StatusLabel.configure(text=msg) diff --git a/crops.py b/crops.py index 51921b8..7e5af98 100644 --- a/crops.py +++ b/crops.py @@ -83,7 +83,10 @@ class Crops: def execute_main_loop(self): while True: - if self.overlay.run_mode == 'stopped': + if self.overlay.run_mode == 'paused': + cv.waitKey(1) + continue + elif self.overlay.run_mode == 'stopped': break self.assess_playfield_and_make_move() @@ -321,9 +324,9 @@ class Crops: for x in range(0, 8, 1): for y in range(0, 14, 1): self.data_score_map[x, y] = self.score_for_attached_same_color_all_directions(state, x, y) - if self.overlay.run_mode == 'stopped': + if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': break - if self.overlay.run_mode == 'stopped': + if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': break full_moves = [] @@ -341,18 +344,18 @@ class Crops: path_option.append([x, y]) if len(path_option) >= 5: full_moves.append((state[x, y], path_option)) - if self.overlay.run_mode == 'stopped': + if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': break if self.data_score_map[x, y] >= 1: path_option = [[x, y]] self.find_next_same_color_all_directions_recursion2(state, x, y, path_option) if len(path_option) >= 3: reserve_moves.append((state[x, y], path_option)) - if self.overlay.run_mode == 'stopped': + if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': break - if self.overlay.run_mode == 'stopped': + if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': break - if self.overlay.run_mode == 'stopped': + if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': break # print(self.data_score_map) @@ -457,7 +460,7 @@ class Crops: result = self.find_next_same_color_all_directions_recursion(state, direction[0], direction[1], path_store, recursion_reminder, look_for_ending) - if self.overlay.run_mode == 'stopped': + if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': break if result == STATUS_FOUND_CONTINUATION: path_store.append(direction) @@ -490,7 +493,7 @@ class Crops: path_store.append(direction) result = self.find_next_same_color_all_directions_recursion2(state, direction[0], direction[1], path_store) - if self.overlay.run_mode == 'stopped': + if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': break if result == STATUS_FOUND_DEADEND: return STATUS_FOUND_DEADEND diff --git a/farm.py b/farm.py index c14beb0..f6e08f9 100644 --- a/farm.py +++ b/farm.py @@ -104,7 +104,10 @@ class Farm: def execute_main_loop(self): while True: - if self.overlay.run_mode == 'stopped': + if self.overlay.run_mode == 'paused': + cv.waitKey(1) + continue + elif self.overlay.run_mode == 'stopped': break self.assess_playfield_and_make_move() @@ -238,9 +241,9 @@ class Farm: for i in range(0, 14, 1): if self.check_explosives(state, e, i): return - if self.overlay.run_mode == 'stopped': + if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': break - if self.overlay.run_mode == 'stopped': + if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': break for e in range(0, 8, 1): @@ -250,11 +253,11 @@ class Farm: return if self.check_5_vertical(state, e, i, color): return - if self.overlay.run_mode == 'stopped': + if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': break - if self.overlay.run_mode == 'stopped': + if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': break - if self.overlay.run_mode == 'stopped': + if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': break for e in range(0, 8, 1): @@ -266,11 +269,11 @@ class Farm: return if self.check_3_with_gap(state, e, i, color): return - if self.overlay.run_mode == 'stopped': + if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': break - if self.overlay.run_mode == 'stopped': + if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': break - if self.overlay.run_mode == 'stopped': + if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': break def detonate_explosive_when_stuck(self, state):