Appel
Conditions.spatial.booleanRead(cache, method, ...)
Enregistrez la dépendance Conditions.spatial.booleanRead, puis appelez-la sous ce nom. Un appel par espace de noms ne transmet pas self : utilisez un appel avec deux-points ou passez l'objet vous-même.
Ce qu'elle fait
Calls a yes/no game API through the evaluation cache, protected against errors, for the distance conditions. Accepts nil, false and 0 as no and true and 1 as yes; a missing API, an error, a restricted value or any other answer gives nil with a reason.
Arguments
| Nom | Type | Ce qu'elle fait |
|---|---|---|
cache | table | nil | Evaluation-pass cache passed to getCached, or nil to read directly. |
method | function | Game API to call, such as UnitExists or UnitIsEnemy. |
... | any | Arguments forwarded to method. |
Retours
| 1 | boolean | nil | The answer, or nil when it cannot be read. |
|---|---|---|
| 2 | string | nil | Reason for nil: missing-api, api-error, restricted-value or invalid-api-result. |
É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.
Elle ne lit directement aucune API du jeu.
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.
Comment l'addon l'appelle
- Nombre à distance (evaluate)
local present,issue=booleanRead(cache,UnitExists,entity.unit) Conditions.spatial.combatFilterlocal fighting,why=booleanRead(cache,UnitAffectingCombat,unit)Conditions.spatial.nameplateDistanceCountlocal present,issue=booleanRead(cache,UnitExists,unit)
Dépendances
protectedRead→Conditions.spatial.protectedRead
Source
Conditions/spatial.lua, ligne 73. En lecture seule dans le jeu ; Dupliquer crée une copie modifiable.
Conditions.spatial.booleanRead(cache, method, ...)
local ok,result=protectedRead(cache,method,...)
if not ok then return nil,result=="missing-api" and result or "api-error" end
if not addon.Platform:CanReadValue(result) then return nil,"restricted-value" end
if result==nil or result==false or result==0 then return false end
if result==true or result==1 then return true end
return nil,"invalid-api-result"