# Undercooked - a game about cooking # Copyright 2024 nokoe # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, version 3 of the License only. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # class_name WallTile extends FullTile const WALLS: Array = [ "wall", "window", "door" ] enum WallKind { STRAIGHT, OUTER_CORNER, T, CROSS, } var kind: WallKind = WallKind.STRAIGHT var facing: int = 0 func _init(rename: String, neighbors: Array): super(rename, neighbors) var edges = neighbors.duplicate() var series: int = 0 var last_series: int = 0 var adj: Array = [] for i in range(4): var i_name = tile_name(edges[i]) if is_wall(i_name): edges[i] = "wall" else: edges[i] = tile_name(edges[i]) for i in range(4): if edges[i] != "wall": last_series += 1 adj.append(i) if last_series > series: series = last_series else: last_series = 0 var count = 4 - adj.size() if series == 1&&count == 2: facing = adj[0] kind = WallKind.STRAIGHT elif series == 2&&count == 2: facing = adj[0] kind = WallKind.OUTER_CORNER elif series == 1&&count == 3: facing = adj[0] kind = WallKind.T elif series == 0&&count == 4: facing = adj[0] kind = WallKind.CROSS turn_facing(facing)