Check for item again after stashing to figure if it is still there (#409)

This commit is contained in:
aeon0
2022-01-08 10:04:07 +01:00
committed by GitHub
parent ded772b377
commit dcccee68f2
+15 -5
View File
@@ -252,11 +252,12 @@ class UiManager():
return True
return False
def _keep_item(self, item_finder: ItemFinder, img: np.ndarray) -> bool:
def _keep_item(self, item_finder: ItemFinder, img: np.ndarray, do_logging: bool = True) -> bool:
"""
Check if an item should be kept, the item should be hovered and in own inventory when function is called
:param item_finder: ItemFinder to check if item is in pickit
:param img: Image in which the item is searched (item details should be visible)
:param do_logging: Bool value to turn on/off logging for items that are found and should be kept
:return: Bool if item should be kept
"""
wait(0.2, 0.3)
@@ -319,8 +320,9 @@ class UiManager():
exclude = True
break
if include and not exclude:
Logger.debug(f"{x.name}: Stashing. Required {include_logic_type}({include_props})={include}, exclude {exclude_logic_type}({exclude_props})={exclude}")
self._game_stats.log_item_keep(x.name, self._config.items[x.name].pickit_type == 2, img)
if do_logging:
Logger.debug(f"{x.name}: Stashing. Required {include_logic_type}({include_props})={include}, exclude {exclude_logic_type}({exclude_props})={exclude}")
self._game_stats.log_item_keep(x.name, self._config.items[x.name].pickit_type == 2, img)
filtered_list.append(x)
return len(filtered_list) > 0
@@ -416,6 +418,13 @@ class UiManager():
mouse.release(button="left")
wait(0.2, 0.25)
keyboard.send('ctrl', do_press=False)
# To avoid logging multiple times the same item when stash tab is full
# check the _keep_item again. In case stash is full we will still find the same item
wait(0.3)
did_stash_test_img = self._screen.grab()
if self._keep_item(item_finder, did_stash_test_img, False):
Logger.debug("Wanted to stash item, but its still in inventory. Assumes full stash. Move to next.")
break
else:
# make sure there is actually an item
time.sleep(0.3)
@@ -620,8 +629,9 @@ if __name__ == "__main__":
print("Start")
from config import Config
config = Config()
game_stats = GameStats()
screen = Screen(config.general["monitor"])
template_finder = TemplateFinder(screen)
item_finder = ItemFinder(config)
ui_manager = UiManager(screen, template_finder)
ui_manager.buy_pots(3, 4)
ui_manager = UiManager(screen, template_finder, game_stats)
ui_manager.stash_all_items(5, item_finder)