extends Sprite2D var pos: Vector2i = Vector2i(0,0) var dir: TileSet.CellNeighbor = TileSet.CELL_NEIGHBOR_RIGHT_SIDE @onready var tiles: TileMapLayer = get_node("../TileMapLayer") var cur_dir: Dictionary = { 0: TileSet.CELL_NEIGHBOR_RIGHT_SIDE, 1: TileSet.CELL_NEIGHBOR_BOTTOM_RIGHT_SIDE, 2: TileSet.CELL_NEIGHBOR_BOTTOM_LEFT_SIDE, 3: TileSet.CELL_NEIGHBOR_LEFT_SIDE, 4: TileSet.CELL_NEIGHBOR_TOP_LEFT_SIDE, 5: TileSet.CELL_NEIGHBOR_TOP_RIGHT_SIDE, } var cur_int: Dictionary = { TileSet.CELL_NEIGHBOR_RIGHT_SIDE: 0, TileSet.CELL_NEIGHBOR_BOTTOM_RIGHT_SIDE: 1, TileSet.CELL_NEIGHBOR_BOTTOM_LEFT_SIDE: 2, TileSet.CELL_NEIGHBOR_LEFT_SIDE: 3, TileSet.CELL_NEIGHBOR_TOP_LEFT_SIDE: 4, TileSet.CELL_NEIGHBOR_TOP_RIGHT_SIDE: 5, } var antProgram: Dictionary = { 0: Vector2i(-2, 1), 1: Vector2i(0, 2), 2: Vector2i(0, 3), 3: Vector2i(-1, 4), 4: Vector2i(-2, 5), 5: Vector2i(-1, 0), } func getNextStep(tile: int) -> Vector2i: return antProgram.get(tile, Vector2i(0,0)) func _ready() -> void: self.set_z_index(1) self.set_frame(cur_int[dir]) tiles.set_tile(pos, tiles.get_tile_colour(pos)) move(dir) # update loop: # move in dir # get tile col, change dir based on col # paint tile col func update() -> void: move(dir) pos = tiles.get_neighbor_cell(pos, dir) var tile: int = tiles.get_tile_colour(pos) var res = getNextStep(tile) dir = cur_dir[(cur_int[dir] + tiles.numTiles + res.x) % tiles.numTiles] self.set_frame(dir) tiles.set_tile(pos, res.y % tiles.numTiles) func move(to: TileSet.CellNeighbor) -> void: var delta: Vector2 match to: TileSet.CELL_NEIGHBOR_RIGHT_SIDE: delta = Vector2(tiles.texSize.x, 0) TileSet.CELL_NEIGHBOR_BOTTOM_RIGHT_SIDE: delta = Vector2(tiles.texSize.x/2, tiles.texSize.y/4*3) TileSet.CELL_NEIGHBOR_BOTTOM_LEFT_SIDE: delta = Vector2(-tiles.texSize.x/2, tiles.texSize.y/4*3) TileSet.CELL_NEIGHBOR_LEFT_SIDE: delta = Vector2(-tiles.texSize.x, 0) TileSet.CELL_NEIGHBOR_TOP_LEFT_SIDE: delta = Vector2(-tiles.texSize.x/2, -tiles.texSize.y/4*3) TileSet.CELL_NEIGHBOR_TOP_RIGHT_SIDE: delta = Vector2(tiles.texSize.x/2, -tiles.texSize.y/4*3) _: delta = Vector2(0,0) self.translate(delta)