diff --git a/src/bot.py b/src/bot.py index c7e2ff6..9acad8b 100644 --- a/src/bot.py +++ b/src/bot.py @@ -43,10 +43,10 @@ class Bot: self._config = Config() self._template_finder = TemplateFinder(self._screen) self._item_finder = ItemFinder(self._config) - self._ui_manager = UiManager(self._screen, self._template_finder) + self._ui_manager = UiManager(self._screen, self._template_finder, self._game_stats) self._belt_manager = BeltManager(self._screen, self._template_finder) self._pather = Pather(self._screen, self._template_finder) - self._pickit = PickIt(self._screen, self._item_finder, self._ui_manager, self._belt_manager, self._game_stats) + self._pickit = PickIt(self._screen, self._item_finder, self._ui_manager, self._belt_manager) # Create Character if self._config.char["type"] in ["sorceress", "light_sorc"]: diff --git a/src/game_stats.py b/src/game_stats.py index a8d8365..a5e8b92 100644 --- a/src/game_stats.py +++ b/src/game_stats.py @@ -52,7 +52,7 @@ class GameStats: if self._location not in self._location_stats: self._location_stats[self._location] = { "items": [], "deaths": 0, "chickens": 0, "merc_deaths": 0, "failed_runs": 0 } - def log_item_pickup(self, item_name: str, send_message: bool): + def log_item_keep(self, item_name: str, send_message: bool): filtered_items = ["_potion", "misc_gold"] if self._location is not None and not any(substring in item_name for substring in filtered_items): self._location_stats[self._location]["items"].append(item_name) @@ -185,5 +185,5 @@ class GameStats: if __name__ == "__main__": game_stats = GameStats() - game_stats.log_item_pickup("rune_12", True) + game_stats.log_item_keep("rune_12", True) game_stats._save_stats_to_file() diff --git a/src/item/pickit.py b/src/item/pickit.py index 31a564d..300981f 100644 --- a/src/item/pickit.py +++ b/src/item/pickit.py @@ -6,7 +6,6 @@ from utils.custom_mouse import mouse from config import Config from logger import Logger from screen import Screen -from game_stats import GameStats from item import ItemFinder, Item from ui import UiManager from ui import BeltManager @@ -14,12 +13,11 @@ from char import IChar class PickIt: - def __init__(self, screen: Screen, item_finder: ItemFinder, ui_manager: UiManager, belt_manager: BeltManager, game_stats: GameStats = None): + def __init__(self, screen: Screen, item_finder: ItemFinder, ui_manager: UiManager, belt_manager: BeltManager): self._item_finder = item_finder self._screen = screen self._belt_manager = belt_manager self._ui_manager = ui_manager - self._game_stats = game_stats self._config = Config() self._last_closest_item: Item = None @@ -130,7 +128,6 @@ class PickIt: # send log to discord if found_items and closest_item.name not in picked_up_items: Logger.info(f"Picking up: {closest_item.name} ({closest_item.score*100:.1f}% confidence)") - self._game_stats.log_item_pickup(closest_item.name, self._config.items[closest_item.name].pickit_type == 2) picked_up_items.append(closest_item.name) else: char.pre_move() @@ -153,13 +150,11 @@ if __name__ == "__main__": from ui import UiManager from template_finder import TemplateFinder from pather import Pather - from game_stats import GameStats import keyboard keyboard.add_hotkey('f12', lambda: Logger.info('Force Exit (f12)') or os._exit(1)) keyboard.wait("f11") config = Config() - game_states = GameStats() screen = Screen(config.general["monitor"]) t_finder = TemplateFinder(screen) ui_manager = UiManager(screen, t_finder) @@ -168,5 +163,5 @@ if __name__ == "__main__": pather = Pather(screen, t_finder) item_finder = ItemFinder(config) char = Hammerdin(config.hammerdin, config.char, screen, t_finder, ui_manager, pather) - pickit = PickIt(screen, item_finder, ui_manager, belt_manager, game_states) + pickit = PickIt(screen, item_finder, ui_manager, belt_manager) print(pickit.pick_up_items(char)) diff --git a/src/ui/ui_manager.py b/src/ui/ui_manager.py index 2fc63b4..319f61e 100644 --- a/src/ui/ui_manager.py +++ b/src/ui/ui_manager.py @@ -16,15 +16,17 @@ from item import ItemFinder from template_finder import TemplateFinder from messenger import Messenger +from game_stats import GameStats class UiManager(): """Everything that is clicking on some static 2D UI or is checking anything in regard to it should be placed here.""" - def __init__(self, screen: Screen, template_finder: TemplateFinder): + def __init__(self, screen: Screen, template_finder: TemplateFinder, game_stats: GameStats = None): self._config = Config() self._template_finder = template_finder self._messenger = Messenger() + self._game_stats = game_stats self._screen = screen self._curr_stash = {"items": 0, "gold": 0} #0: personal, 1: shared1, 2: shared2, 3: shared3 @@ -267,6 +269,7 @@ class UiManager(): exclude_props = self._config.items[x.name].exclude if not (include_props or exclude_props): Logger.debug(f"{x.name}: Stashing") + self._game_stats.log_item_keep(x.name, self._config.items[x.name].pickit_type == 2) filtered_list.append(x) continue include = True @@ -316,6 +319,7 @@ class UiManager(): 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) filtered_list.append(x) return len(filtered_list) > 0 diff --git a/test/game_stats_test.py b/test/game_stats_test.py index 4f27429..32a6b25 100644 --- a/test/game_stats_test.py +++ b/test/game_stats_test.py @@ -16,10 +16,10 @@ class TestGameStats: ("some_potion", False), ("super_healing_potion", False), ]) - def test_log_item_pickup(self, item_name: str, item_should_be_added: bool): + def test_log_item_keep(self, item_name: str, item_should_be_added: bool): self.game_stats.update_location("test_location") previous_item_count = len(self.game_stats._location_stats["test_location"]["items"]) - self.game_stats.log_item_pickup(item_name, send_message=False) + self.game_stats.log_item_keep(item_name, send_message=False) new_item_count = len(self.game_stats._location_stats["test_location"]["items"]) item_was_added = previous_item_count < new_item_count assert(item_was_added == item_should_be_added)