import src.utils.keyboard as keyboard
from ...typings import Context
from .common.base import BaseTask


class CastSpellTask(BaseTask):
    """Wirkt einen Zauber ueber die Chat-Worte statt ueber einen Hotkey.

    Enter oeffnet die Chat-Eingabe zuerst, damit die Zauber-Buchstaben
    auch im "Chat Off"-Modus nicht als Hotkeys wirken.
    """

    def __init__(self, spell: str, delayAfterComplete: int = 1):
        super().__init__()
        self.name = 'castSpell'
        self.delayAfterComplete = delayAfterComplete
        self.spell = spell

    def do(self, context: Context) -> Context:
        keyboard.press('enter')
        keyboard.write(self.spell)
        keyboard.press('enter')
        return context
