extends Node var SCRIPT_proto var objects var door_id_by_map_node_path = {} var painting_id_by_map_node_path = {} var door_id_by_ap_id = {} var map_id_by_name = {} var progressive_id_by_ap_id = {} func _init(proto_script): SCRIPT_proto = proto_script func load(data_bytes): objects = SCRIPT_proto.AllObjects.new() var result_code = objects.from_bytes(data_bytes) if result_code != SCRIPT_proto.PB_ERR.NO_ERRORS: print("Could not load generated data: %d" % result_code) return for map in objects.get_maps(): map_id_by_name[map.get_name()] = map.get_id() for door in objects.get_doors(): var map = objects.get_maps()[door.get_map_id()] if not map.get_name() in door_id_by_map_node_path: door_id_by_map_node_path[map.get_name()] = {} var map_data = door_id_by_map_node_path[map.get_name()] for receiver in door.get_receivers(): map_data[receiver] = door.get_id() for painting_id in door.get_move_paintings(): var painting = objects.get_paintings()[painting_id] map_data[painting.get_path()] = door.get_id() if door.has_ap_id(): door_id_by_ap_id[door.get_ap_id()] = door.get_id() for painting in objects.get_paintings(): var room = objects.get_rooms()[painting.get_room_id()] var map = objects.get_maps()[room.get_map_id()] if not map.get_name() in painting_id_by_map_node_path: painting_id_by_map_node_path[map.get_name()] = {} var _map_data = painting_id_by_map_node_path[map.get_name()] for progressive in objects.get_progressives(): progressive_id_by_ap_id[progressive.get_ap_id()] = progressive.get_id() func get_door_for_map_node_path(map_name, node_path): if not door_id_by_map_node_path.has(map_name): return null var map_data = door_id_by_map_node_path[map_name] return map_data.get(node_path, null) func get_door_ap_id(door_id): var door = objects.get_doors()[door_id] if door.has_ap_id(): return door.get_ap_id() else: return null func get_door_receivers(door_id): var door = objects.get_doors()[door_id] return door.get_receivers() func get_door_map_name(door_id): var door = objects.get_doors()[door_id] var map = objects.get_maps()[door.get_map_id()] return map.get_name()