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