From 376fb05225dc66f9c7d812b68dea03423afbef9c Mon Sep 17 00:00:00 2001 From: roozhou <101923218+roozhou@users.noreply.github.com> Date: Mon, 9 May 2022 01:07:48 -0700 Subject: [PATCH] Enhancement: Faster save and exit using keyboard (#697) * Enhancement: Faster save and exit using keyboard * Enhancement: faster chicken 1) Remove delay among key/mouse release (human can do it simutaneously 2) Save screenshot after save_and_exit --- .../ui/ingame_menu/game_menu_highlight.png | Bin 0 -> 1916 bytes .../ingame_menu/save_and_exit_highlight.png | Bin 17481 -> 0 bytes .../save_and_exit_no_highlight.png | Bin 17117 -> 0 bytes config/game.ini | 1 + src/game_recovery.py | 2 +- src/health_manager.py | 16 ++++----- src/ui/view.py | 34 +++++++++--------- src/ui_manager.py | 10 +++--- 8 files changed, 32 insertions(+), 31 deletions(-) create mode 100644 assets/templates/ui/ingame_menu/game_menu_highlight.png delete mode 100644 assets/templates/ui/ingame_menu/save_and_exit_highlight.png delete mode 100644 assets/templates/ui/ingame_menu/save_and_exit_no_highlight.png diff --git a/assets/templates/ui/ingame_menu/game_menu_highlight.png b/assets/templates/ui/ingame_menu/game_menu_highlight.png new file mode 100644 index 0000000000000000000000000000000000000000..7acd08a0b1e6262993cefd53df50ef317f9ceb5c GIT binary patch literal 1916 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 diff --git a/assets/templates/ui/ingame_menu/save_and_exit_no_highlight.png b/assets/templates/ui/ingame_menu/save_and_exit_no_highlight.png deleted file mode 100644 index ea4b32c57943aee651df75e451268507f1d65ee2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17117 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 YUlf bool: Performes save and exit action from within game :return: Bool if action was successful """ - # if exit button isn't detected already, press escape - attempts = 1 + attempts = 0 success = False - while attempts <= 2 and not success: - if not (exit_button := detect_screen_object(ScreenObjects.SaveAndExit)).valid: + while attempts < 2 and not success: + # if exit button isn't detected already, press escape + while not (highlight := detect_screen_object(ScreenObjects.GameMenu)).valid: keyboard.send("esc") - # wait for exit button to appear - exit_button = wait_until_visible(ScreenObjects.SaveAndExit, 3) - # if exit button is found, double click it to be sure - if exit_button.valid: - select_screen_object_match(exit_button, delay_factor=(0.1, 0.3)) - wait(0.1, 0.2) - mouse.click(button="left") - # if center icon on player bar disappears then save/exit was successful - success = wait_until_hidden(ScreenObjects.InGame, 3) + time.sleep(0.02) + roi = Config().ui_roi[ScreenObjects.GameMenu.roi] + y_pos = (highlight.center[1] - roi[1]) / roi[3] + if y_pos > 0.6: + keyboard.send("up") + time.sleep(0.005) + elif y_pos < 0.4: + keyboard.send("down") + time.sleep(0.005) + keyboard.send("enter") + # if center icon on player bar disappears then save/exit was successful + if not (success := wait_until_hidden(ScreenObjects.InGame, 3)): + Logger.debug("Failed to find or click save/exit button") attempts += 1 - if not success: - Logger.debug("Failed to find or click save/exit button") return success def dismiss_skills_icon() -> bool: @@ -78,7 +80,7 @@ def move_to_corpse(): mouse.move(*pos) def return_to_play() -> bool: - substrings = ["NPC", "Panel", "SaveAndExit"] + substrings = ["NPC", "Panel", "GameMenu"] img=grab() start=time.time() while (elapsed := (time.time() - start) < 8): diff --git a/src/ui_manager.py b/src/ui_manager.py index 46048c2..f7b3fe3 100644 --- a/src/ui_manager.py +++ b/src/ui_manager.py @@ -108,10 +108,12 @@ class ScreenObjects: ServerError=ScreenObject( ref=["SERVER_ISSUES"] ) - SaveAndExit=ScreenObject( - ref=["SAVE_AND_EXIT_NO_HIGHLIGHT", "SAVE_AND_EXIT_HIGHLIGHT"], - roi="save_and_exit", - threshold=0.85 + GameMenu=ScreenObject( + ref=["GAME_MENU_HIGHLIGHT"], + roi="game_menu_left", + best_match=True, + threshold=0.95, + normalize_monitor=False ) NeedRepair=ScreenObject( ref="REPAIR_NEEDED",