호출 방법
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