diff options
Diffstat (limited to 'client/scripts/map/counter.gd')
| -rw-r--r-- | client/scripts/map/counter.gd | 61 | 
1 files changed, 61 insertions, 0 deletions
| diff --git a/client/scripts/map/counter.gd b/client/scripts/map/counter.gd new file mode 100644 index 00000000..686369cf --- /dev/null +++ b/client/scripts/map/counter.gd @@ -0,0 +1,61 @@ +class_name Counter +extends FullTile + +var counters = [ +	"counter", +	"pan", +	"sink", +	"oven", +] + +enum CounterKind { +	OUTER_CORNER, +	STRAIGHT, +	STRAIGHT_BACKSPLASH +} + +var facing: int = 0 +var kind: CounterKind = CounterKind.STRAIGHT + +func setup(rename: String, neighbors: Array): +	super.setup(rename, neighbors) +	var edges = neighbors.duplicate() +	for i in range(4): +		var i_name = tile_name(edges[i]) +		if 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() + +	# 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": +			kind = CounterKind.STRAIGHT_BACKSPLASH +		else: +			kind = CounterKind.STRAIGHT +	elif series == 2&&count == 2: +		facing = (adj[0] + 1) % 4 +		kind = CounterKind.OUTER_CORNER + +func is_counter(tile_name_t) -> bool: +	if tile_name_t == null: +		return false +	return name.ends_with("crate")||counters.has(name) | 
