Merge pull request #356 from aeon0/log-item-on-keep

only log item on keep of item
This commit is contained in:
egut125
2022-01-01 15:40:35 -05:00
committed by GitHub
5 changed files with 13 additions and 14 deletions

View File

@@ -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"]:

View File

@@ -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()

View File

@@ -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))

View File

@@ -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

View File

@@ -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)