aboutsummaryrefslogtreecommitdiff
path: root/client/map/tiles/wall_tile.gd
diff options
context:
space:
mode:
Diffstat (limited to 'client/map/tiles/wall_tile.gd')
-rw-r--r--client/map/tiles/wall_tile.gd57
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)