from ...typings import Context
from .common.vector import VectorTask
from .useHotkey import UseHotkeyTask
from .setNextSpell import SetNextSpellTask

class UseComboHotkeyTask(VectorTask):
    """Combo-Zauber ausfuehren und zum naechsten Zauber rotieren.

    `useTask` ersetzt im Smart-Modus den Hotkey (Slot-Klick oder
    Chat-Zauber); ohne Angabe bleibt es beim klassischen Hotkey.
    """
    def __init__(self, hotkey: str, spellName: str, useTask=None):
        super().__init__()
        self.name = 'useComboHotkey'
        self.hotkey = hotkey
        self.isRootTask = True
        self.spellName = spellName
        self.useTask = useTask

    def onBeforeStart(self, context: Context) -> Context:
        castTask = self.useTask or UseHotkeyTask(self.hotkey, 0.1)
        self.tasks = [
          castTask.setParentTask(self).setRootTask(self),
          SetNextSpellTask(self.spellName).setParentTask(self).setRootTask(self),
        ]
        return context
