RitnLibTechnology¶
Vue runtime au-dessus d'une LuaTechnology — l'instance par force, au control stage. Son usage principal : à la fin d'une recherche, désactiver des recettes et réassigner les machines qui les utilisaient vers une recette de remplacement.
Pour modifier une techno au data stage (packs, pré-requis, recettes débloquées), utilise plutôt
RitnProtoTech.
| Source | classes/LuaClass/RitnTechnology.lua |
| Stage | control (runtime) |
| Accès | global — injecté dans _G par core/setup-classes.lua. Aucun require. |
| Hérite de | — (classe de base) |
object_name |
"RitnLibTechnology" |
Constructeur¶
RitnLibTechnology(technology) → RitnLibTechnology¶
Valide l'entrée puis fige les champs. Rejette une entrée qui n'est pas une LuaTechnology valide.
Paramètres
- technology :: LuaTechnology — la techno runtime (ex. event.research).
Valeur de retour → RitnLibTechnology. En cas d'entrée invalide, isPresent vaut false.
Note — Le plus souvent on l'obtient via
RitnLibForce:getTechnology(name)ou directement depuisevent.research.
Attributs¶
technology :: LuaTechnology [Read]¶
La LuaTechnology encapsulée (référence vivante).
name :: string [Read]¶
Nom de la technologie (snapshot).
force :: LuaForce [Read]¶
Force à laquelle appartient la techno (snapshot).
entity_type :: string [Read]¶
Type d'entité ciblé par défaut par :updateRecipe (défaut "assembling-machine").
isPresent :: boolean [Read]¶
false si le constructeur a rejeté son entrée. À tester en garde.
Méthodes¶
:updateRecipe(techFinished, disableTabRecipes, setRecipe, entityType?) → RitnLibTechnology¶
À la fin d'une recherche : si self.name == techFinished, désactive chaque recette de disableTabRecipes pour la force, puis parcourt toutes les surfaces et réassigne les machines (entity_type) qui utilisaient l'une de ces recettes vers setRecipe. No-op si self.name ~= techFinished.
Paramètres
- techFinished :: string — nom de techno à matcher contre self.name.
- disableTabRecipes :: string[] — recettes à désactiver.
- setRecipe :: string — recette de remplacement à poser sur les machines concernées.
- entityType :: string? — surcharge entity_type (défaut "assembling-machine").
script.on_event(defines.events.on_research_finished, function(event)
RitnLibTechnology(event.research):updateRecipe(
"automation-2",
{ "assembling-machine-1" },
"assembling-machine-2"
)
end)
Avertissement — performance — parcourt chaque surface et chaque entité du type ciblé : O(surfaces × entités). En Space Age (plusieurs planètes), itère sur toutes. À scoper par surface si nécessaire.
Note 2.0 —
LuaEntity.set_recipeaccepte désormais un paramètre de qualité, que cette méthode ne transmet pas encore. Voir Migration Factorio 2.0.
Exemple d'usage¶
Réassignation pilotée par une table de configuration (RitnMiner/modules/miner.lua) :
Remarques¶
- Runtime vs data stage — pour modifier la définition de la techno (packs, pré-requis), c'est
RitnProtoTechau data stage. - Wrapper temporaire — ne jamais stocker l'instance dans
storage. Voir Wrappers temporaires.