Referenz › Funktionsreferenz › Conditions

Conditions.common.Widget_SpellWidget

öffentlich

Aufruf als

addon:Widget_SpellWidget(spec, editbox, value, nametoid, isvalid, update)

Direkt über addon verfügbar; keine Abhängigkeit nötig.

Was sie bewirkt

Eine Zaubereingabe mit Vorschlägen, Validierung und Zauberlink-Unterstützung für Widgets benutzerdefinierter Bedingungen erstellen. Der Update-Callback ist für das Speichern eines gewählten Werts zuständig; das zurückgegebene Widget dem Callback-Elternelement hinzufügen.

Argumente

NameTypWas sie bewirkt
selfRMAddonAddon-Instanz von Rotation Master (bei Doppelpunktaufrufen implizit).
specnumberSpezialisierungsbereich zur Auflösung von Zaubervorschlägen.
editboxstringArt der Referenzeingabe, etwa Spec_EditBox, für Zaubervorschläge.
valuetableBedingungswert-Datensatz mit den Feldern spell, ranked und disabled; wird direkt aktualisiert.
nametoidfunctionAuflöser, der einen eingegebenen Zaubernamen seiner ID zuordnet.
isvalidfunctionPrädikat, das den vorgeschlagenen Zauberwert validiert.
updatefunctionCallback, der den festgelegten Zauberwert erhält.

Rückgabewerte

1RMConditionGroupZauberfeldgruppe mit Aktionssymbol, Referenzeingabe und optionaler Rangsteuerung.

Editionen

Integrierte Hilfsfunktionen werden auf jeder Edition registriert. Unterschiedlich ist die Spiel-API, die sie lesen; fehlt eine, weicht die Hilfsfunktion aus oder gibt nil mit einem Grund zurück.

  • Auf dieser Edition nicht verfügbar (den Grund nennt der Tooltip)
  • Nur, solange Blizzards Ersatz für veraltete Funktionen aktiv ist
Spiel-APIClassic EraTBC AnniversaryClassic ProgressionForeverRetail
GameTooltipClassic EraTBC AnniversaryClassic ProgressionForeverRetail

Wie das Addon sie aufruft

und 19 weitere: Begleiterzauber verfügbar (widget), Aufladungen des Begleiterzaubers (widget), Abklingzeit des Begleiterzaubers (widget), Begleiterzauberverlauf (widget), Zeit im Begleiterzauberverlauf (widget), Begleiterzauber in Reichweite (widget), Aufladezeit des Begleiterzaubers (widget), Zauber aktiv oder ausstehend (widget), Automatische Zauberwiederholung aktiv (widget), Zauber verfügbar (widget), Zauberaufladungen (widget), Zauberabklingzeit (widget), Zauber-Aufleuchten (Proc) (widget), Zauberverlauf (widget), Zeit im Zauberverlauf (widget), Zauber in Reichweite (widget), Aufladezeit des Zaubers (widget), Bestimmtes Totem vorhanden (widget), Restzeit eines bestimmten Totems (widget)

Abhängigkeiten

Quelle

Conditions/common.lua, Zeile 82. Im Spiel schreibgeschützt; Duplizieren erstellt eine bearbeitbare Kopie.

Conditions.common.Widget_SpellWidget(self, spec, editbox, value, nametoid, isvalid, update)
    local spell_group = addon:CreateConditionGroup()
    spell_group:SetLayout('RM-SpellField')
    local rankChoice

    local spell = addon:CreateSpellEditBox(editbox,value.spell)
    local initialSpell=type(value.spell)=="string" and SpellData:GetSpellId(value.spell) or value.spell
    local spellIcon = addon:CreateSpellActionIcon(spec == (BOOKTYPE_PET or "pet") and "pet" or "spell",initialSpell,isvalid)
    spellIcon:SetWidth(44)
    spellIcon:SetHeight(44)
    spellIcon:SetText(value.spell)
    spellIcon:SetCallback("OnEnterPressed", function(_, _, v)
        v = tonumber(v)
        if v and isvalid(v) then
            value.spell = v
            spellIcon:SetText(v)
            spell:SetText(SpellData:SpellName(value.spell, not value.ranked))
            if GameTooltip:IsOwned(spellIcon.frame) and GameTooltip:IsVisible() then
                GameTooltip:SetHyperlink("spell:" .. v)
            end
        else
            value.spell = nil
            spellIcon:SetText(nil)
            spell:SetText(nil)
            if GameTooltip:IsOwned(spellIcon.frame) and GameTooltip:IsVisible() then
                GameTooltip:Hide()
            end
        end
        update()
    end)
    spellIcon:SetCallback("OnEnter", function()
        if value.spell then
            GameTooltip:SetOwner(spellIcon.frame, "ANCHOR_BOTTOMRIGHT", 3)
            GameTooltip:SetHyperlink("spell:" .. value.spell)
        end
    end)
    spellIcon:SetCallback("OnLeave", function()
        if GameTooltip:IsOwned(spellIcon.frame) then
            GameTooltip:Hide()
        end
    end)
    spellIcon:SetDisabled(value.disabled)
    spell_group:AddChild(spellIcon)

    if addon:ClientHasSpellRanks() and spec ~= (BOOKTYPE_PET or "pet") then
        local nr_button = addon:CreateConditionCheckBox()
        nr_button:SetLabel(L["Use this exact spell rank"])
        nr_button.button.tooltip = RANK_TIP
        nr_button:SetValue(value.ranked or false)
        nr_button:SetCallback("OnValueChanged", function(_, _, val)
            value.ranked = val
            spell:SetUserData("norank", not val)
            spell:SetText(value.spell and SpellData:SpellName(value.spell, not value.ranked))
            update()
        end)
        nr_button:SetDisabled(value.disabled)
        rankChoice=nr_button
    end

    spell:SetFullWidth(true)
    spell:SetLabel('')
    spell:SetText(value.spell and SpellData:SpellName(value.spell, not value.ranked))
    spell:SetUserData("norank", not value.ranked)
    spell:SetUserData("spec", spec)
    spell:SetCallback("OnEnterPressed", function(_, _, v)
        if not addon.isint(v) then
            v = nametoid(v)
        else
            v = tonumber(v)
        end
        if isvalid(v) then
            value.spell = v
            spell:SetText(SpellData:SpellName(value.spell, not value.ranked))
        else
            value.spell = nil
            spell:SetText(nil)
        end
        spellIcon:SetText(value.spell)
        update()
    end)
    spell:SetDisabled(value.disabled)
    spell_group:AddChild(spell)
    if rankChoice then
        rankChoice.frame.GetFontString=function() return rankChoice.button:GetFontString() end
        spell_group:AddChild(rankChoice)
    end

    return spell_group

Zurück zu Funktionsreferenz