"""Werkzeug aktivieren (Seil, Schaufel) - ueber Slot oder Tastenkuerzel.

Beides fuehrt im Client zum selben Zustand: Das Werkzeug haengt am
Mauszeiger und wartet auf das Zielfeld. Der Slot ist der bessere Weg,
weil dafuer nichts von Hand eingestellt werden muss - der Bot erkennt
Seil und Schaufel beim Sync selbst in der Leiste.

Faellt auf das eingestellte Tastenkuerzel zurueck, solange kein Slot
bekannt ist (kein Sync gelaufen, oder das Werkzeug liegt nicht in der
Leiste).
"""
from src.repositories.actionBar.slotIcons import getSlotCenter
from src.utils import keyboard
from src.utils.mouse import leftClick


def aktiviereWerkzeug(context, itemId: int, hotkeySchluessel: str) -> None:
    slots = (context.get('ng_actionBar') or {}).get('slots') or {}
    slot = slots.get(str(itemId), slots.get(itemId))
    if slot is not None:
        mitte = getSlotCenter(context['ng_screenshot'], int(slot))
        if mitte is not None:
            leftClick(mitte)
            return
    hotkey = (context.get('general_hotkeys') or {}).get(hotkeySchluessel)
    if hotkey:
        keyboard.press(hotkey)
