class_name Counter extends FullTile var counters = [ "counter", "pan", "sink", "oven", ] enum CounterKind { OUTER_CORNER, STRAIGHT, STRAIGHT_BACKSPLASH } var kind: CounterKind = CounterKind.STRAIGHT func _init(rename: String, neighbors: Array): super(rename, neighbors) var facing = 0 var edges = neighbors.duplicate() for i in range(4): var i_name = tile_name(edges[i]) if is_counter(i_name): edges[i] = "counter" else: edges[i] = tile_name(edges[i]) var series: int = 0 var last_series: int = 0 var adj: Array = [] for i in range(4): if edges[i] == "floor": last_series += 1 adj.append(i) if last_series > series: series = last_series else: last_series = 0 var count = 4 - adj.size() # we can neither find out whether it is an inner corner nor an outer corner # backsplash if series == 1&&count == 3: facing = adj[0] % 4 if edges[(adj[0] + 2) % 4] == "wall": kind = CounterKind.STRAIGHT_BACKSPLASH else: kind = CounterKind.STRAIGHT elif series == 2&&count == 2: facing = (adj[0] + 1) % 4 kind = CounterKind.OUTER_CORNER turn_facing(facing) func is_counter(tile_name_t) -> bool: if tile_name_t == null: return false return name.ends_with("crate")||counters.has(name)