diff options
Diffstat (limited to 'client/scripts/tiles')
-rw-r--r-- | client/scripts/tiles/counter.gd | 10 | ||||
-rw-r--r-- | client/scripts/tiles/door.gd | 2 | ||||
-rw-r--r-- | client/scripts/tiles/floor.gd | 1 | ||||
-rw-r--r-- | client/scripts/tiles/wall_tile.gd | 55 |
4 files changed, 59 insertions, 9 deletions
diff --git a/client/scripts/tiles/counter.gd b/client/scripts/tiles/counter.gd index d8b41804..83872315 100644 --- a/client/scripts/tiles/counter.gd +++ b/client/scripts/tiles/counter.gd @@ -30,7 +30,7 @@ func setup(rename: String, neighbors: Array): var series: int = 0 var last_series: int = 0 var adj: Array = [] - + for i in range(4): if edges[i] == "floor": last_series += 1 @@ -39,14 +39,14 @@ func setup(rename: String, neighbors: Array): 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 + # backsplash if series == 1&&count == 3: facing = adj[0] % 4 - + if edges[(adj[0] + 2) % 4] == "wall": kind = CounterKind.STRAIGHT_BACKSPLASH else: @@ -54,7 +54,7 @@ func setup(rename: String, neighbors: Array): elif series == 2&&count == 2: facing = (adj[0] + 1) % 4 kind = CounterKind.OUTER_CORNER - + turn_facing(facing) func is_counter(tile_name_t) -> bool: diff --git a/client/scripts/tiles/door.gd b/client/scripts/tiles/door.gd index a300977f..0861b09a 100644 --- a/client/scripts/tiles/door.gd +++ b/client/scripts/tiles/door.gd @@ -3,7 +3,7 @@ extends Floor func setup(rename: String, neighbors: Array): super.setup(rename, neighbors) - + var facing = 0 for i in range(4): if tile_name(neighbors[i]) == "door": diff --git a/client/scripts/tiles/floor.gd b/client/scripts/tiles/floor.gd index a8a396c4..70a71c5a 100644 --- a/client/scripts/tiles/floor.gd +++ b/client/scripts/tiles/floor.gd @@ -13,6 +13,7 @@ enum Facing { func setup(rename: String, _neighbors: Array): add_child(load("res://models/prefabs/map/floor_kitchen_small.tscn").instantiate()) base.name = "Base" + base.position += Vector3(0.5, 0, 0.5) add_child(base) self.name = rename 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) |