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

Platform.range.GetRangeCheckBounds

pública

Chame como

addon.Platform:GetRangeCheckBounds(unit)

Disponível diretamente por meio de addon; nenhuma dependência é necessária.

O que faz

Lê o intervalo público da LibRangeCheck para uma unidade. Um limite superior bem-sucedido é inclusivo; um limite inferior positivo com falha é estrito. Um piso inferior zero é sintético. Nenhum dos limites é uma distância exata, e a falta de limite superior não prova que a unidade está fora de todos os raios. Observações indisponíveis, malformadas, restritas ou com falha retornam nil com um motivo.

Argumentos

NomeTipoO que faz
selfRMPlatformAdaptador de plataforma do Rotation Master (implícito nas chamadas com dois-pontos).
unitstringToken da unidade atual cuja distância até o jogador deve ser observada.

Retornos

1table | nilIntervalo legível com limites mínimo e máximo opcionais em metros. Pelo menos um limite está presente; nil quando indisponível.
2string | nilMotivo de disponibilidade ou de validação para um resultado nil.

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.

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.

Exemplo

local bounds = addon.Platform:GetRangeCheckBounds("target")
if not bounds then return nil end
if bounds.maximum and bounds.maximum <= 8 then return true end
if bounds.minimum and bounds.minimum >= 8 then return false end
return nil -- the interval straddles 8 yards

Código-fonte

Platform/range.lua, linha 129. Somente leitura no jogo; Duplicar cria uma cópia editável.

Platform.range.GetRangeCheckBounds(self, unit)
    if not self:CanReadValue(unit) then return nil,'restricted-value' end
    if type(unit)~='string' or unit=='' then return nil,'invalid-unit' end
    if not LibStub then return nil,'missing-range-provider' end
    local loaded,provider=pcall(function() return LibStub('LibRangeCheck-3.0',true) end)
    if not loaded or not provider or type(provider.GetRange)~='function' then return nil,'missing-range-provider' end
    local ok,minimum,maximum=pcall(provider.GetRange,provider,unit)
    if not ok then return nil,'range-provider-error' end
    if not self:CanReadValue(minimum) or not self:CanReadValue(maximum) then return nil,'restricted-value' end
    for _,bound in pairs({minimum=minimum,maximum=maximum}) do
        if type(bound)~='number' or bound~=bound or bound<0 or bound==math.huge then return nil,'invalid-range-result' end
    end
    if minimum==nil and maximum==nil then return nil,'range-unavailable' end
    if minimum and maximum and minimum>maximum then return nil,'invalid-range-result' end
    return {minimum=minimum,maximum=maximum}

Voltar para Referência de funções