mirror of
https://github.com/MarioSpore/Grinch-AP.git
synced 2025-10-21 20:21:32 -06:00

also give warnings about deprecated LttP options also fix FactorioClient.py getting stuck if send an unknown item id also fix !missing having an extra newline after each entry also default to no webui
44 lines
1.3 KiB
Python
44 lines
1.3 KiB
Python
# Factorio technologies are imported from a .json document in /data
|
|
from typing import Dict
|
|
import os
|
|
import json
|
|
|
|
import Utils
|
|
|
|
factorio_id = 2**17
|
|
|
|
source_file = Utils.local_path("data", "factorio", "techs.json")
|
|
|
|
with open(source_file) as f:
|
|
raw = json.load(f)
|
|
tech_table = {}
|
|
|
|
requirements = {}
|
|
ingredients = {}
|
|
all_ingredients = set()
|
|
|
|
# TODO: export this dynamically, or filter it during export
|
|
starting_ingredient_recipes = {"automation-science-pack"}
|
|
|
|
# recipes and technologies can share names in Factorio
|
|
for technology in sorted(raw):
|
|
data = raw[technology]
|
|
tech_table[technology] = factorio_id
|
|
factorio_id += 1
|
|
if data["requires"]:
|
|
requirements[technology] = set(data["requires"])
|
|
current_ingredients = set(data["ingredients"])-starting_ingredient_recipes
|
|
if current_ingredients:
|
|
all_ingredients |= current_ingredients
|
|
ingredients[technology] = {"recipe-"+ingredient for ingredient in current_ingredients}
|
|
|
|
recipe_sources = {}
|
|
|
|
for technology, data in raw.items():
|
|
recipe_source = all_ingredients & set(data["unlocks"])
|
|
for recipe in recipe_source:
|
|
recipe_sources["recipe-"+recipe] = technology
|
|
|
|
all_ingredients_recipe = {"recipe-"+ingredient for ingredient in all_ingredients}
|
|
del(raw)
|
|
lookup_id_to_name: Dict[int, str] = {item_id: item_name for item_name, item_id in tech_table.items()} |