参考 › 函数参考 › Conditions

Conditions.common.Widget_UnitWidget

公共

调用方式

addon:Widget_UnitWidget(value, units, update, field)

可直接通过 addon 使用,无需依赖项。

作用

创建一个绑定到条件值记录的已配置单位选择器。返回该控件,由调用方将其添加到条件回调的父级。

参数

名称类型作用
selfRMAddonRotation Master 插件实例(使用冒号调用时隐含传入)。
valuetable选择单位时会被更新的条件值记录。
unitstable选择器中显示的单位键到显示名称的映射。
updatefunction更改所选单位后调用的回调。
fieldstring | nil要编辑的值记录字段;默认为 unit。

返回值

1RMConditionSelector已配置的单位选择器;使用 parent:AddChild(widget) 添加它。

版本

内置辅助函数在每个版本上都会注册。不同的是它们读取的游戏 API;某个 API 缺失时,辅助函数会改用后备方案,或返回 nil 并附上原因。

它不直接读取任何游戏 API。

插件如何调用它

  • 可攻击 (widget)
    local unit = addon:Widget_UnitWidget(value, Functions.collections.deepcopy(addon.units, { "player", "pet" }),
  • 超出近战范围 (widget)
    parent:AddChild(addon:Widget_UnitWidget(value,addon.units,function()
  • 存在增益效果 (widget)
    local unit = addon:Widget_UnitWidget(value, addon.units,
  • 增益效果剩余时间 (widget)
    local unit = addon:Widget_UnitWidget(value, addon.units,
  • 增益效果层数 (widget)
    local unit = addon:Widget_UnitWidget(value, addon.units,
  • 施法中 (widget)
    local unit = addon:Widget_UnitWidget(value, addon.units,
  • 施法进度 (widget)
    local unit = addon:Widget_UnitWidget(value, addon.units,
  • 施法剩余时间 (widget)
    local unit = addon:Widget_UnitWidget(value, addon.units,

以及另外 52 处: 施放特定法术 (widget), 施法可打断 (widget), 引导中 (widget), 引导进度 (widget), 引导剩余时间 (widget), 引导特定法术 (widget), 引导可打断 (widget), 职业 (widget), 单位分类 (widget), 战斗中 (widget), 战斗动作历史 (widget), 战斗动作历史时间 (widget), 生物类型 (widget), 已死亡或处于灵魂状态 (widget), 存在减益效果 (widget), 减益效果剩余时间 (widget), 减益效果层数 (widget), 存在某类减益效果 (widget), 距离 (widget), 敌对 (widget), 是友方 (widget), 在队伍中 (widget), 生命值 (widget), 生命值百分比 (widget), 免疫 (widget), 是同一单位 (widget), 等级 (widget), 法力值 (widget), 法力值百分比 (widget), 团队标记 (widget), 点数 (widget), 能量 (widget), 能量百分比 (widget), 范围内的盟友 (widget), 范围内的生命值 (widget), 范围内的生命值百分比 (widget), 范围内的生命值百分比计数 (widget), 范围内的生命值计数 (widget), 范围内的法力值 (widget), 范围内的法力值百分比 (widget), 范围内的法力值百分比计数 (widget), 范围内的法力值计数 (widget), PvP 状态 (widget), 有抗性 (widget), 职责 (widget), 逃跑者 (widget), 角色属性 (widget), 拥有可偷取的增益效果 (widget), 仇恨 (widget), 距离生命值达到所需时间 (widget), 距离生命值百分比达到所需时间 (widget), 单位存在 (widget)

源码

UI/condition_unit.lua,第 23 行。在游戏中为只读;“复制”会生成一份可编辑的副本。

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

返回函数参考