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) | 
