class_name SystemIndex ## Shared system data loader for implant apps (#844). ## Static helper — call as SystemIndex.get_sorted_systems(). const DATA_PATH := "res://data/star_map_data.json" static func get_sorted_systems() -> Array: if not FileAccess.file_exists(DATA_PATH): push_warning("SystemIndex: %s not found" % DATA_PATH) return [] var file := FileAccess.open(DATA_PATH, FileAccess.READ) if file == null: push_warning("SystemIndex: could not open %s" % DATA_PATH) return [] var parsed: Variant = JSON.parse_string(file.get_as_text()) file.close() if not (parsed is Dictionary): return [] var nodes: Array = [] for node: Dictionary in parsed.get("nodes", []): var sid: String = node.get("system_id", "") if not sid.is_empty(): nodes.append(node) nodes.sort_custom( func(a: Dictionary, b: Dictionary) -> bool: var na: String = a.get("proper_name", a.get("system_id", "")) var nb: String = b.get("proper_name", b.get("system_id", "")) return na < nb ) return nodes