from ...typings import Context
from .common.base import BaseTask
from src.utils.keyboard import keyDown, keyUp
import src.repositories.gameWindow.slot as gameWindowSlot

class LootMonstersBoxTask(BaseTask):
    def __init__(self):
        super().__init__()
        self.name = 'lootMonstersBox'
        self.isRootTask = True
        self.delayBeforeStart = 0.4

    def shouldIgnore(self, context: Context) -> bool:
        if context['ng_lastUsedSpellLoot'] is None:
            return True
        else:
            return False

    # TODO: add unit tests
    def do(self, context: Context) -> Context:
        # Shift wird physisch gehalten und MUSS am Ende wieder losgelassen
        # werden. Wirft einer der Klicks (z. B. weil der Arduino kurz nicht
        # antwortet), darf die Taste nicht gedrueckt bleiben - das waere ein
        # Zustand, den kein Mensch erzeugt.
        keyDown('shift')
        try:
            coordinate = context['gameWindow']['coordinate']
            for spalte in (6, 7, 8):
                for zeile in (4, 5, 6):
                    gameWindowSlot.rightClickSlot([spalte, zeile], coordinate)
        finally:
            keyUp('shift')
        return context