Chame como
addon:Widget_UnitWidget(value, units, update, field)
Disponível diretamente por meio de addon; nenhuma dependência é necessária.
O que faz
Cria um seletor de unidade configurado vinculado a um registro de valores de condição. Retorna o widget para quem chama adicioná-lo ao pai do callback da condição.
Argumentos
| Nome | Tipo | O que faz |
|---|---|---|
self | RMAddon | Instância do addon Rotation Master (implícita nas chamadas com dois-pontos). |
value | table | Registro de valores da condição atualizado quando uma unidade é escolhida. |
units | table | Mapa de chave de unidade para nome de exibição mostrado no seletor. |
update | function | Callback invocado após alterar a unidade selecionada. |
field | string | nil | Campo do registro de valores a editar; unit por padrão. |
Retornos
| 1 | RMConditionSelector | Seletor de unidade configurado; adicione-o com parent:AddChild(widget). |
|---|
Edições
As funções auxiliares integradas são registradas em todas as edições. O que muda é a API do jogo que elas leem; quando uma está ausente, a função auxiliar recorre a uma alternativa ou retorna nil com um motivo.
Não lê nenhuma API do jogo diretamente.
Como o addon a chama
- Atacável (widget)
local unit = addon:Widget_UnitWidget(value, Functions.collections.deepcopy(addon.units, { "player", "pet" }), - Fora do alcance corpo a corpo (widget)
parent:AddChild(addon:Widget_UnitWidget(value,addon.units,function() - Bônus presente (widget)
local unit = addon:Widget_UnitWidget(value, addon.units, - Tempo restante do bônus (widget)
local unit = addon:Widget_UnitWidget(value, addon.units, - Acúmulos do bônus (widget)
local unit = addon:Widget_UnitWidget(value, addon.units, - Lançando (widget)
local unit = addon:Widget_UnitWidget(value, addon.units, - Progresso do lançamento (widget)
local unit = addon:Widget_UnitWidget(value, addon.units, - Tempo restante do lançamento (widget)
local unit = addon:Widget_UnitWidget(value, addon.units,
e mais 52: Lançando feitiço específico (widget), Lançamento interrompível (widget), Canalizando (widget), Progresso da canalização (widget), Tempo restante da canalização (widget), Canalizando feitiço específico (widget), Canalização interrompível (widget), Classe (widget), Classificação da unidade (widget), Em combate (widget), Histórico de ações de combate (widget), Tempo do histórico de ações de combate (widget), Tipo de criatura (widget), Está morto ou é um fantasma (widget), Penalidade presente (widget), Tempo restante da penalidade (widget), Acúmulos da penalidade (widget), Tipo de penalidade presente (widget), Distância (widget), Hostil (widget), É amigável (widget), Em grupo (widget), Vida (widget), Porcentagem de vida (widget), Imune (widget), É o mesmo que (widget), Nível (widget), Mana (widget), Porcentagem de mana (widget), Marca de raide (widget), Pontos (widget), Poder (widget), Porcentagem de poder (widget), Aliados ao alcance (widget), Vida ao alcance (widget), Porcentagem de vida ao alcance (widget), Contagem de porcentagem de vida ao alcance (widget), Contagem de vida ao alcance (widget), Mana ao alcance (widget), Porcentagem de mana ao alcance (widget), Contagem de porcentagem de mana ao alcance (widget), Contagem de mana ao alcance (widget), Marcado para JxJ (widget), Resistente (widget), Função (widget), Fugitivo (widget), Atributo do personagem (widget), Tem bônus roubável (widget), Ameaça (widget), Tempo até a vida (widget), Tempo até a porcentagem de vida (widget), Unidade existe (widget)
Código-fonte
UI/condition_unit.lua, linha 23. Somente leitura no jogo; Duplicar cria uma cópia editável.
Conditions.common.Widget_UnitWidget(self, value, units, update, field)
if field == nil then
field = "unit"
end
local unit = addon:CreateConditionDropdown()
unit:SetLabel(L["Unit"])
unit:SetCallback("OnValueChanged", function(_, _, v)
value[field] = v
update()
end)
unit:SetDisabled(value.disabled)
unit.configure = function()
local choices=units
local parent=unit.parent
local top
for _=1,128 do
if not parent then break end
top=parent:GetUserData('top')
if top then break end
parent=parent.parent
end
if field=='unit' and (value[field]=='announcementtarget' or top and top:GetUserData('announcementTarget')==true) then
choices={};for key,label in pairs(units) do choices[key]=label end
choices.announcementtarget=L['Announcement target']
end
unit:SetList(choices, addon.keys(choices))
unit:SetValue(value[field])
end
return unit