Aller au contenu

RitnLibForce

Vue raccourcie au-dessus d'une LuaForce. Donne accès aux recettes et technologies de la force (sous forme de wrappers chaînables), aux statistiques de production, à la visibilité des surfaces sur la carte et aux chart tags.

Source classes/LuaClass/RitnForce.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. RitnCoreForce (cf. ADR-0001)
object_name "RitnLibForce"

Constructeur

RitnLibForce(force)RitnLibForce

Valide l'entrée puis fige les champs. Rejette une entrée qui n'est pas une LuaForce valide.

Paramètres - force :: LuaForce — la force à encapsuler.

Valeur de retourRitnLibForce. En cas d'entrée invalide, isPresent vaut false.

local rForce = RitnLibForce(game.forces["player"])

Note — Le plus souvent on l'obtient via RitnLibPlayer:getForce() ou RitnLibEvent:getForce().


Attributs

Tous en lecture seule ([Read]), figés à la construction.

force :: LuaForce [Read]

La LuaForce encapsulée (référence vivante).

name :: string [Read]

Nom de la force ("player", "enemy"…).

index :: uint [Read]

Index de la force.

items_launched :: table<string, uint>? [Read]

Items lancés en rocket (dictionnaire item→count). Toujours disponible en Factorio 2.0.

rockets_launched :: uint? [Read]

Nombre de rockets lancées.

FORCE_ENEMY_NAME :: "enemy" [Read]

Constante du nom de la force ennemie.

FORCE_PLAYER_NAME :: "player" [Read]

Constante du nom de la force joueur.

FORCE_NEUTRAL_NAME :: "neutral" [Read]

Constante du nom de la force neutre.

isPresent :: boolean [Read]

false si le constructeur a rejeté son entrée. À tester en garde.


Méthodes

:getRecipe(recipe_name)RitnLibRecipe

Renvoie un RitnLibRecipe enveloppant la recette nommée de cette force.

Paramètres - recipe_name :: string — nom de la recette.

Avertissement — Lève une erreur (error) si la recette n'existe pas pour cette force. Garantis le nom en amont.

RitnLibEvent(e):getPlayer():getForce():getRecipe("electronic-circuit"):setEnabled(false)

:getTechnology(tech_name)RitnLibTechnology

Renvoie un RitnLibTechnology enveloppant la technologie nommée.

Paramètres - tech_name :: string — nom de la technologie.

Avertissement — Lève une erreur si la technologie n'existe pas pour cette force.

RitnLibEvent(e):getPlayer():getForce():getTechnology("ritn-tech-lumberjack").technology.researched = true

:setHiddenSurface(surfaceIdentification, value?)RitnLibForce

Masque ou affiche une surface pour cette force sur la carte. Chaînable.

Paramètres - surfaceIdentification :: SurfaceIdentification — la surface ciblée. - value :: boolean?true pour masquer (défaut), false pour afficher.

rForce:setHiddenSurface(rSurface.name, true)

:countPlayers()integer

Nombre de joueurs dans cette force (#self.force.players).

:getChartTag(tag_number, surface_name, position)LuaCustomChartTag?

Cherche un chart tag par son tag_number à une position donnée.

Paramètres - tag_number :: uint — identifiant du tag recherché. - surface_name :: string|LuaSurface — la surface. - position :: MapPosition — la position (doit avoir .x et .y).

Avertissement — Construit une zone dégénérée {position, position} pour find_chart_tags ; peut rater un tag à cause d'arrondis flottants.

Statistiques de production — :getStatsProduction · :getStatsProductionItem · :getStatsProductionFluid · :getStatsCount · :getStatsCountKill · :getStatsCountBuild

Renvoient des compteurs de production / kills / constructions (integer?).

Avertissement — Ces méthodes dépendent de self.stats, actuellement désactivé : son bloc constructeur lit l'API statistics Factorio 1.x, retirée en 2.0. Sur une instance de base elles lèvent une erreur ; il faut qu'une sous-classe peuple self.stats. Détails et plan de migration : Migration Factorio 2.0.


Exemples d'usage

Désactiver des recettes pour une force (RitnElectronic/modules/electronic.lua) :

RitnLibEvent(e):getPlayer():getForce():getRecipe("radar"):setEnabled(false)
RitnLibEvent(e):getPlayer():getForce():getRecipe("inserter"):setEnabled(false)

Forcer une techno comme recherchée (RitnLumberjack/modules/lumberjack.lua) :

RitnLibEvent(e):getPlayer():getForce():getTechnology("ritn-tech-lumberjack").technology.researched = true

Masquer une surface sur la carte (RitnCoreGame/modules/force.lua) :

local rForce = RitnCoreForce(rEvent.force)
rForce:setHiddenSurface(rSurface.name, true)

Remarques

  • Wrapper temporaire — ne jamais stocker l'instance dans storage ; la reconstruire dans chaque handler. Voir Wrappers temporaires.
  • getRecipe / getTechnology lèvent — elles error() si le nom n'existe pas. Préfère un nom dont tu es sûr, ou protège l'appel.
  • getStats* en attente de migration 2.0 — voir l'avertissement ci-dessus et Migration Factorio 2.0.

Voir aussi