Chiamala come
addon:Widget_SpellWidget(spec, editbox, value, nametoid, isvalid, update)
Disponibile direttamente tramite addon; non serve alcuna dipendenza.
Cosa fa
Crea un campo per incantesimi con suggerimenti, convalida e supporto ai link degli incantesimi per i widget delle condizioni personalizzate. La callback di aggiornamento si occupa di salvare il valore scelto; aggiungi il widget restituito al genitore della callback.
Argomenti
| Nome | Tipo | Cosa fa |
|---|---|---|
self | RMAddon | Istanza dell'addon Rotation Master (implicita nelle chiamate con due punti). |
spec | number | Ambito di specializzazione usato per risolvere i suggerimenti degli incantesimi. |
editbox | string | Tipo di input di riferimento, ad esempio Spec_EditBox, usato per i suggerimenti degli incantesimi. |
value | table | Record del valore della condizione contenente i campi spell, ranked e disabled; aggiornato sul posto. |
nametoid | function | Risolutore che associa un nome di incantesimo digitato al suo ID. |
isvalid | function | Predicato che convalida il valore proposto per l'incantesimo. |
update | function | Callback che riceve il valore dell'incantesimo confermato. |
Valori restituiti
| 1 | RMConditionGroup | Gruppo di campi incantesimo contenente un'icona di azione, un input di riferimento e un controllo facoltativo del grado. |
|---|
Edizioni
Le funzioni di supporto integrate sono registrate su ogni edizione. Ciò che cambia è l'API di gioco che leggono; dove ne manca una, la funzione di supporto ripiega su un'alternativa o restituisce nil con un motivo.
- Non disponibile su quell'edizione (il motivo è nel suggerimento)
- Solo mentre sono attivi i ripieghi di Blizzard per le API deprecate
| API di gioco | |||||
|---|---|---|---|---|---|
GameTooltip |
Come la chiama l'addon
- Qualsiasi incantesimo disponibile (widget)
local spell_group = addon:Widget_SpellWidget(spec, "Spell_EditBox", value, - Cariche di qualsiasi incantesimo (widget)
local spell_group = addon:Widget_SpellWidget(spec, "Spell_EditBox", value, - Tempo di recupero di qualsiasi incantesimo (widget)
local spell_group = addon:Widget_SpellWidget(spec, "Spell_EditBox", value, - Qualsiasi incantesimo a portata (widget)
local spell_group = addon:Widget_SpellWidget(spec, "Spell_EditBox", value, - Tempo di ricarica di qualsiasi incantesimo (widget)
local spell_group = addon:Widget_SpellWidget(spec, "Spell_EditBox", value, - Incantesimo di rotazione dell'Assistente di Combattimento (widget)
local spell_group = addon:Widget_SpellWidget(spec, "Spec_EditBox", value, - Suggerimento dell'Assistente di Combattimento (widget)
local spell_group = addon:Widget_SpellWidget(spec, "Spec_EditBox", value, - Incantesimo del famiglio attivo o in attesa (widget)
local spell_group = addon:Widget_SpellWidget((BOOKTYPE_PET or "pet"), "Spec_EditBox", value,
e altri 19: Incantesimo del famiglio disponibile (widget), Cariche dell'incantesimo del famiglio (widget), Tempo di recupero dell'incantesimo del famiglio (widget), Cronologia dei lanci del famiglio (widget), Tempo nella cronologia dei lanci del famiglio (widget), Incantesimo del famiglio a portata (widget), Tempo di ricarica dell'incantesimo del famiglio (widget), Incantesimo attivo o in attesa (widget), Ripetizione automatica dell'incantesimo attiva (widget), Incantesimo disponibile (widget), Cariche dell'incantesimo (widget), Tempo di recupero dell'incantesimo (widget), Bagliore di attivazione dell'incantesimo (widget), Cronologia dei lanci (widget), Tempo nella cronologia dei lanci (widget), Incantesimo a portata (widget), Tempo di ricarica dell'incantesimo (widget), Totem specifico presente (widget), Tempo rimanente del totem specifico (widget)
Dipendenze
RANK_TIP(builtin:Conditions/common.lua:RANK_TIP)SpellData(builtin:Conditions/common.lua:SpellData)
Sorgente
Conditions/common.lua, riga 82. Nel gioco è in sola lettura; Duplica crea una copia modificabile.
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




