diff options
Diffstat (limited to 'client/map/tiles/wall_tile.gd')
-rw-r--r-- | client/map/tiles/wall_tile.gd | 57 |
1 files changed, 23 insertions, 34 deletions
diff --git a/client/map/tiles/wall_tile.gd b/client/map/tiles/wall_tile.gd index 6cc5253a..85e3e6ff 100644 --- a/client/map/tiles/wall_tile.gd +++ b/client/map/tiles/wall_tile.gd @@ -35,44 +35,33 @@ var facing: int = 0 func _init(rename: String, neighbors: Array): super(rename, neighbors) - var edges = neighbors.duplicate() + var max_series: int = 0 + var max_idx: int = 0 + for start in range(4): + var series = 0 + for i in range(4): + var i_name = tile_name(neighbors[(start + i) % 4]) + if is_wall(i_name): + series += 1 + else: + break + if series > max_series: + max_series = series + max_idx = start - 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] + if max_series == 1: + facing = max_idx kind = WallKind.STRAIGHT - elif series == 2&&count == 2: - facing = adj[0] + elif max_series == 2: + facing = max_idx kind = WallKind.OUTER_CORNER - elif series == 1&&count == 3: - facing = adj[0] + elif max_series == 3: + facing = max_idx kind = WallKind.T - elif series == 0&&count == 4: - facing = adj[0] + elif max_series == 4: + facing = max_idx kind = WallKind.CROSS turn_facing(facing) -func is_wall(_s: String): - return false # TODO - +static func is_wall(tile_name_t) -> bool: + return WALLS.has(tile_name_t) |