diff --git a/src/bot.py b/src/bot.py index 7e64f23..639f1c0 100644 --- a/src/bot.py +++ b/src/bot.py @@ -1,30 +1,29 @@ from transitions import Machine import time -from char.hammerdin import Hammerdin -from run import Pindle, ShenkEld, Trav -from template_finder import TemplateFinder -from item.item_finder import ItemFinder -from screen import Screen -from ui_manager import UiManager -from npc_manager import NpcManager -from belt_manager import BeltManager -from pather import Pather, Location -from logger import Logger -from char.sorceress import Sorceress -from char.i_char import IChar -from config import Config -from health_manager import HealthManager -from death_manager import DeathManager -from town import TownManager, A3, A4, A5 -from item.pickit import PickIt -from game_stats import GameStats -from utils.misc import wait import keyboard import time import os import random from typing import Union +from utils.misc import wait +from game_stats import GameStats +from logger import Logger +from config import Config +from screen import Screen +from template_finder import TemplateFinder +from char import IChar +from item import ItemFinder, PickIt +from ui import UiManager +from ui import BeltManager +from pather import Pather, Location +from npc_manager import NpcManager +from health_manager import HealthManager +from death_manager import DeathManager +from char import Sorceress, Hammerdin +from run import Pindle, ShenkEld, Trav +from town import TownManager, A3, A4, A5 + class Bot: def __init__(self, screen: Screen, game_stats: GameStats, pick_corpse: bool = False): diff --git a/src/char/__init__.py b/src/char/__init__.py index e69de29..2a9f6ef 100644 --- a/src/char/__init__.py +++ b/src/char/__init__.py @@ -0,0 +1,3 @@ +from .i_char import IChar +from .hammerdin import Hammerdin +from .sorceress import Sorceress diff --git a/src/char/hammerdin.py b/src/char/hammerdin.py index da73ccc..349c20d 100644 --- a/src/char/hammerdin.py +++ b/src/char/hammerdin.py @@ -1,8 +1,8 @@ import keyboard from utils.custom_mouse import mouse -from char.i_char import IChar +from char import IChar from template_finder import TemplateFinder -from ui_manager import UiManager +from ui import UiManager from pather import Pather from logger import Logger from screen import Screen @@ -137,7 +137,7 @@ if __name__ == "__main__": keyboard.add_hotkey('f12', lambda: Logger.info('Force Exit (f12)') or os._exit(1)) keyboard.wait("f11") from config import Config - from ui_manager import UiManager + from ui import UiManager config = Config() screen = Screen(config.general["monitor"]) t_finder = TemplateFinder(screen) diff --git a/src/char/i_char.py b/src/char/i_char.py index dd49b0c..55da91c 100644 --- a/src/char/i_char.py +++ b/src/char/i_char.py @@ -1,17 +1,18 @@ -from typing import Tuple -from utils.custom_mouse import mouse -from template_finder import TemplateFinder -from ui_manager import UiManager -from screen import Screen -from utils.misc import wait, cut_roi, is_in_roi +from typing import Dict, Tuple, Union, List, Callable +import random +import time import cv2 import math import keyboard + +from utils.custom_mouse import mouse +from utils.misc import wait, cut_roi, is_in_roi + from logger import Logger -import time -from typing import Dict, Tuple, Union, List, Callable from config import Config -import random +from screen import Screen +from template_finder import TemplateFinder +from ui import UiManager def abstract(f): diff --git a/src/char/sorceress.py b/src/char/sorceress.py index c5c866e..9b7c9eb 100644 --- a/src/char/sorceress.py +++ b/src/char/sorceress.py @@ -1,9 +1,9 @@ import keyboard from utils.custom_mouse import mouse -from char.i_char import IChar +from char import IChar from template_finder import TemplateFinder -from item.item_finder import ItemFinder -from ui_manager import UiManager +from item import ItemFinder +from ui import UiManager from pather import Pather from logger import Logger from screen import Screen @@ -149,8 +149,8 @@ if __name__ == "__main__": keyboard.add_hotkey('f12', lambda: Logger.info('Force Exit (f12)') or os._exit(1)) keyboard.wait("f11") from config import Config - from char.sorceress import Sorceress - from ui_manager import UiManager + from char import Sorceress + from ui import UiManager config = Config() screen = Screen(config.general["monitor"]) t_finder = TemplateFinder(screen) diff --git a/src/game_recovery.py b/src/game_recovery.py index ff82cf8..f9eec0d 100644 --- a/src/game_recovery.py +++ b/src/game_recovery.py @@ -3,7 +3,7 @@ from screen import Screen from template_finder import TemplateFinder from config import Config from death_manager import DeathManager -from ui_manager import UiManager +from ui import UiManager import keyboard import time diff --git a/src/health_manager.py b/src/health_manager.py index d441c9b..9ea2eca 100644 --- a/src/health_manager.py +++ b/src/health_manager.py @@ -1,6 +1,6 @@ from template_finder import TemplateFinder -from ui_manager import UiManager -from belt_manager import BeltManager +from ui import UiManager +from ui import BeltManager from pather import Location import cv2 import time diff --git a/src/item/__init__.py b/src/item/__init__.py index e69de29..78dbe7c 100644 --- a/src/item/__init__.py +++ b/src/item/__init__.py @@ -0,0 +1,3 @@ +from .item_cropper import ItemCropper +from .item_finder import ItemFinder, Item +from .pickit import PickIt diff --git a/src/item/item_finder.py b/src/item/item_finder.py index 3575bc1..a861d6f 100644 --- a/src/item/item_finder.py +++ b/src/item/item_finder.py @@ -7,7 +7,7 @@ from dataclasses import dataclass import math from config import Config from utils.misc import color_filter, cut_roi -from item.item_cropper import ItemCropper +from item import ItemCropper @dataclass diff --git a/src/item/pickit.py b/src/item/pickit.py index 5725d22..1953974 100644 --- a/src/item/pickit.py +++ b/src/item/pickit.py @@ -1,16 +1,16 @@ -from belt_manager import BeltManager -from ui_manager import UiManager -from item.item_finder import ItemFinder, Item import time -from utils.custom_mouse import mouse import keyboard import cv2 + +from utils.custom_mouse import mouse from config import Config -from char.i_char import IChar from logger import Logger from screen import Screen -from ui_manager import UiManager from game_stats import GameStats +from item import ItemFinder, Item +from ui import UiManager +from ui import BeltManager +from char import IChar class PickIt: @@ -123,9 +123,9 @@ class PickIt: time.sleep(0.2) if self._ui_manager.is_overburdened(): + picked_up_items = True Logger.warning("Inventory full, skipping pickit!") - # TODO: should go back to town and stash stuff then go back to picking up more stuff - # but sm states are not fine enough for such a routine right now... + # TODO: Could think about sth like: Go back to town, stash, come back picking up stuff break else: # send log to discord @@ -149,9 +149,9 @@ class PickIt: if __name__ == "__main__": import os from config import Config - from char.sorceress import Sorceress - from char.hammerdin import Hammerdin - from ui_manager import UiManager + from char import Sorceress + from char import Hammerdin + from ui import UiManager from template_finder import TemplateFinder from pather import Pather from game_stats import GameStats diff --git a/src/main.py b/src/main.py index ace5af3..4c97f37 100644 --- a/src/main.py +++ b/src/main.py @@ -1,17 +1,5 @@ -from bot import Bot -from game_recovery import GameRecovery -from game_stats import GameStats -from health_manager import HealthManager -from death_manager import DeathManager -from screen import Screen -from logger import Logger import keyboard import os -from config import Config -from utils.graphic_debugger import run_graphic_debugger -from version import __version__ -from utils.auto_settings import adjust_settings -from utils.misc import kill_thread, send_discord import threading from beautifultable import BeautifulTable import time @@ -19,6 +7,20 @@ import logging import cv2 import traceback +from version import __version__ +from utils.graphic_debugger import run_graphic_debugger +from utils.auto_settings import adjust_settings +from utils.misc import kill_thread, send_discord + +from config import Config +from screen import Screen +from logger import Logger +from game_recovery import GameRecovery +from game_stats import GameStats +from health_manager import HealthManager +from death_manager import DeathManager +from bot import Bot + def run_bot( config: Config, diff --git a/src/pather.py b/src/pather.py index 1b38e7e..6abc1e2 100644 --- a/src/pather.py +++ b/src/pather.py @@ -1,8 +1,3 @@ -from char.i_char import IChar -from screen import Screen -from template_finder import TemplateFinder -from logger import Logger -from char.i_char import IChar import math import keyboard import time @@ -10,10 +5,15 @@ import os import random from typing import Tuple, Union, List import cv2 -from config import Config -from utils.misc import is_in_roi import numpy as np +from utils.misc import is_in_roi +from config import Config +from logger import Logger +from screen import Screen +from template_finder import TemplateFinder +from char import IChar + class Location: # A5 Town @@ -382,9 +382,9 @@ if __name__ == "__main__": keyboard.add_hotkey('f12', lambda: Logger.info('Force Exit (f12)') or os._exit(1)) keyboard.wait("f11") from config import Config - from char.sorceress import Sorceress - from char.hammerdin import Hammerdin - from ui_manager import UiManager + from char import Sorceress + from char import Hammerdin + from ui import UiManager config = Config() screen = Screen(config.general["monitor"]) t_finder = TemplateFinder(screen) diff --git a/src/run/__init__.py b/src/run/__init__.py index e0e4b3d..8043bb7 100644 --- a/src/run/__init__.py +++ b/src/run/__init__.py @@ -1,3 +1,3 @@ -from run.pindle import Pindle -from run.shenk_eld import ShenkEld -from run.trav import Trav +from .pindle import Pindle +from .shenk_eld import ShenkEld +from .trav import Trav diff --git a/src/run/pindle.py b/src/run/pindle.py index 84361a4..4ad6f8d 100644 --- a/src/run/pindle.py +++ b/src/run/pindle.py @@ -1,12 +1,12 @@ -from char.i_char import IChar +from char import IChar from config import Config from logger import Logger from pather import Location, Pather from typing import Union -from item.pickit import PickIt +from item import PickIt from template_finder import TemplateFinder from town.town_manager import TownManager -from ui_manager import UiManager +from ui import UiManager from utils.misc import wait diff --git a/src/run/shenk_eld.py b/src/run/shenk_eld.py index e0edde7..c833959 100644 --- a/src/run/shenk_eld.py +++ b/src/run/shenk_eld.py @@ -1,12 +1,12 @@ -from char.i_char import IChar +from char import IChar from config import Config from logger import Logger from pather import Location, Pather from typing import Union -from item.pickit import PickIt +from item import PickIt from template_finder import TemplateFinder from town.town_manager import TownManager -from ui_manager import UiManager +from ui import UiManager from utils.misc import wait diff --git a/src/run/trav.py b/src/run/trav.py index 6000aa3..7c60a5f 100644 --- a/src/run/trav.py +++ b/src/run/trav.py @@ -1,12 +1,12 @@ -from char.i_char import IChar +from char import IChar from config import Config from logger import Logger from pather import Location, Pather from typing import Union -from item.pickit import PickIt +from item import PickIt from template_finder import TemplateFinder from town.town_manager import TownManager -from ui_manager import UiManager +from ui import UiManager from utils.misc import wait diff --git a/src/town/a3.py b/src/town/a3.py index 85b5ddc..6bc4316 100644 --- a/src/town/a3.py +++ b/src/town/a3.py @@ -1,4 +1,4 @@ -from char.i_char import IChar +from char import IChar from town.i_act import IAct from screen import Screen from config import Config diff --git a/src/town/a4.py b/src/town/a4.py index 4137ebd..3b2b2d8 100644 --- a/src/town/a4.py +++ b/src/town/a4.py @@ -1,4 +1,4 @@ -from char.i_char import IChar +from char import IChar from town.i_act import IAct from screen import Screen from config import Config diff --git a/src/town/a5.py b/src/town/a5.py index 4a3fc22..3b7fb3d 100644 --- a/src/town/a5.py +++ b/src/town/a5.py @@ -1,4 +1,4 @@ -from char.i_char import IChar +from char import IChar from town.i_act import IAct from screen import Screen from config import Config diff --git a/src/town/town_manager.py b/src/town/town_manager.py index 6f051e5..956137c 100644 --- a/src/town/town_manager.py +++ b/src/town/town_manager.py @@ -1,10 +1,10 @@ from typing import Union -from item.item_finder import ItemFinder +from item import ItemFinder from template_finder import TemplateFinder from config import Config from pather import Location from logger import Logger -from ui_manager import UiManager +from ui import UiManager from town import IAct, A3, A4, A5 from utils.misc import wait @@ -137,7 +137,7 @@ if __name__ == "__main__": keyboard.add_hotkey('f12', lambda: Logger.info('Force Exit (f12)') or os._exit(1)) print("Move to d2r window and press f11") keyboard.wait("f11") - from char.hammerdin import Hammerdin + from char import Hammerdin from pather import Pather from screen import Screen from npc_manager import NpcManager diff --git a/src/ui/__init__.py b/src/ui/__init__.py new file mode 100644 index 0000000..761560d --- /dev/null +++ b/src/ui/__init__.py @@ -0,0 +1,2 @@ +from .ui_manager import UiManager +from .belt_manager import BeltManager diff --git a/src/belt_manager.py b/src/ui/belt_manager.py similarity index 99% rename from src/belt_manager.py rename to src/ui/belt_manager.py index ca4fa5f..31b063f 100644 --- a/src/belt_manager.py +++ b/src/ui/belt_manager.py @@ -1,15 +1,17 @@ -from screen import Screen -from template_finder import TemplateFinder -from ui_manager import UiManager -from config import Config -from utils.misc import cut_roi, wait, color_filter -from utils.custom_mouse import mouse import numpy as np from typing import List import keyboard import itertools import cv2 + +from utils.misc import cut_roi, wait, color_filter +from utils.custom_mouse import mouse + from logger import Logger +from config import Config +from screen import Screen +from template_finder import TemplateFinder +from ui import UiManager class BeltManager: diff --git a/src/ui_manager.py b/src/ui/ui_manager.py similarity index 99% rename from src/ui_manager.py rename to src/ui/ui_manager.py index 08e06c6..729dcf5 100644 --- a/src/ui_manager.py +++ b/src/ui/ui_manager.py @@ -1,18 +1,19 @@ -from screen import Screen -from template_finder import TemplateFinder -from typing import Tuple -from utils.custom_mouse import mouse +from typing import List import keyboard import time import cv2 import itertools import os import numpy as np -from logger import Logger + +from utils.custom_mouse import mouse from utils.misc import wait, cut_roi, color_filter, send_discord + +from logger import Logger from config import Config -from item.item_finder import ItemFinder -from typing import List +from screen import Screen +from item import ItemFinder +from template_finder import TemplateFinder class UiManager(): @@ -211,7 +212,7 @@ class UiManager(): return avg_brightness > 16.0 @staticmethod - def get_slot_pos_and_img(config: Config, img: np.ndarray, column: int, row: int) -> Tuple[Tuple[int, int], np.ndarray]: + def get_slot_pos_and_img(config: Config, img: np.ndarray, column: int, row: int) -> tuple[tuple[int, int], np.ndarray]: """ Get the pos and img of a specific slot position in Inventory. Inventory must be open in the image. :param config: The config which should be used @@ -525,4 +526,4 @@ if __name__ == "__main__": template_finder = TemplateFinder(screen) item_finder = ItemFinder() ui_manager = UiManager(screen, template_finder) - ui_manager.stash_all_items(5, item_finder) + ui_manager.stash_all_items(1, item_finder) diff --git a/src/utils/graphic_debugger.py b/src/utils/graphic_debugger.py index 3cd20f1..3e875da 100644 --- a/src/utils/graphic_debugger.py +++ b/src/utils/graphic_debugger.py @@ -2,7 +2,7 @@ import cv2 import numpy as np from utils.misc import color_filter from screen import Screen -from item.item_finder import ItemFinder +from item import ItemFinder from config import Config from template_finder import TemplateFinder