Factorio: Filter bridged technologies correctly

Turns out, lua does not use regex, nor simple string matching, but its own invention.
This commit is contained in:
Fabian Dill 2021-04-14 17:51:11 +02:00
parent 73bc5fb376
commit 432ae5865d
3 changed files with 6 additions and 5 deletions

View File

@ -108,7 +108,8 @@ async def game_watcher(ctx: FactorioContext):
with open(bridge_file) as f: with open(bridge_file) as f:
data = json.load(f) data = json.load(f)
research_data = data["research_done"] research_data = data["research_done"]
research_data = {int(tech_name.split("-")[1]) for tech_name in research_data if tech_name.startswith("ap-")}
research_data = {int(tech_name.split("-")[1]) for tech_name in research_data}
if ctx.locations_checked != research_data: if ctx.locations_checked != research_data:
bridge_logger.info(f"New researches done: " bridge_logger.info(f"New researches done: "
f"{[lookup_id_to_name[rid] for rid in research_data - ctx.locations_checked]}") f"{[lookup_id_to_name[rid] for rid in research_data - ctx.locations_checked]}")

View File

@ -3,7 +3,7 @@ import typing
class AssembleOptions(type): class AssembleOptions(type):
def __new__(cls, name, bases, attrs): def __new__(mcs, name, bases, attrs):
options = attrs["options"] = {} options = attrs["options"] = {}
name_lookup = attrs["name_lookup"] = {} name_lookup = attrs["name_lookup"] = {}
for base in bases: for base in bases:
@ -17,7 +17,7 @@ class AssembleOptions(type):
# apply aliases, without name_lookup # apply aliases, without name_lookup
options.update({name[6:].lower(): option_id for name, option_id in attrs.items() if options.update({name[6:].lower(): option_id for name, option_id in attrs.items() if
name.startswith("alias_")}) name.startswith("alias_")})
return super(AssembleOptions, cls).__new__(cls, name, bases, attrs) return super(AssembleOptions, mcs).__new__(mcs, name, bases, attrs)
class Option(metaclass=AssembleOptions): class Option(metaclass=AssembleOptions):

View File

@ -51,11 +51,11 @@ function dumpTech(force)
local data_collection = {["research_done"] = research_done} local data_collection = {["research_done"] = research_done}
for tech_name, tech in pairs(force.technologies) do for tech_name, tech in pairs(force.technologies) do
if tech.researched and string.find(tech_name, "ap-") == 1 then if tech.researched and string.find(tech_name, "ap%-") == 1 then
research_done[tech_name] = tech.researched research_done[tech_name] = tech.researched
end end
end end
game.write_file("ap_bridge.json", game.table_to_json(data_collection), false) game.write_file("ap_bridge.json", game.table_to_json(data_collection), false, 0)
-- game.write_file("research_done.json", game.table_to_json(data_collection), false, 0) -- game.write_file("research_done.json", game.table_to_json(data_collection), false, 0)
-- game.print("Sent progress to Archipelago.") -- game.print("Sent progress to Archipelago.")
end end