diff --git a/combined_user_interface.py b/combined_user_interface.py index 4ef4bff..27414d6 100644 --- a/combined_user_interface.py +++ b/combined_user_interface.py @@ -126,20 +126,20 @@ class PrimaryOverlay(threading.Thread): self.global_timeout_use = tk.StringVar(self.root, value='0') self.hourly_breaks_use = tk.StringVar(self.root, value='0') - self.break_duration_use = tk.StringVar(self.root, value='3') + self.break_duration_use = tk.StringVar(self.root, value='1-3') self.global_timeout_label = tk.Label(self.timing_frame, text="Stop after (h):", font=("Helvetica", 10, "bold"), - background="grey", width='13') + background="grey", width='12') self.hourly_breaks_label = tk.Label(self.timing_frame, text="Breaks:", font=("Helvetica", 10, "bold"), - background="grey", width='13') + background="grey", width='12') self.break_duration_label = tk.Label(self.timing_frame, text="Break time (m):", font=("Helvetica", 10, "bold"), - background="grey", width='13') + background="grey", width='12') self.global_timeout_entry = tk.Entry(self.timing_frame, textvariable=self.global_timeout_use, font=("Helvetica", 10, "bold"), - width='2') + width='3') self.hourly_breaks_entry = tk.Entry(self.timing_frame, textvariable=self.hourly_breaks_use, font=("Helvetica", 10, "bold"), - width='2') + width='3') self.break_duration_entry = tk.Entry(self.timing_frame, textvariable=self.break_duration_use, font=("Helvetica", 10, "bold"), - width='2', state=tk.DISABLED) + width='3', state=tk.DISABLED) diff --git a/craft.py b/craft.py index 9d9de37..2b84148 100644 --- a/craft.py +++ b/craft.py @@ -26,277 +26,293 @@ class Craft(GameBase): self.run_counter = 0 self.dimension = 172 - def execute_main_loop(self): + def assess_playfield_and_make_move(self): + if self.run_counter >= self.run_target: + self.run_counter = 0 + self.overlay.run_mode = 'finished' + return - while True: - if self.overlay.run_mode == 'paused': - cv.waitKey(1) - continue - elif self.overlay.run_mode == 'stopped': - break + ab1 = [420, 1180, 142, 142] + ab2 = [562, 1180, 142, 142] + ab3 = [704, 1180, 142, 142] + ab4 = [846, 1180, 142, 142] + ab5 = [986, 1180, 142, 142] + ab6 = [1128, 1180, 142, 142] + ab10 = [1698, 1180, 142, 142] - if self.run_counter >= self.run_target: - self.run_counter = 0 - self.overlay.run_mode = 'finished' - break + if self.mode == MODE25X1: + self.click_square_center(ab1) - ab1 = [420, 1180, 142, 142] - ab2 = [562, 1180, 142, 142] - ab3 = [704, 1180, 142, 142] - ab4 = [846, 1180, 142, 142] - ab5 = [986, 1180, 142, 142] - ab6 = [1128, 1180, 142, 142] - ab10 = [1698, 1180, 142, 142] + # grid 770 1630 160 1020 172 o + self.dimension = 172 + for i in range(0, 5, 1): + for e in range(0, 5, 1): + self.click_square_center( + [770 + (i * self.dimension), 160 + (e * self.dimension), self.dimension, self.dimension]) + if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': + return + if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': + return - if self.mode == MODE25X1: - self.click_square_center(ab1) + self.click_craft_button() - # grid 770 1630 160 1020 172 o - self.dimension = 172 - for i in range(0, 5, 1): + for i in range(0, 5, 1): + for e in range(0, 5, 1): + self.collect_grid_reverse_click( + [770 + (i * self.dimension), 160 + (e * self.dimension), self.dimension, self.dimension]) + self.run_counter = self.run_counter + 1 + self.overlay.update_status_label(self.mode + ": " + str(self.run_target - self.run_counter)) + if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': + return + if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': + return + self.click_square_center(ab10) + elif self.mode == MODE10X2: + for r in range(0, 2, 1): + # grid 770 1630 160 1020 172 + + if r == 0: + self.click_square_center(ab1) + start = 0 + target = 3 + else: + self.click_square_center(ab2) + start = 1 + target = 4 + + for i in range(start, target, 2): for e in range(0, 5, 1): self.click_square_center( - [770 + (i * self.dimension), 160 + (e * self.dimension), self.dimension, self.dimension]) + [770 + (i * self.dimension), 160 + (e * self.dimension), self.dimension, + self.dimension]) if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': - break - - self.click_craft_button() - - for i in range(0, 5, 1): - for e in range(0, 5, 1): - self.collect_grid_reverse_click( - [770 + (i * self.dimension), 160 + (e * self.dimension), self.dimension, self.dimension]) - self.run_counter = self.run_counter + 1 - self.overlay.update_status_label(self.mode + ": " + str(self.run_target - self.run_counter)) - if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': - break - self.click_square_center(ab10) - elif self.mode == MODE10X2: - for r in range(0, 2, 1): - # grid 770 1630 160 1020 172 - - if r == 0: - self.click_square_center(ab1) - start = 0 - target = 3 - else: - self.click_square_center(ab2) - start = 1 - target = 4 - - for i in range(start, target, 2): - for e in range(0, 5, 1): - self.click_square_center( - [770 + (i * self.dimension), 160 + (e * self.dimension), self.dimension, - self.dimension]) - if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': - break - - self.click_craft_button() - - for i in range(0, 4, 2): - for e in range(0, 5, 1): - self.collect_grid_reverse_click( - [770 + (i * self.dimension), 160 + (e * self.dimension), self.dimension, self.dimension]) - self.run_counter = self.run_counter + 1 - self.overlay.update_status_label(self.mode + ": " + str(self.run_target - self.run_counter)) - if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': - break - self.click_square_center(ab10) - elif self.mode == MODE5X3: - if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': - break - for r in range(0, 3, 1): - # grid 770 1630 160 1020 172oo - self.dimension = 172 - if r == 0: - self.click_square_center(ab1) - start = 0 - target = 1 - elif r == 1: - self.click_square_center(ab2) - start = 1 - target = 2 - else: - self.click_square_center(ab3) - start = 2 - target = 3 - - for i in range(start, target, 1): - for e in range(0, 5, 1): - self.click_square_center( - [770 + (i * self.dimension), 160 + (e * self.dimension), self.dimension, - self.dimension]) - if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': - break - - self.click_craft_button() - - for i in range(0, 1, 1): - if self.overlay.run_mode == 'stopped': - break - for e in range(0, 5, 1): - self.collect_grid_reverse_click( - [770 + (i * self.dimension), 160 + (e * self.dimension), self.dimension, self.dimension]) - self.run_counter = self.run_counter + 1 - self.overlay.update_status_label(self.mode + ": " + str(self.run_target - self.run_counter)) - if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': - break - self.click_square_center(ab10) - elif self.mode == MODE1X5_T: - tps = [ab1, - [770 + (0 * self.dimension), 160 + (2 * self.dimension), self.dimension, self.dimension], - [770 + (1 * self.dimension), 160 + (2 * self.dimension), self.dimension, self.dimension], - ab2, - [770 + (2 * self.dimension), 160 + (1 * self.dimension), self.dimension, self.dimension], - [770 + (2 * self.dimension), 160 + (2 * self.dimension), self.dimension, self.dimension], - [770 + (2 * self.dimension), 160 + (3 * self.dimension), self.dimension, self.dimension]] - - result_tp = [770 + (0 * self.dimension), 160 + (3 * self.dimension), self.dimension, self.dimension] - - for tp in tps: - self.click_square_center(tp) + return if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': - break - - self.click_craft_button() + return if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': - break - self.click_square_center(result_tp) - if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': - break - self.click_square_center(ab10) + return - self.run_counter = self.run_counter + 1 - self.overlay.update_status_label(self.mode + ": " + str(self.run_target - self.run_counter)) + self.click_craft_button() + for i in range(0, 4, 2): + for e in range(0, 5, 1): + self.collect_grid_reverse_click( + [770 + (i * self.dimension), 160 + (e * self.dimension), self.dimension, self.dimension]) + self.run_counter = self.run_counter + 1 + self.overlay.update_status_label(self.mode + ": " + str(self.run_target - self.run_counter)) + if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': + return if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': - break - elif self.mode == MODE1X5_X: - tps = [ab1, - [770 + (0 * self.dimension), 160 + (3 * self.dimension), self.dimension, self.dimension], - [770 + (1 * self.dimension), 160 + (3 * self.dimension), self.dimension, self.dimension], - [770 + (2 * self.dimension), 160 + (3 * self.dimension), self.dimension, self.dimension], + return + self.click_square_center(ab10) + elif self.mode == MODE5X3: + for r in range(0, 3, 1): + # grid 770 1630 160 1020 172oo + self.dimension = 172 + if r == 0: + self.click_square_center(ab1) + if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': + return + start = 0 + target = 1 + elif r == 1: + self.click_square_center(ab2) + if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': + return + start = 1 + target = 2 + else: + self.click_square_center(ab3) + if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': + return + start = 2 + target = 3 + + for i in range(start, target, 1): + for e in range(0, 5, 1): + self.click_square_center( + [770 + (i * self.dimension), 160 + (e * self.dimension), self.dimension, + self.dimension]) + if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': + return + if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': + return + if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': + return + + self.click_craft_button() + + for i in range(0, 1, 1): + if self.overlay.run_mode == 'stopped': + return + for e in range(0, 5, 1): + self.collect_grid_reverse_click( + [770 + (i * self.dimension), 160 + (e * self.dimension), self.dimension, self.dimension]) + self.run_counter = self.run_counter + 1 + self.overlay.update_status_label(self.mode + ": " + str(self.run_target - self.run_counter)) + if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': + return + if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': + return + self.click_square_center(ab10) + elif self.mode == MODE1X5_T: + tps = [ab1, + [770 + (0 * self.dimension), 160 + (2 * self.dimension), self.dimension, self.dimension], + [770 + (1 * self.dimension), 160 + (2 * self.dimension), self.dimension, self.dimension], + ab2, + [770 + (2 * self.dimension), 160 + (1 * self.dimension), self.dimension, self.dimension], + [770 + (2 * self.dimension), 160 + (2 * self.dimension), self.dimension, self.dimension], + [770 + (2 * self.dimension), 160 + (3 * self.dimension), self.dimension, self.dimension]] + + result_tp = [770 + (0 * self.dimension), 160 + (3 * self.dimension), self.dimension, self.dimension] + + for tp in tps: + self.click_square_center(tp) + if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': + return + + self.click_craft_button() + if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': + return + self.click_square_center(result_tp) + if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': + return + self.click_square_center(ab10) + + self.run_counter = self.run_counter + 1 + self.overlay.update_status_label(self.mode + ": " + str(self.run_target - self.run_counter)) + + if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': + return + elif self.mode == MODE1X5_X: + tps = [ab1, + [770 + (0 * self.dimension), 160 + (3 * self.dimension), self.dimension, self.dimension], + [770 + (1 * self.dimension), 160 + (3 * self.dimension), self.dimension, self.dimension], + [770 + (2 * self.dimension), 160 + (3 * self.dimension), self.dimension, self.dimension], + [770 + (1 * self.dimension), 160 + (4 * self.dimension), self.dimension, self.dimension], + [770 + (1 * self.dimension), 160 + (2 * self.dimension), self.dimension, self.dimension]] + + result_tp = [770 + (0 * self.dimension), 160 + (4 * self.dimension), self.dimension, self.dimension] + + for tp in tps: + self.click_square_center(tp) + if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': + return + + self.click_craft_button() + if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': + return + self.click_square_center(result_tp) + if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': + return + self.click_square_center(ab10) + + self.run_counter = self.run_counter + 1 + self.overlay.update_status_label(self.mode + ": " + str(self.run_target - self.run_counter)) + + if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': + return + elif self.mode == MODE_HOUSE: + cements = [[770 + (0 * self.dimension), 160 + (4 * self.dimension), self.dimension, self.dimension], [770 + (1 * self.dimension), 160 + (4 * self.dimension), self.dimension, self.dimension], - [770 + (1 * self.dimension), 160 + (2 * self.dimension), self.dimension, self.dimension]] + [770 + (2 * self.dimension), 160 + (4 * self.dimension), self.dimension, self.dimension], + [770 + (3 * self.dimension), 160 + (4 * self.dimension), self.dimension, self.dimension], + [770 + (4 * self.dimension), 160 + (4 * self.dimension), self.dimension, self.dimension]] - result_tp = [770 + (0 * self.dimension), 160 + (4 * self.dimension), self.dimension, self.dimension] + bricks = [[770 + (0 * self.dimension), 160 + (3 * self.dimension), self.dimension, self.dimension], + [770 + (1 * self.dimension), 160 + (3 * self.dimension), self.dimension, self.dimension], + [770 + (3 * self.dimension), 160 + (3 * self.dimension), self.dimension, self.dimension], + [770 + (4 * self.dimension), 160 + (3 * self.dimension), self.dimension, self.dimension], + [770 + (0 * self.dimension), 160 + (2 * self.dimension), self.dimension, self.dimension], + [770 + (2 * self.dimension), 160 + (2 * self.dimension), self.dimension, self.dimension], + [770 + (4 * self.dimension), 160 + (2 * self.dimension), self.dimension, self.dimension]] - for tp in tps: - self.click_square_center(tp) - if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': - break + boards = [[770 + (2 * self.dimension), 160 + (3 * self.dimension), self.dimension, self.dimension], + [770 + (0 * self.dimension), 160 + (1 * self.dimension), self.dimension, self.dimension], + [770 + (1 * self.dimension), 160 + (1 * self.dimension), self.dimension, self.dimension], + [770 + (2 * self.dimension), 160 + (1 * self.dimension), self.dimension, self.dimension], + [770 + (3 * self.dimension), 160 + (1 * self.dimension), self.dimension, self.dimension], + [770 + (4 * self.dimension), 160 + (1 * self.dimension), self.dimension, self.dimension], + [770 + (2 * self.dimension), 160 + (0 * self.dimension), self.dimension, self.dimension]] - self.click_craft_button() + glasses = [[770 + (1 * self.dimension), 160 + (2 * self.dimension), self.dimension, self.dimension], + [770 + (3 * self.dimension), 160 + (2 * self.dimension), self.dimension, self.dimension]] + + tp_hammer = [770 + (1 * self.dimension), 160 + (0 * self.dimension), self.dimension, self.dimension] + tp_nails = [770 + (3 * self.dimension), 160 + (0 * self.dimension), self.dimension, self.dimension] + tp_result = [770 + (0 * self.dimension), 160 + (4 * self.dimension), self.dimension, self.dimension] + + self.click_square_center(ab1) + + for cement in cements: + self.click_square_center(cement) if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': - break - self.click_square_center(result_tp) + return + + self.click_square_center(ab2) + + for brick in bricks: + self.click_square_center(brick) if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': - break - self.click_square_center(ab10) + return - self.run_counter = self.run_counter + 1 - self.overlay.update_status_label(self.mode + ": " + str(self.run_target - self.run_counter)) + self.click_square_center(ab3) + for board in boards: + self.click_square_center(board) if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': - break - elif self.mode == MODE_HOUSE: - cements = [[770 + (0 * self.dimension), 160 + (4 * self.dimension), self.dimension, self.dimension], - [770 + (1 * self.dimension), 160 + (4 * self.dimension), self.dimension, self.dimension], - [770 + (2 * self.dimension), 160 + (4 * self.dimension), self.dimension, self.dimension], - [770 + (3 * self.dimension), 160 + (4 * self.dimension), self.dimension, self.dimension], - [770 + (4 * self.dimension), 160 + (4 * self.dimension), self.dimension, self.dimension]] + return - bricks = [[770 + (0 * self.dimension), 160 + (3 * self.dimension), self.dimension, self.dimension], - [770 + (1 * self.dimension), 160 + (3 * self.dimension), self.dimension, self.dimension], - [770 + (3 * self.dimension), 160 + (3 * self.dimension), self.dimension, self.dimension], - [770 + (4 * self.dimension), 160 + (3 * self.dimension), self.dimension, self.dimension], - [770 + (0 * self.dimension), 160 + (2 * self.dimension), self.dimension, self.dimension], - [770 + (2 * self.dimension), 160 + (2 * self.dimension), self.dimension, self.dimension], - [770 + (4 * self.dimension), 160 + (2 * self.dimension), self.dimension, self.dimension]] + self.click_square_center(ab4) - boards = [[770 + (2 * self.dimension), 160 + (3 * self.dimension), self.dimension, self.dimension], - [770 + (0 * self.dimension), 160 + (1 * self.dimension), self.dimension, self.dimension], - [770 + (1 * self.dimension), 160 + (1 * self.dimension), self.dimension, self.dimension], - [770 + (2 * self.dimension), 160 + (1 * self.dimension), self.dimension, self.dimension], - [770 + (3 * self.dimension), 160 + (1 * self.dimension), self.dimension, self.dimension], - [770 + (4 * self.dimension), 160 + (1 * self.dimension), self.dimension, self.dimension], - [770 + (2 * self.dimension), 160 + (0 * self.dimension), self.dimension, self.dimension]] - - glasses = [[770 + (1 * self.dimension), 160 + (2 * self.dimension), self.dimension, self.dimension], - [770 + (3 * self.dimension), 160 + (2 * self.dimension), self.dimension, self.dimension]] - - tp_hammer = [770 + (1 * self.dimension), 160 + (0 * self.dimension), self.dimension, self.dimension] - tp_nails = [770 + (3 * self.dimension), 160 + (0 * self.dimension), self.dimension, self.dimension] - tp_result = [770 + (0 * self.dimension), 160 + (4 * self.dimension), self.dimension, self.dimension] - - self.click_square_center(ab1) - - for cement in cements: - self.click_square_center(cement) - if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': - break - - self.click_square_center(ab2) - - for brick in bricks: - self.click_square_center(brick) - if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': - break - - self.click_square_center(ab3) - - for board in boards: - self.click_square_center(board) - if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': - break - - self.click_square_center(ab4) - - for glass in glasses: - self.click_square_center(glass) - if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': - break - - self.click_square_center(ab5) - self.click_square_center(tp_hammer) + for glass in glasses: + self.click_square_center(glass) if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': - break + return - self.click_square_center(ab6) - self.click_square_center(tp_nails) - if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': - break + self.click_square_center(ab5) + self.click_square_center(tp_hammer) + if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': + return - self.click_craft_button() - if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': - break + self.click_square_center(ab6) + self.click_square_center(tp_nails) + if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': + return - self.click_square_center(tp_result) - self.click_square_center(ab10) - if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': - break + self.click_craft_button() + if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': + return - self.run_counter = self.run_counter + 1 - self.overlay.update_status_label(self.mode + ": " + str(self.run_target - self.run_counter)) + self.click_square_center(tp_result) + self.click_square_center(ab10) + if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': + return - if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': - break - elif self.mode == MODE_SIMPLE_STACK: - # initialize the StunWindowCapture class - capture_config = UserConfigs() - # capture_window = WindowCapture(None, "screen_conf", capture_config) + self.run_counter = self.run_counter + 1 + self.overlay.update_status_label(self.mode + ": " + str(self.run_target - self.run_counter)) - capture_window2 = WindowCapture(None, "bla", capture_config) + if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': + return + elif self.mode == MODE_SIMPLE_STACK: + # initialize the StunWindowCapture class + capture_config = UserConfigs() + # capture_window = WindowCapture(None, "screen_conf", capture_config) - # initialize the StunVision class - vision_stun = Vision() - # dig_overlay = DiggingOverlay(config) - check_for_craft_button(capture_window2, vision_stun) - check_for_craft_ok_button(capture_window2, vision_stun) - self.run_counter = self.run_counter + 1 - self.overlay.update_status_label(self.mode + ": " + str(self.run_target - self.run_counter)) - # check_for_ok_button(capture_window, vision_stun, capture_config) + capture_window2 = WindowCapture(None, "bla", capture_config) + + # initialize the StunVision class + vision_stun = Vision() + # dig_overlay = DiggingOverlay(config) + check_for_craft_button(capture_window2, vision_stun) + if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': + return + check_for_craft_ok_button(capture_window2, vision_stun) + if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': + return + self.run_counter = self.run_counter + 1 + self.overlay.update_status_label(self.mode + ": " + str(self.run_target - self.run_counter)) + # check_for_ok_button(capture_window, vision_stun, capture_config) def collect_grid_reverse_click(self, square): pydirectinput.moveTo(get_click_point(square)[0], get_click_point(square)[1]) diff --git a/crops.py b/crops.py index 88615f6..4f8de28 100644 --- a/crops.py +++ b/crops.py @@ -203,9 +203,9 @@ class Crops(GameBase): 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' or self.overlay.run_mode == 'paused': - break + return if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': - break + return full_moves = [] reserve_moves = [] @@ -223,18 +223,18 @@ class Crops(GameBase): if len(path_option) >= 5: full_moves.append((state[x, y], path_option)) if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': - break + return 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' or self.overlay.run_mode == 'paused': - break + return if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': - break + return if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': - break + return # print(self.data_score_map) # screenshot = cv.imread("screenshot_scored.jpg") diff --git a/equipment.py b/equipment.py index a57849e..46c32df 100644 --- a/equipment.py +++ b/equipment.py @@ -91,8 +91,10 @@ class Equipment(GameBase): self.energy_counter = 0 def execute_main_loop(self): + breaks = self.init_breaks() for emitter in self.emitters: while True: + self.check_breaks() if self.overlay.run_mode == 'paused': cv.waitKey(1) continue diff --git a/farm.py b/farm.py index 9edcb2a..717de80 100644 --- a/farm.py +++ b/farm.py @@ -140,9 +140,9 @@ class Farm(GameBase): if self.check_explosives(state, e, i): return if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': - break + return if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': - break + return for e in range(0, 8, 1): for i in range(0, 14, 1): @@ -150,11 +150,11 @@ class Farm(GameBase): if self.check_5s(state, e, i, color): return if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': - break + return if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': - break + return if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': - break + return for e in range(0, 8, 1): for i in range(0, 14, 1): @@ -166,11 +166,11 @@ class Farm(GameBase): if self.check_3_with_gap(state, e, i, color): return if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': - break + return if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': - break + return if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': - break + return def detonate_explosive_when_stuck(self, state): for e in range(0, 8, 1): diff --git a/game_base_class.py b/game_base_class.py index 2d516c9..b9ddc52 100644 --- a/game_base_class.py +++ b/game_base_class.py @@ -63,31 +63,40 @@ class GameBase: def execute_main_loop(self): start_time = time() - breaks = [] - #breaks.append(7) - for i in range(1, int(self.breaks) + 1, 1): - avr_in_sec = int(self.stop_time) * 60 * 60 / int(self.breaks) - breaks.append(random.randint(i * avr_in_sec * 0.60, i * avr_in_sec)) + breaks = self.init_breaks() + while True: - if (time() - start_time) > float(self.stop_time) * 60 * 60: - self.overlay.run_mode = 'stopped' - for break_ in breaks: - elapsed = int(time() - start_time) - if elapsed > break_: - pause = random.randint(1, 3) - self.overlay.update_status_label("Paused " + str(pause) + " minutes") - cv.waitKey(pause *60 *1000) - breaks.remove(break_) - self.overlay.update_status_label("running") + self.check_breaks() if self.overlay.run_mode == 'paused': cv.waitKey(1) continue elif self.overlay.run_mode == 'stopped': break - + elif self.overlay.run_mode == 'finished': + break self.assess_playfield_and_make_move() cv.waitKey(500) + def init_breaks(self): + breaks = [] + #breaks.append(7) + for i in range(1, int(self.breaks) + 1, 1): + avr_in_sec = int(self.stop_time) * 60 * 60 / int(self.breaks) + breaks.append(random.randint(i * avr_in_sec * 0.60, i * avr_in_sec)) + return breaks + + def check_breaks(self): + if (time() - start_time) > float(self.stop_time) * 60 * 60: + self.overlay.run_mode = 'stopped' + for break_ in breaks: + elapsed = int(time() - start_time) + if elapsed > break_: + pause = random.randint(1, 3) + self.overlay.update_status_label("Break: " + str(pause) + "m") + cv.waitKey(pause * 60 * 1000) + breaks.remove(break_) + self.overlay.update_status_label("running") + def assess_playfield_and_make_move(self): pass diff --git a/magic.py b/magic.py index eb68eb8..74e6753 100644 --- a/magic.py +++ b/magic.py @@ -38,93 +38,96 @@ class Magic(GameBase): cv.IMREAD_UNCHANGED)) self.hsv_list.append(self.hsv_filter_list[key1]) - def execute_main_loop(self): + def assess_playfield_and_make_move(self): + screenshot = self.capture_window.get_screenshot() + # screenshot = cv.imread("buffbar.jpg") - while True: - if self.overlay.run_mode == 'paused': - cv.waitKey(1) - continue - elif self.overlay.run_mode == 'stopped': - break + # cv.imshow("screenshot", screenshot) + # cv.waitKey(150) + # continue - screenshot = self.capture_window.get_screenshot() - # screenshot = cv.imread("buffbar.jpg") + spawn_1 = self.vision_stun.find(screenshot, cv.imread("magic/spawn_1.jpg", cv.IMREAD_UNCHANGED), 0.25, 1) #TODO fix emitter threshold + if len(spawn_1) == 1: + points = self.vision_stun.get_click_points(spawn_1) + for i in range(0, self.SPAWN_COUNT, 1): + pydirectinput.moveTo(points[0][0], points[0][1]) + pydirectinput.mouseDown() + w = random.randint(1, 50) + cv.waitKey(30 + w) + pydirectinput.mouseUp() + if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': + return + else: + spawn_0 = self.vision_stun.find(screenshot, cv.imread("magic/spawn_0.jpg", cv.IMREAD_UNCHANGED), 0.7, 1) + points = self.vision_stun.get_click_points(spawn_0) + for point in points: + pydirectinput.moveTo(point[0], point[1]) + pydirectinput.mouseDown() + cv.waitKey(500) + pydirectinput.mouseUp() + if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': + return + continue + if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': + return + # for needles in needle_list: + for rer in range(0, len(self.needle_list), 1): + while True: + screenshot = self.capture_window.get_screenshot() + processed_screenshot = self.vision_stun.apply_hsv_filter(screenshot, self.hsv_list[rer]) + processed_needle = self.vision_stun.apply_hsv_filter(self.needle_list[rer], self.hsv_list[rer]) - # cv.imshow("screenshot", screenshot) - # cv.waitKey(150) - # continue + rectangles = self.vision_stun.find(processed_screenshot, processed_needle, 0.7, 2) + # draw the detection results onto the original image - spawn_1 = self.vision_stun.find(screenshot, cv.imread("magic/spawn_1.jpg", cv.IMREAD_UNCHANGED), 0.25, 1) #TODO fix emitter threshold - if len(spawn_1) == 1: - points = self.vision_stun.get_click_points(spawn_1) - for i in range(0, self.SPAWN_COUNT, 1): + # only trigger ocr reading if a stun is detected + points = self.vision_stun.get_click_points(rectangles) + if len(points) == 2: pydirectinput.moveTo(points[0][0], points[0][1]) pydirectinput.mouseDown() - w = random.randint(1, 50) - cv.waitKey(30 + w) + w = random.randint(1, 100) + cv.waitKey(250 + w) + pydirectinput.moveTo(points[1][0], points[1][1]) pydirectinput.mouseUp() if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': - break - else: - spawn_0 = self.vision_stun.find(screenshot, cv.imread("magic/spawn_0.jpg", cv.IMREAD_UNCHANGED), 0.7, 1) - points = self.vision_stun.get_click_points(spawn_0) - for point in points: - pydirectinput.moveTo(point[0], point[1]) - pydirectinput.mouseDown() - cv.waitKey(500) - pydirectinput.mouseUp() - if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': - break - continue - if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': - break - # for needles in needle_list: - for rer in range(0, len(self.needle_list), 1): - while True: - screenshot = self.capture_window.get_screenshot() - processed_screenshot = self.vision_stun.apply_hsv_filter(screenshot, self.hsv_list[rer]) - processed_needle = self.vision_stun.apply_hsv_filter(self.needle_list[rer], self.hsv_list[rer]) - - rectangles = self.vision_stun.find(processed_screenshot, processed_needle, 0.7, 2) - # draw the detection results onto the original image - - # only trigger ocr reading if a stun is detected - points = self.vision_stun.get_click_points(rectangles) - if len(points) == 2: - pydirectinput.moveTo(points[0][0], points[0][1]) - pydirectinput.mouseDown() - w = random.randint(1, 100) - cv.waitKey(250 + w) - pydirectinput.moveTo(points[1][0], points[1][1]) - pydirectinput.mouseUp() - if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': - break - else: - break - if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': - break - if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': + return + else: break + if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': + return + if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': + return - needles_white = [cv.imread("magic/body_w.jpg", cv.IMREAD_UNCHANGED), - cv.imread("magic/finding_w.jpg", cv.IMREAD_UNCHANGED), - cv.imread("magic/mind_w.jpg", cv.IMREAD_UNCHANGED), - cv.imread("magic/perceiving_w.jpg", cv.IMREAD_UNCHANGED), - cv.imread("magic/physical_w.jpg", cv.IMREAD_UNCHANGED), - cv.imread("magic/seeing_w.jpg", cv.IMREAD_UNCHANGED), - cv.imread("magic/spiritual_w.jpg", cv.IMREAD_UNCHANGED)] + needles_white = [cv.imread("magic/body_w.jpg", cv.IMREAD_UNCHANGED), + cv.imread("magic/finding_w.jpg", cv.IMREAD_UNCHANGED), + cv.imread("magic/mind_w.jpg", cv.IMREAD_UNCHANGED), + cv.imread("magic/perceiving_w.jpg", cv.IMREAD_UNCHANGED), + cv.imread("magic/physical_w.jpg", cv.IMREAD_UNCHANGED), + cv.imread("magic/seeing_w.jpg", cv.IMREAD_UNCHANGED), + cv.imread("magic/spiritual_w.jpg", cv.IMREAD_UNCHANGED)] - for needle_w in needles_white: - # do object detection + for needle_w in needles_white: + # do object detection + screenshot = self.capture_window.get_screenshot() + processed_screenshot = self.vision_stun.apply_hsv_filter(screenshot, self.hsv_filter_w) + processed_needle = self.vision_stun.apply_hsv_filter(needle_w, self.hsv_filter_w) + rectangles = self.vision_stun.find(processed_screenshot, processed_needle, 0.7, 1) + # draw the detection results onto the original image + # output_image = vision_stun.draw_rectangles(screenshot, rectangles) + # cv.imshow("output_image", output_image) + # cv.waitKey(150) + + points = self.vision_stun.get_click_points(rectangles) + if len(points) >= 1: + pydirectinput.moveTo(points[0][0], points[0][1]) + pydirectinput.mouseDown() + w = random.randint(1, 100) + cv.waitKey(100 + w) + pydirectinput.mouseUp() screenshot = self.capture_window.get_screenshot() - processed_screenshot = self.vision_stun.apply_hsv_filter(screenshot, self.hsv_filter_w) - processed_needle = self.vision_stun.apply_hsv_filter(needle_w, self.hsv_filter_w) - rectangles = self.vision_stun.find(processed_screenshot, processed_needle, 0.7, 1) - # draw the detection results onto the original image - # output_image = vision_stun.draw_rectangles(screenshot, rectangles) - # cv.imshow("output_image", output_image) - # cv.waitKey(150) - + rectangles = self.vision_stun.find(screenshot, cv.imread("magic/collect.jpg", cv.IMREAD_UNCHANGED), + 0.8, + 1) points = self.vision_stun.get_click_points(rectangles) if len(points) >= 1: pydirectinput.moveTo(points[0][0], points[0][1]) @@ -132,19 +135,8 @@ class Magic(GameBase): w = random.randint(1, 100) cv.waitKey(100 + w) pydirectinput.mouseUp() - screenshot = self.capture_window.get_screenshot() - rectangles = self.vision_stun.find(screenshot, cv.imread("magic/collect.jpg", cv.IMREAD_UNCHANGED), - 0.8, - 1) - points = self.vision_stun.get_click_points(rectangles) - if len(points) >= 1: - pydirectinput.moveTo(points[0][0], points[0][1]) - pydirectinput.mouseDown() - w = random.randint(1, 100) - cv.waitKey(100 + w) - pydirectinput.mouseUp() - if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': - break if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': - break + return + if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': + return \ No newline at end of file diff --git a/mine.py b/mine.py index ee28ba6..b25c984 100644 --- a/mine.py +++ b/mine.py @@ -38,7 +38,9 @@ class Mine(GameBase): self.execute_loop() def execute_loop(self): + breaks = self.init_breaks() while True: + self.check_breaks() if self.overlay.run_mode == 'paused': cv.waitKey(10) self.overlay.show_mining_overlay()