ResourcePackTemplateCreator.gd 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. extends Node
  2. var files := []
  3. var directories := []
  4. const base_info_json := {
  5. "name": "New Pack",
  6. "description": "Template, give me a description!",
  7. "author": "Me, until you change it"
  8. }
  9. func create_template() -> void:
  10. get_directories("res://Assets/", files, directories)
  11. for i in directories:
  12. DirAccess.make_dir_recursive_absolute(i.replace("res://Assets", "user://resource_packs/new_pack/"))
  13. for i in files:
  14. var destination = i
  15. if destination.contains("res://"):
  16. destination = i.replace("res://Assets", "user://resource_packs/new_pack/")
  17. else:
  18. destination = i.replace("user://resource_packs/BaseAssets", "user://resource_packs/new_pack")
  19. DirAccess.copy_absolute(i, destination)
  20. var file = FileAccess.open("user://resource_packs/new_pack/pack_info.json", FileAccess.WRITE)
  21. file.store_string(JSON.stringify(base_info_json, "\t"))
  22. file.close()
  23. print("Done")
  24. func get_directories(base_dir := "", files := [], directories := []) -> void:
  25. for i in DirAccess.get_directories_at(base_dir):
  26. if base_dir.contains("LevelGuides") == false:
  27. directories.append(base_dir + "/" + i)
  28. get_directories(base_dir + "/" + i, files, directories)
  29. get_files(base_dir + "/" + i, files)
  30. func get_files(base_dir := "", files := []) -> void:
  31. for i in DirAccess.get_files_at(base_dir):
  32. if i.contains(".import") == false and base_dir.contains("LevelGuides") == false:
  33. var target_path = base_dir + "/" + i
  34. var rom_assets_path = target_path.replace("res://Assets", "user://resource_packs/BaseAssets")
  35. if FileAccess.file_exists(rom_assets_path):
  36. files.append(rom_assets_path)
  37. else:
  38. files.append(target_path)