CompanyDB.gd 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. extends Node
  2. # Este array almacenará los datos de todas las empresas después de cargarlos.
  3. var company_data = []
  4. # La función _ready() se llama automáticamente cuando el nodo entra en el árbol de la escena.
  5. # Como este script es un Autoload, se ejecutará al iniciar la aplicación.
  6. func _ready():
  7. print("Cargando perfiles de empresas...")
  8. load_all_company_profiles()
  9. print("Carga completada. Se encontraron %d perfiles." % company_data.size())
  10. # Función para leer todos los archivos JSON de la carpeta "companies" (versión para Godot 3).
  11. func load_all_company_profiles():
  12. var path = "res://companies"
  13. var dir = Directory.new()
  14. if dir.open(path) == OK:
  15. dir.list_dir_begin()
  16. var file_name = dir.get_next()
  17. while file_name != "":
  18. # Asegurarse de que solo procesamos archivos .json y no directorios.
  19. if not dir.current_is_dir() and file_name.ends_with(".json"):
  20. var file_path = path.plus_file(file_name)
  21. var file = File.new()
  22. if file.open(file_path, File.READ) == OK:
  23. var content = file.get_as_text()
  24. file.close()
  25. var parse_result = JSON.parse(content)
  26. if parse_result.error == OK:
  27. var data = parse_result.result
  28. # Opcional: Añadir el nombre del archivo al diccionario de datos para fácil referencia.
  29. data["source_file"] = file_name
  30. company_data.append(data)
  31. else:
  32. print("Error al parsear el JSON '%s': %s (en la línea %d)" % [file_name, parse_result.error_string, parse_result.error_line])
  33. else:
  34. print("No se pudo abrir el archivo: %s" % file_path)
  35. file_name = dir.get_next()
  36. else:
  37. print("Error: No se pudo abrir el directorio: %s" % path)
  38. # --- Funciones de ejemplo para acceder a los datos ---
  39. # Devuelve los datos de una empresa por su nombre.
  40. func get_company_by_name(name):
  41. for company in company_data:
  42. if company.get("company_name") == name:
  43. return company
  44. return null
  45. # Devuelve una lista de todos los nombres de las empresas.
  46. func get_all_company_names():
  47. var names = []
  48. for company in company_data:
  49. if company.has("company_name"):
  50. names.append(company.get("company_name"))
  51. names.sort()
  52. return names