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 next_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_TOP_LEFT_SIDE: 3, TileSet.CELL_NEIGHBOR_LEFT_SIDE: 4, TileSet.CELL_NEIGHBOR_TOP_RIGHT_SIDE: 5, } func _ready() -> void: set_frame(1) set_z_index(1) tiles.set_tile(pos, (tiles.get_tile_colour(pos) + 1) % 2) # TODO: should probably use another dictionary move() func update() -> void: var tile: int = tiles.get_tile_colour(pos) print("tile %s" % tile) var newFrame: int = cur_int[dir] match tile: 0: newFrame = (newFrame + 1) % 6 1: newFrame = (newFrame + 1) % 6 2: newFrame = (newFrame + 1) % 6 3: newFrame = (newFrame + 5) % 6 _: pass dir = next_dir[newFrame] move() pos = tiles.get_neighbor_cell(pos, dir) tile = tiles.get_tile_colour(pos) tiles.set_tile(pos, (tile + 1) % 4) # TODO: should probably use another dictionary set_frame(newFrame) func move() -> void: var delta: Vector2 match dir: TileSet.CELL_NEIGHBOR_RIGHT_SIDE: delta = Vector2(32, 0) TileSet.CELL_NEIGHBOR_BOTTOM_RIGHT_SIDE: delta = Vector2(16, 24) TileSet.CELL_NEIGHBOR_BOTTOM_LEFT_SIDE: delta = Vector2(-16, 24) TileSet.CELL_NEIGHBOR_LEFT_SIDE: delta = Vector2(-32, 0) TileSet.CELL_NEIGHBOR_TOP_LEFT_SIDE: delta = Vector2(-16, -24) TileSet.CELL_NEIGHBOR_TOP_RIGHT_SIDE: delta = Vector2(16, -24) _: delta = Vector2(0,0) translate(delta)