diff options
Diffstat (limited to 'client/scripts/tiles/wall_tile.gd')
-rw-r--r-- | client/scripts/tiles/wall_tile.gd | 55 |
1 files changed, 52 insertions, 3 deletions
diff --git a/client/scripts/tiles/wall_tile.gd b/client/scripts/tiles/wall_tile.gd index d107d73e..f10cc53f 100644 --- a/client/scripts/tiles/wall_tile.gd +++ b/client/scripts/tiles/wall_tile.gd @@ -1,10 +1,59 @@ 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 setup(rename: String, neighbors: Array): super.setup(rename, neighbors) - var facing = 0 + + 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 neighbors[i] != null&&tile_name(neighbors[i]) != "wall": - facing = i + 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) |