Référence › Référence des fonctions › Platform

Platform.spells.GetSpellCooldown

publique

Appel

addon.Platform:GetSpellCooldown(spell)

Disponible directement via addon ; aucune dépendance n'est nécessaire.

Ce qu'elle fait

Lit et normalise le temps de recharge d'un sort sur les clients pris en charge. L'enregistrement renvoyé contient startTime, duration, isEnabled et modRate. Les horodatages et la durée décrivent déjà l'expiration en secondes de GetTime() ; ne les divisez pas par modRate. Quand le client masque les durées (Retail et Forever en combat), l'enregistrement est nil avec la raison restricted-value, suivie des indicateurs isEnabled, isActive et isOnGCD, jamais secrets, lorsqu'ils peuvent être lus.

Arguments

NomTypeCe qu'elle fait
selfRMPlatformAdaptateur de plateforme Rotation Master. Une référence par point exige addon.Platform comme premier argument ; un appel par deux-points le fournit implicitement.
spellnumber | stringID de sort, ou nom de sort reconnu par le client, dont le temps de recharge doit être lu.

Retours

1table | nilEnregistrement de temps de recharge lisible, ou nil si indisponible.
2string | nilMotif de disponibilité ou de validation lorsque l'enregistrement est nil.
3boolean | nilAvec restricted-value uniquement : isEnabled, false tant que le temps de recharge est suspendu.
4boolean | nilAvec restricted-value uniquement : isActive, true tant qu'un temps de recharge (le sien ou le global) est en cours.
5boolean | nilAvec restricted-value uniquement : isOnGCD, true quand le temps de recharge en cours est le temps de recharge global ; peut être nil.

Éditions

Les fonctions utilitaires intégrées sont enregistrées sur toutes les éditions. Ce qui diffère, c'est l'API du jeu qu'elles lisent ; quand l'une manque, la fonction utilitaire se rabat sur une alternative ou renvoie nil avec une raison.

  • Indisponible sur cette édition (la raison figure dans l'infobulle)
  • Uniquement tant que les solutions de repli de Blizzard pour les fonctions obsolètes sont actives
API du jeuClassic EraTBC AnniversaryClassic ProgressionForeverRetail
C_Spell.GetSpellCooldownClassic EraTBC AnniversaryClassic ProgressionForeverRetail
GetSpellCooldownClassic EraTBC AnniversaryClassic ProgressionForeverRetail

Valeurs secrètes (Retail et Forever)

Sur Retail et Forever, le jeu transmet aux addons des valeurs secrètes. Cette fonction utilitaire vérifie ce qu'elle lit (addon.Platform:CanReadValue) et renvoie nil avec une raison telle que restricted-value au lieu d'une valeur secrète qu'elle ne peut pas comparer. Traitez nil comme indisponible, pas comme false.

Exemple

local record, reason, isEnabled, isActive = addon.Platform:GetSpellCooldown(value.spell)
if record then return record.isEnabled and record.duration == 0 end
-- Times are secret in combat on Retail and Forever; fall back to the flags.
if reason == "restricted-value" and isActive ~= nil then return isEnabled and not isActive end
return nil

Dépendances

Source

Platform/spells.lua, ligne 393. En lecture seule dans le jeu ; Dupliquer crée une copie modifiable.

Platform.spells.GetSpellCooldown(self, spell)
    local valid, reason = identifier(spell)
    if not valid then return nil, reason end
    local ok, record, built
    if C_Spell and type(C_Spell.GetSpellCooldown) == "function" then
        ok, record = pcall(C_Spell.GetSpellCooldown, spell)
    elseif type(GetSpellCooldown) == "function" then
        local start, duration, enabled, rate
        ok, start, duration, enabled, rate = pcall(GetSpellCooldown, spell)
        if not ok then return nil, "api-error" end
        if not self:CanReadValue(start) or not self:CanReadValue(duration) or not self:CanReadValue(enabled)
            or not self:CanReadValue(rate) then return nil, "restricted-value" end
        if start ~= nil then
            if enabled ~= 0 and enabled ~= 1 then return nil, "invalid-api-result" end
            record = {startTime=start, duration=duration, isEnabled=enabled == 1, modRate=rate or 1};built = true
        end
    else return nil, "missing-api" end
    if not ok then return nil, "api-error" end
    if not self:CanReadValue(record) then return nil, "restricted-value" end
    if record == nil then return nil, "spell-data-unavailable" end
    local cooldown, why = own(record, cooldownFields, built)
    if not cooldown then
        if why == "restricted-value" and not built then return nil, why, cooldownFlags(self, record) end
        return nil, why
    end
    if cooldown.startTime == nil or cooldown.duration == nil or cooldown.isEnabled == nil
        or cooldown.startTime < 0 or cooldown.duration < 0 or (cooldown.modRate and cooldown.modRate <= 0) then
        return nil, "invalid-api-result"
    end
    cooldown.modRate = cooldown.modRate or 1
    return cooldown

Retour à Référence des fonctions