RitnLibSurface¶
Vue raccourcie au-dessus d'un LuaSurface. Expose nom/index, un drapeau isNauvis, et la recherche d'une entité par position + unit_number.
| Source | classes/LuaClass/RitnSurface.lua |
| Stage | control (runtime) |
| Accès | global — injecté dans _G par core/setup-classes.lua. Aucun require. |
| Hérite de | — (classe de base) |
| Étendue par | les sous-classes consommateur, ex. RitnCoreSurface |
object_name |
"RitnLibSurface" |
Constructeur¶
RitnLibSurface(surface) → RitnLibSurface¶
Valide l'entrée puis fige les champs. Rejette une entrée qui n'est pas un LuaSurface valide.
Paramètres
- surface :: LuaSurface — la surface à encapsuler.
Valeur de retour → RitnLibSurface. En cas d'entrée invalide, isPresent vaut false.
Note — Le plus souvent on l'obtient via
RitnLibEvent:getSurface()ouRitnLibPlayer:getSurface().
Attributs¶
Tous en lecture seule ([Read]), figés à la construction.
surface :: LuaSurface [Read]¶
La LuaSurface encapsulée (référence vivante).
name :: string [Read]¶
Nom de la surface ("nauvis", "vulcanus"…).
index :: uint [Read]¶
Index de la surface.
isNauvis :: boolean [Read]¶
true si name == "nauvis" à l'instanciation. Vaut false sur les planètes Space Age et les plateformes spatiales.
isPresent :: boolean [Read]¶
false si le constructeur a rejeté son entrée. À tester en garde.
Méthodes¶
:print(text) → RitnLibSurface¶
Diffuse un message à tous les joueurs présents sur la surface. Les table sont sérialisées via serpent.block ; les valeurs ni-string ni-table tombent en tostring (dans un pcall). Chaînable.
Paramètres
- text :: string|table — texte ou LocalisedString.
:getEntity(position, unit_number, name?, entityType?) → LuaEntity?¶
Trouve une entité précise par position + unit_number. Stratégie : find_entities_filtered{position, name?, type?} → recherche du unit_number dans la liste → fallback sur le premier match → fallback sur find_entity(name, position).
Paramètres
- position :: MapPosition — centre de recherche (doit avoir .x/.y).
- unit_number :: uint — unit number recherché.
- name :: string? — filtre optionnel par nom d'entité.
- entityType :: string? — filtre optionnel par type (doit exister dans lualib.vanilla.types_entity).
local entity = RitnLibSurface(game.get_surface(surface_name))
:getEntity(portal.position, id_portal, "ritn-portal", portal.entity_type)
Avertissement — Cette méthode écrit aussi son résultat dans la variable globale
LuaEntity(effet de bord à connaître). Sur 2.0, si tu as déjà l'unit_number,game.get_entity_by_unit_number(n)est en O(1). Voir Migration Factorio 2.0.
Exemple d'usage¶
Retrouver une entité par unit_number (RitnPortal/classes/RitnSurface.lua) :
local LuaEntity = RitnLibSurface(game.get_surface(surface_name))
:getEntity(portal.position, id_portal, ritnlib.defines.portal.names.entity.portal, portal.entity_type)
Remarques¶
- Wrapper temporaire — ne jamais stocker l'instance dans
storage; la reconstruire dans chaque handler. Voir Wrappers temporaires. isNauviset Space Age — test sur le nom exact'nauvis';falseailleurs (planètes, plateformes).