Llamar como
Conditions.talent.treeWidget(parent, spec, value, update)
Registra la dependencia Conditions.talent.treeWidget y luego llámala con ese nombre. Una llamada con espacio de nombres no pasa self: usa una llamada con dos puntos o pasa tú mismo el objeto.
Qué hace
Builds the TALENT editor controls for Classic talent trees: a tree dropdown, a talent icon, a talent dropdown for the chosen tree, and a Points comparison. Changing the tree clears the talent (and the comparison when switching from another layout), and every change calls update.
Argumentos
| Nombre | Tipo | Qué hace |
|---|---|---|
parent | table | Condition widget group the control is added to. |
spec | number | nil | Specialization the editor is for; on progression clients a value from 1 to 4 also selects the talent group to read. |
value | table | Saved TALENT condition settings; the control reads and rewrites its layout, tree, talent, node, entry, operator and value fields. |
update | function | Called with no arguments after every change so the editor can refresh. |
Retornos
Nada.
Ediciones
Las funciones auxiliares integradas se registran en todas las ediciones. Lo que cambia es la API del juego que leen; donde falta alguna, la función auxiliar recurre a una alternativa o devuelve nil con un motivo.
No lee directamente ninguna API del juego.
Cómo la llama el addon
- Talento (widget)
if current=="tree" then treeWidget(parent,spec,value,update)
Dependencias
PLACEHOLDER(builtin:Conditions/talent.lua:PLACEHOLDER)block→Conditions.talent.blockdropdown→Conditions.talent.dropdowngroup→Conditions.talent.groupicon→Conditions.talent.iconinfo→Conditions.talent.infoownTrees→Conditions.talent.ownTreesplatform(builtin:Conditions/talent.lua:platform)
Código fuente
Conditions/talent.lua, línea 191. Solo lectura en el juego; Duplicar crea una copia editable.
Conditions.talent.treeWidget(parent, spec, value, update)
local trees,treeOrder={},{}
-- Names, never positions: the game's for the player's class, the shipped
-- table's for another class's rotation or before the game has the data.
local listed=addon.TalentTrees.Choices(addon.TalentTrees.ContextClass(),group(spec))
if listed then trees,treeOrder=listed.choices,listed.order end
local talents,talentOrder={},{}
local talentIcon,talentPicker,treePicker
local function choices()
talents,talentOrder={},{}
if value.tree and ownTrees() then
for index=1,platform:GetTreeTalentCount(value.tree) or 0 do
local talent=platform:GetTreeTalentInfo(value.tree,index,group(spec))
if talent then talents[index]={text=talent.name,icon=talent.icon};talentOrder[#talentOrder+1]=index end
end
end
end
choices()
local box=block(parent)
talentIcon=icon(box,value,spec)
treePicker=dropdown(box,L["Talent Tree"],function(selected)
if selected==value.tree then return end
local wasTree=value.layout=="tree" or value.layout==nil and value.tree~=nil
value.tree,value.talent,value.layout=selected,nil,"tree"
if not wasTree then value.value,value.operator=nil,nil end
choices();talentPicker:SetList(talents,talentOrder);talentPicker:SetValue(nil)
talentPicker:SetDisabled(#talentOrder==0);talentIcon:SetImage(PLACEHOLDER);update()
end)
treePicker.configure=function() treePicker:SetList(trees,treeOrder);treePicker:SetValue(value.tree) end
talentPicker=dropdown(box,L["Talent"],function(selected)
value.talent,value.layout=selected,"tree"
local talent=info(value,spec);talentIcon:SetImage(talent and talent.icon or PLACEHOLDER);update()
end)
talentPicker:SetDisabled(#talentOrder==0)
talentPicker.configure=function() talentPicker:SetList(talents,talentOrder);talentPicker:SetValue(value.talent) end
parent:AddChild(addon:Widget_OperatorWidget(value,L["Points"],update))