Referência › Referência de funções › Core

Core.point_conditions.editionPointResource

dependência

Chame como

Core.point_conditions.editionPointResource(platform, info, unit, class, cache)

Registre a dependência Core.point_conditions.editionPointResource e depois chame-a por esse nome. Uma chamada com namespace não passa self: use uma chamada com dois-pontos ou passe o objeto você mesmo.

O que faz

Selects the point resource for era and progression clients from the addon's per-edition map (combo points, Holy Power, Soul Shards, Chi, Shadow Orbs and similar). When the resource depends on specialization, only the player can be resolved.

Argumentos

NomeTipoO que faz
platformRMPlatformPlatform used for readability checks and the player's specialization.
infotableClient info with family and, on progression clients, expansion.
unitstringUnit token the resource is for.
classstringThe unit's class file token.
cachetable | nilEvaluation-pass cache passed to getCached, or nil to read directly.

Retornos

1number | nilEnum.PowerType value of the selected resource, or nil when unavailable.
2string | nilNil on success; otherwise the reason, such as unsupported-point-expansion, point-specialization-unavailable, point-resource-unavailable or invalid-point-resource.
3string | nil"power" on success, marking the selector as a power type; absent on failure.

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.

  • Indisponível nessa edição (o motivo está na dica)
  • Só enquanto as alternativas da Blizzard para APIs obsoletas estiverem ativas
API do jogoClassic EraTBC AnniversaryClassic ProgressionForeverRetail
EnumClassic EraTBC AnniversaryClassic ProgressionForeverRetail

Valores secretos (Retail e Forever)

No Retail e no Forever, o jogo entrega valores secretos aos addons. Esta função auxiliar verifica o que lê (addon.Platform:CanReadValue) e retorna nil com um motivo como restricted-value em vez de um valor secreto que não consegue comparar. Trate nil como indisponível, não como false.

Como o addon a chama

Dependências

Código-fonte

Core/point_conditions.lua, linha 163. Somente leitura no jogo; Duplicar cria uma cópia editável.

Core.point_conditions.editionPointResource(platform, info, unit, class, cache)
    local family=info.family
    local map=editionPointPowers[family]
    if family=='progression' then
        local expansion=info.expansion
        if not platform:CanReadValue(expansion) then return nil,'restricted-value' end
        if type(expansion)~='number' then return nil,'unsupported-point-expansion' end
        map=map[expansion]
        if map==nil then return nil,'unsupported-point-expansion' end
    end
    local name=map[class]
    if type(name)=='table' then
        -- Only the player's own specialization is readable.
        if unit~='player' then return nil,'point-specialization-unavailable' end
        local spec,why=addon.Functions.cache.getCached(cache,platform.GetPlayerSpecializationIndex,platform)
        if spec==nil then return nil,why end
        name=name[spec]
    end
    if name==nil then return nil,'point-resource-unavailable' end
    local enum=Enum
    if not platform:CanReadValue(enum) then return nil,'restricted-value' end
    if type(enum)~='table' then return nil,'point-resource-unavailable' end
    local types=rawget(enum,'PowerType')
    if not platform:CanReadValue(types) then return nil,'restricted-value' end
    if type(types)~='table' then return nil,'point-resource-unavailable' end
    local selected=rawget(types,name)
    if not platform:CanReadValue(selected) then return nil,'restricted-value' end
    if selected==nil then return nil,'point-resource-unavailable' end
    if type(selected)~='number' or selected~=selected or selected<0 or selected==math.huge or selected%1~=0 then return nil,'invalid-point-resource' end
    return selected,nil,'power'

Voltar para Referência de funções