コード例 #1
0
    def read_area(self, data: Dict) -> Area:
        name = data["name"]
        nodes = read_array(data["nodes"], self.read_node)
        nodes_by_name = {node.name: node for node in nodes}

        connections = {}
        for i, origin_data in enumerate(data["nodes"]):
            origin = nodes[i]
            connections[origin] = {}

            extra_requirement = None
            if is_resource_node(
                    origin) and self.add_self_as_requirement_to_resources:
                extra_requirement = RequirementList.with_single_resource(
                    origin.resource())

            for target_name, target_requirements in origin_data[
                    "connections"].items():
                the_set = read_requirement_set(target_requirements,
                                               self.resource_database)
                if extra_requirement is not None:
                    the_set = the_set.union(RequirementSet([extra_requirement
                                                            ]))

                if the_set != RequirementSet.impossible():
                    connections[origin][nodes_by_name[target_name]] = the_set

        return Area(name, data["asset_id"], data["default_node_index"], nodes,
                    connections)
コード例 #2
0
ファイル: generator_reach.py プロジェクト: xisi/randovania
def _extra_requirement_for_node(game: GameDescription,
                                node: Node) -> Optional[RequirementSet]:
    extra_requirement = None

    if is_resource_node(node):
        node_resource = node.resource()
        if node_resource in game.dangerous_resources:
            extra_requirement = RequirementSet(
                [RequirementList.with_single_resource(node_resource)])

    return extra_requirement