diff options
Diffstat (limited to 'client/map/tiles/counter.gd')
| -rw-r--r-- | client/map/tiles/counter.gd | 49 | 
1 files changed, 19 insertions, 30 deletions
diff --git a/client/map/tiles/counter.gd b/client/map/tiles/counter.gd index c3032e4f..6783d486 100644 --- a/client/map/tiles/counter.gd +++ b/client/map/tiles/counter.gd @@ -16,7 +16,7 @@  class_name Counter  extends FullTile -var counters = [ +const counters: Array = [  	"counter",  	"pan",  	"sink", @@ -36,41 +36,30 @@ static func interact_target() -> Vector3:  func _init(rename: String, neighbors: Array):  	super(rename, neighbors) -	var facing = 0 -	var edges = neighbors.duplicate() -	for i in range(4): -		var i_name = tile_name(edges[i]) -		if Counter.is_counter(i_name): -			edges[i] = "counter" -		else: -			edges[i] = tile_name(edges[i]) - -	var series: int = 0 -	var last_series: int = 0 -	var adj: Array = [] -	for i in range(4): -		if edges[i] == "floor": -			last_series += 1 -			adj.append(i) -			if last_series > series: -				series = last_series -		else: -			last_series = 0 - -	var count = 4 - adj.size() +	var facing: int = 0 +	var max_series: int = 0 +	var max_idx: int = 0 +	for start in range(4): +		var series = 0 +		for i in range(4): +			if tile_name(neighbors[(start + i) % 4]) == "floor": +				series += 1 +			else: +				break +		if series > max_series: +			max_series = series +			max_idx = start  	# we can neither find out whether it is an inner corner nor an outer corner  	# backsplash -	if series == 1&&count == 3: -		facing = adj[0] % 4 - -		if edges[(adj[0] + 2) % 4] == "wall": +	facing = max_idx +	if max_series == 1: +		if WallTile.is_wall(tile_name(neighbors[(max_idx + 2) % 4])):  			kind = CounterKind.STRAIGHT_BACKSPLASH  		else:  			kind = CounterKind.STRAIGHT -	elif series == 2&&count == 2: -		facing = (adj[0] + 1) % 4 +	elif max_series == 2:  		kind = CounterKind.OUTER_CORNER  	turn_facing(facing) @@ -78,4 +67,4 @@ func _init(rename: String, neighbors: Array):  static func is_counter(tile_name_t) -> bool:  	if tile_name_t == null:  		return false -	return tile_name_t.ends_with("crate")||counters.has(tile_name_t) +	return tile_name_t.ends_with("crate") or counters.has(tile_name_t)  |