Merge pull request #356 from aeon0/log-item-on-keep
only log item on keep of item
This commit is contained in:
@@ -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"]:
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user