Implemented most movement. TODO: Pillbug ability. And find and fix bugs witht he movement. TODO: Deselect when not movable

This commit is contained in:
Sch1nken 2024-03-14 21:17:16 +01:00
parent 11f8a71f52
commit 76e4d6be34
33 changed files with 184 additions and 61 deletions

View file

@ -1,2 +1,40 @@
extends MovementBehaviour
class_name MovementBehaviourLadybug
@export var max_movement_reach: int = 3
func simulate_move_recursive(start: Vector4i, max_num: int, exclude: Array[Vector4i], map: HexGrid, visited_cells: Array[Vector4i] = []) -> Array[Vector4i]:
var visited = visited_cells.duplicate()
var possible: Array[Vector4i] = []
visited.append(start)
if max_num < 1:
return [start]
var neighbours: Array[Vector4i] = []
if max_num > 1:
neighbours = map.get_neighbours(start).filter(map.is_cell_not_empty)
else:
neighbours = map.get_empty_neighbours(start)
for neighbour in neighbours:
if neighbour in visited:
continue
#var same_neighbours = map.get_same_neighbours(start, neighbour)
#for e in exclude:
#same_neighbours.erase(e)
#if same_neighbours.size() > 0:
visited.append(neighbour)
possible.append_array(simulate_move_recursive(neighbour, max_num - 1, exclude, map, visited))
return possible
func get_available_spaces(pos: Vector4i, map: HexGrid) -> Array[Vector4i]:
var possible_places: Array[Vector4i] = []
possible_places = simulate_move_recursive(pos, max_movement_reach, [pos], map)
return possible_places