TileMapConverter.gd 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. @tool
  2. class_name TileMapConverter
  3. extends Node
  4. @export var tilemap: TileMapLayer = null
  5. @export_tool_button("Fix!") var button = update_tilemap
  6. ## Current plan is to write a lil script thingy, that can automatically update the tilemaps, cause
  7. ## id rather spend 2 hrs making a script to do it all for me, rather than spend 1 hr updating everything manually.
  8. var fixed_cells := []
  9. const MAP := {
  10. Vector2i(0, 0): 0,
  11. Vector2i(2, 1): 0,
  12. Vector2i(2, 0): Vector2i(4, 2),
  13. Vector2i(0, 7): Vector2i(0, 4),
  14. Vector2i(1, 0): Vector2i(4, 0),
  15. Vector2i(3, 0): Vector2i(8, 0),
  16. Vector2i(3, 1): Vector2i(8, 1),
  17. Vector2i(4, 0): Vector2i(9, 0),
  18. Vector2i(4, 1): Vector2i(9, 1),
  19. Vector2i(3, 2): Vector2i(8, 2),
  20. Vector2i(3, 3): Vector2i(8, 3),
  21. Vector2i(4, 2): Vector2i(9, 2),
  22. Vector2i(4, 3): Vector2i(9, 3),
  23. Vector2i(3, 4): Vector2i(8, 4),
  24. Vector2i(3, 5): Vector2i(8, 5),
  25. Vector2i(4, 4): Vector2i(9, 4),
  26. Vector2i(4, 5): Vector2i(9, 5),
  27. Vector2i(3, 6): Vector2i(8, 6),
  28. Vector2i(3, 7): Vector2i(8, 7),
  29. Vector2i(4, 6): Vector2i(9, 6),
  30. Vector2i(4, 7): Vector2i(9, 7),
  31. Vector2i(0, 3): Vector2i(5, 0),
  32. Vector2i(1, 3): Vector2i(6, 0),
  33. Vector2i(2, 3): Vector2i(7, 0),
  34. Vector2i(0, 2): Vector2i(6, 1),
  35. Vector2i(0, 9): Vector2i(5, 1),
  36. Vector2i(1, 9): Vector2i(7, 1),
  37. Vector2i(2, 9): Vector2i(6, 6),
  38. Vector2i(1, 8): Vector2i(12, 9),
  39. Vector2i(2, 8): Vector2i(13, 9),
  40. Vector2i(1, 7): Vector2i(12, 8),
  41. Vector2i(2, 7): Vector2i(13, 8),
  42. Vector2i(5, 8): Vector2i(1, 4),
  43. Vector2i(6, 8): Vector2i(2, 4),
  44. Vector2i(7, 8): Vector2i(3, 4),
  45. Vector2i(3, 8): Vector2i(10, 8),
  46. Vector2i(4, 8): Vector2i(11, 8)
  47. }
  48. func update_tilemap() -> void:
  49. for cell in tilemap.get_used_cells_by_id(0):
  50. var changed := false
  51. if tilemap.get_cell_source_id(cell) != 0 or fixed_cells.has(cell):
  52. continue
  53. var atlas_coords = tilemap.get_cell_atlas_coords(cell)
  54. if MAP.has(atlas_coords):
  55. changed = true
  56. if MAP.get(atlas_coords) is int:
  57. BetterTerrain.set_cell(tilemap, cell, MAP.get(atlas_coords))
  58. elif MAP.get(atlas_coords) is Vector2i:
  59. tilemap.set_cell(cell, 0, MAP.get(atlas_coords), tilemap.get_cell_alternative_tile(cell))
  60. if changed:
  61. fixed_cells.append(cell)
  62. print("Done")