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