grid.gd 1014 B

123456789101112131415161718192021222324252627282930313233343536
  1. extends TileMap
  2. enum CELL_TYPES { EMPTY = -1, ACTOR, OBSTACLE, OBJECT}
  3. func _ready():
  4. for child in get_children():
  5. set_cellv(world_to_map(child.position), child.type)
  6. func get_cell_pawn(coordinates):
  7. for node in get_children():
  8. if world_to_map(node.position) == coordinates:
  9. return(node)
  10. func request_move(pawn, direction):
  11. var cell_start = world_to_map(pawn.position)
  12. var cell_target = cell_start + direction
  13. var cell_target_type = get_cellv(cell_target)
  14. match cell_target_type:
  15. EMPTY:
  16. return update_pawn_position(pawn, cell_start, cell_target)
  17. OBJECT:
  18. var object_pawn = get_cell_pawn(cell_target)
  19. object_pawn.queue_free()
  20. return update_pawn_position(pawn, cell_start, cell_target)
  21. ACTOR:
  22. var pawn_name = get_cell_pawn(cell_target).name
  23. print("Cell %s contains %s" % [cell_target, pawn_name])
  24. func update_pawn_position(pawn, cell_start, cell_target):
  25. set_cellv(cell_target, pawn.type)
  26. set_cellv(cell_start, EMPTY)
  27. return map_to_world(cell_target) + cell_size / 2