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
| Name | Typ | Was sie bewirkt |
|---|---|---|
self | RMAddon | Addon-Instanz von Rotation Master (bei Doppelpunktaufrufen implizit). |
spec | number | Spezialisierungsbereich zur Auflösung von Zaubervorschlägen. |
editbox | string | Art der Referenzeingabe, etwa Spec_EditBox, für Zaubervorschläge. |
value | table | Bedingungswert-Datensatz mit den Feldern spell, ranked und disabled; wird direkt aktualisiert. |
nametoid | function | Auflöser, der einen eingegebenen Zaubernamen seiner ID zuordnet. |
isvalid | function | Prädikat, das den vorgeschlagenen Zauberwert validiert. |
update | function | Callback, der den festgelegten Zauberwert erhält. |
Rückgabewerte
| 1 | RMConditionGroup | Zauberfeldgruppe 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-API | |||||
|---|---|---|---|---|---|
GameTooltip |
Wie das Addon sie aufruft
- Beliebiger Zauber verfügbar (widget)
local spell_group = addon:Widget_SpellWidget(spec, "Spell_EditBox", value, - Aufladungen eines beliebigen Zaubers (widget)
local spell_group = addon:Widget_SpellWidget(spec, "Spell_EditBox", value, - Abklingzeit eines beliebigen Zaubers (widget)
local spell_group = addon:Widget_SpellWidget(spec, "Spell_EditBox", value, - Beliebiger Zauber in Reichweite (widget)
local spell_group = addon:Widget_SpellWidget(spec, "Spell_EditBox", value, - Aufladezeit eines beliebigen Zaubers (widget)
local spell_group = addon:Widget_SpellWidget(spec, "Spell_EditBox", value, - Zauber der Kampfassistent-Rotation (widget)
local spell_group = addon:Widget_SpellWidget(spec, "Spec_EditBox", value, - Vorschlag des Kampfassistenten (widget)
local spell_group = addon:Widget_SpellWidget(spec, "Spec_EditBox", value, - Begleiterzauber aktiv oder ausstehend (widget)
local spell_group = addon:Widget_SpellWidget((BOOKTYPE_PET or "pet"), "Spec_EditBox", value,
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
RANK_TIP(builtin:Conditions/common.lua:RANK_TIP)SpellData(builtin:Conditions/common.lua:SpellData)
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




