呼叫方式
Conditions.talent.gridWidget(parent, spec, value, update)
記錄相依項目 Conditions.talent.gridWidget,然後以該名稱呼叫。含命名空間的呼叫不會傳入 self:請使用冒號呼叫,或自行傳入該物件。
作用
Builds the TALENT editor controls for the tier-and-column grid talent layout: a talent icon and a dropdown of the client's grid talents (up to 18). Choosing one stores layout "grid" and the talent index in value, clears the tree fields and operator, and calls update; a note warns when the saved reference belongs to another layout.
參數
| 名稱 | 類型 | 作用 |
|---|---|---|
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. |
傳回值
無。
版本
內建輔助函式在每個版本上都會註冊。不同的是它們讀取的遊戲 API;某個 API 不存在時,輔助函式會改用備用方式,或傳回 nil 並附上原因。
它不會直接讀取任何遊戲 API。
插件如何呼叫它
- 天賦 (widget)
elseif current=="grid" then gridWidget(parent,spec,value,update)
相依項目
GRID_TIER_LEVELS(builtin:Conditions/talent.lua:GRID_TIER_LEVELS)PLACEHOLDER(builtin:Conditions/talent.lua:PLACEHOLDER)block→Conditions.talent.blockdropdown→Conditions.talent.dropdowngroup→Conditions.talent.groupicon→Conditions.talent.iconinfo→Conditions.talent.infointeger→Conditions.talent.integerplatform(builtin:Conditions/talent.lua:platform)text→Conditions.talent.text
原始碼
Conditions/talent.lua,第 243 行。在遊戲中為唯讀;「複製」會產生一份可編輯的複本。
Conditions.talent.gridWidget(parent, spec, value, update)
local tiers,tierOrder={},{}
for tier,level in ipairs(GRID_TIER_LEVELS) do tiers[tier]=string.format(L["Tier %d (level %d)"],tier,level);tierOrder[tier]=tier end
local chosen=value.layout=="grid" and integer(value.value,1,18) and value.value or nil
local shownTier=chosen and math.ceil(chosen/3) or 1
local choices,order={},{}
local function load()
choices,order={},{}
for column=1,3 do
local talent=platform:GetGridTalentInfo((shownTier-1)*3+column,group(spec))
if talent then choices[column]={text=talent.name,icon=talent.icon};order[#order+1]=column end
end
end
load()
if value.layout~="grid" and (value.tree~=nil or value.value~=nil) then
text(parent,L["This reference belongs to another talent layout. Selecting a talent explicitly replaces it; viewing does not convert it."])
end
local box=block(parent)
local talentIcon=icon(box,value,spec)
local tierPicker,picker
tierPicker=dropdown(box,L["Tier"],function(selected)
if selected==shownTier then return end
shownTier=selected;load();picker:SetList(choices,order)
picker:SetValue(chosen and math.ceil(chosen/3)==shownTier and (chosen-1)%3+1 or nil);picker:SetDisabled(#order==0)
end)
tierPicker.configure=function() tierPicker:SetList(tiers,tierOrder);tierPicker:SetValue(shownTier) end
picker=dropdown(box,L["Talent"],function(selected)
chosen=(shownTier-1)*3+selected
value.layout,value.value="grid",chosen
value.tree,value.talent,value.operator=nil,nil,nil
local talent=info(value,spec);talentIcon:SetImage(talent and talent.icon or PLACEHOLDER);update()
end)
picker:SetDisabled(#order==0)
picker.configure=function() picker:SetList(choices,order);picker:SetValue(chosen and math.ceil(chosen/3)==shownTier and (chosen-1)%3+1 or nil) end