feat: ant randomization

This commit is contained in:
2025-11-12 20:17:29 +01:00
parent 9156f8b979
commit b3d488e031
4 changed files with 42 additions and 20 deletions

View File

@@ -3,8 +3,9 @@ extends Sprite2D
var pos: Vector2i = Vector2i(0,0)
var dir: TileSet.CellNeighbor = TileSet.CELL_NEIGHBOR_RIGHT_SIDE
@onready var tiles: TileMapLayer = get_node("../TileMapLayer")
@export var randomRules: bool = true
var cur_dir: Dictionary = {
var curDir: Dictionary = {
0: TileSet.CELL_NEIGHBOR_RIGHT_SIDE,
1: TileSet.CELL_NEIGHBOR_BOTTOM_RIGHT_SIDE,
2: TileSet.CELL_NEIGHBOR_BOTTOM_LEFT_SIDE,
@@ -13,7 +14,7 @@ var cur_dir: Dictionary = {
5: TileSet.CELL_NEIGHBOR_TOP_RIGHT_SIDE,
}
var cur_int: Dictionary = {
var curInt: Dictionary = {
TileSet.CELL_NEIGHBOR_RIGHT_SIDE: 0,
TileSet.CELL_NEIGHBOR_BOTTOM_RIGHT_SIDE: 1,
TileSet.CELL_NEIGHBOR_BOTTOM_LEFT_SIDE: 2,
@@ -22,21 +23,34 @@ var cur_int: Dictionary = {
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),
}
var antProgram: Array[Vector2i] = [
Vector2i(2, 1),
Vector2i(0, 2),
Vector2i(3, 3),
Vector2i(1, 4),
Vector2i(1, 5),
Vector2i(2, 0),
]
func randomTileset() -> void:
var rng = RandomNumberGenerator.new()
antProgram = []
var s: int = rng.randi_range(10, 99)
for i in range(0, s):
antProgram.append(Vector2i(rng.randi_range(1, 4), (i+1)%s))
func getNextStep(tile: int) -> Vector2i:
return antProgram.get(tile, Vector2i(0,0))
if tile > antProgram.size():
return Vector2i(0,0)
else:
return antProgram.get(tile)
func _ready() -> void:
self.set_z_index(1)
self.set_frame(cur_int[dir])
self.set_frame(curInt[dir])
if randomRules:
randomTileset()
tiles.set_tile(pos, tiles.get_tile_colour(pos))
move(dir)
@@ -50,8 +64,9 @@ func update() -> void:
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)
dir = curDir[(curInt[dir] + tiles.numTiles + res.x) % tiles.numTiles]
self.set_frame(curInt[dir])
tiles.set_tile(pos, res.y % tiles.numTiles)
func move(to: TileSet.CellNeighbor) -> void: