From b430895ea49ebeb0359a2d36164832303aaf757d Mon Sep 17 00:00:00 2001 From: nokoe Date: Fri, 21 Jun 2024 00:47:57 +0200 Subject: add door --- client/scripts/map.gd | 2 +- client/scripts/map/chair.gd | 13 -------- client/scripts/map/counter.gd | 63 ----------------------------------- client/scripts/map/counter_base.gd | 12 ------- client/scripts/map/cutting_board.gd | 6 ---- client/scripts/map/floor.gd | 25 -------------- client/scripts/map/full_tile.gd | 15 --------- client/scripts/map/oven.gd | 6 ---- client/scripts/map/sink.gd | 12 ------- client/scripts/map/stove.gd | 6 ---- client/scripts/map/table.gd | 6 ---- client/scripts/map/trash.gd | 6 ---- client/scripts/map/wall.gd | 6 ---- client/scripts/map/wall_tile.gd | 10 ------ client/scripts/tiles/chair.gd | 13 ++++++++ client/scripts/tiles/counter.gd | 63 +++++++++++++++++++++++++++++++++++ client/scripts/tiles/counter_base.gd | 12 +++++++ client/scripts/tiles/cutting_board.gd | 6 ++++ client/scripts/tiles/door.gd | 12 +++++++ client/scripts/tiles/floor.gd | 25 ++++++++++++++ client/scripts/tiles/full_tile.gd | 15 +++++++++ client/scripts/tiles/oven.gd | 6 ++++ client/scripts/tiles/sink.gd | 12 +++++++ client/scripts/tiles/stove.gd | 6 ++++ client/scripts/tiles/table.gd | 6 ++++ client/scripts/tiles/trash.gd | 6 ++++ client/scripts/tiles/wall.gd | 6 ++++ client/scripts/tiles/wall_tile.gd | 10 ++++++ client/scripts/tiles/window.gd | 11 ++++++ 29 files changed, 210 insertions(+), 187 deletions(-) delete mode 100644 client/scripts/map/chair.gd delete mode 100644 client/scripts/map/counter.gd delete mode 100644 client/scripts/map/counter_base.gd delete mode 100644 client/scripts/map/cutting_board.gd delete mode 100644 client/scripts/map/floor.gd delete mode 100644 client/scripts/map/full_tile.gd delete mode 100644 client/scripts/map/oven.gd delete mode 100644 client/scripts/map/sink.gd delete mode 100644 client/scripts/map/stove.gd delete mode 100644 client/scripts/map/table.gd delete mode 100644 client/scripts/map/trash.gd delete mode 100644 client/scripts/map/wall.gd delete mode 100644 client/scripts/map/wall_tile.gd create mode 100644 client/scripts/tiles/chair.gd create mode 100644 client/scripts/tiles/counter.gd create mode 100644 client/scripts/tiles/counter_base.gd create mode 100644 client/scripts/tiles/cutting_board.gd create mode 100644 client/scripts/tiles/door.gd create mode 100644 client/scripts/tiles/floor.gd create mode 100644 client/scripts/tiles/full_tile.gd create mode 100644 client/scripts/tiles/oven.gd create mode 100644 client/scripts/tiles/sink.gd create mode 100644 client/scripts/tiles/stove.gd create mode 100644 client/scripts/tiles/table.gd create mode 100644 client/scripts/tiles/trash.gd create mode 100644 client/scripts/tiles/wall.gd create mode 100644 client/scripts/tiles/wall_tile.gd create mode 100644 client/scripts/tiles/window.gd (limited to 'client/scripts') diff --git a/client/scripts/map.gd b/client/scripts/map.gd index 83b61467..a88c8cdc 100644 --- a/client/scripts/map.gd +++ b/client/scripts/map.gd @@ -37,7 +37,7 @@ func update(pos, tile_name, neighbors): "window": instance = Wall.new() "door": - instance = Wall.new() + instance = Door.new() _: instance = Floor.new() diff --git a/client/scripts/map/chair.gd b/client/scripts/map/chair.gd deleted file mode 100644 index e51d7864..00000000 --- a/client/scripts/map/chair.gd +++ /dev/null @@ -1,13 +0,0 @@ -class_name Chair -extends Floor - -func setup(rename: String, neighbors: Array): - super.setup(rename, neighbors) - var chair = load("res://models/prefabs/map/chair_A.tscn").instantiate() - var facing = 0; - for i in range(4): - if tile_name(neighbors[i]) == "table": - facing = i - break - base.add_child(chair) - turn_facing(facing) diff --git a/client/scripts/map/counter.gd b/client/scripts/map/counter.gd deleted file mode 100644 index d8b41804..00000000 --- a/client/scripts/map/counter.gd +++ /dev/null @@ -1,63 +0,0 @@ -class_name Counter -extends FullTile - -var counters = [ - "counter", - "pan", - "sink", - "oven", -] - -enum CounterKind { - OUTER_CORNER, - STRAIGHT, - STRAIGHT_BACKSPLASH -} - -var kind: CounterKind = CounterKind.STRAIGHT - -func setup(rename: String, neighbors: Array): - super.setup(rename, neighbors) - var facing = 0 - 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 - - turn_facing(facing) - -func is_counter(tile_name_t) -> bool: - if tile_name_t == null: - return false - return name.ends_with("crate")||counters.has(name) diff --git a/client/scripts/map/counter_base.gd b/client/scripts/map/counter_base.gd deleted file mode 100644 index 19c7f045..00000000 --- a/client/scripts/map/counter_base.gd +++ /dev/null @@ -1,12 +0,0 @@ -class_name CounterBase -extends Counter - -func setup(rename: String, neighbors: Array): - super.setup(rename, neighbors) - match kind: - CounterKind.OUTER_CORNER: - base.add_child(load("res://models/prefabs/map/kitchencounter_outercorner.tscn").instantiate()) - CounterKind.STRAIGHT: - base.add_child(load("res://models/prefabs/map/kitchencounter_straight_A.tscn").instantiate()) - CounterKind.STRAIGHT_BACKSPLASH: - base.add_child(load("res://models/prefabs/map/kitchencounter_straight_A_backsplash.tscn").instantiate()) diff --git a/client/scripts/map/cutting_board.gd b/client/scripts/map/cutting_board.gd deleted file mode 100644 index 0164036b..00000000 --- a/client/scripts/map/cutting_board.gd +++ /dev/null @@ -1,6 +0,0 @@ -class_name CuttingBoard -extends CounterBase - -func setup(rename: String, neighbors: Array): - super.setup(rename, neighbors) - base.add_child(load("res://models/prefabs/map/cuttingboard.tscn").instantiate()) diff --git a/client/scripts/map/floor.gd b/client/scripts/map/floor.gd deleted file mode 100644 index a8a396c4..00000000 --- a/client/scripts/map/floor.gd +++ /dev/null @@ -1,25 +0,0 @@ -class_name Floor -extends Node3D - -var base = Node3D.new() - -enum Facing { - NEG_Y = 0, - NEG_X = 1, - Y = 2, - X = 3, -} - -func setup(rename: String, _neighbors: Array): - add_child(load("res://models/prefabs/map/floor_kitchen_small.tscn").instantiate()) - base.name = "Base" - add_child(base) - self.name = rename - -func turn_facing(facing: Facing): - base.rotate_y(facing * 0.5 * PI + PI) - -func tile_name(idx): - if idx == null: - return null - return Multiplayer.tile_names[idx] diff --git a/client/scripts/map/full_tile.gd b/client/scripts/map/full_tile.gd deleted file mode 100644 index a986b053..00000000 --- a/client/scripts/map/full_tile.gd +++ /dev/null @@ -1,15 +0,0 @@ -class_name FullTile -extends Floor - -var static_body = StaticBody3D.new() - -func setup(rename: String, neighbors: Array): - super.setup(rename, neighbors) - var shape = CollisionShape3D.new() - var box = BoxShape3D.new() - shape.position.y += .5 - shape.shape = box - shape.name = "Box" - static_body.add_child(shape) - static_body.name = "Body" - base.add_child(static_body) diff --git a/client/scripts/map/oven.gd b/client/scripts/map/oven.gd deleted file mode 100644 index 2ebe7f33..00000000 --- a/client/scripts/map/oven.gd +++ /dev/null @@ -1,6 +0,0 @@ -class_name Oven -extends Counter - -func setup(rename: String, neighbors: Array): - super.setup(rename, neighbors) - base.add_child(load("res://models/prefabs/map/oven.tscn").instantiate()) diff --git a/client/scripts/map/sink.gd b/client/scripts/map/sink.gd deleted file mode 100644 index 2067cc33..00000000 --- a/client/scripts/map/sink.gd +++ /dev/null @@ -1,12 +0,0 @@ -class_name Sink -extends Counter - -func setup(rename: String, neighbors: Array): - super.setup(rename, neighbors) - match kind: - CounterKind.STRAIGHT: - base.add_child(load("res://models/prefabs/map/kitchencounter_sink.tscn").instantiate()) - CounterKind.STRAIGHT_BACKSPLASH: - base.add_child(load("res://models/prefabs/map/kitchencounter_sink_backsplash.tscn").instantiate()) - _: - base.add_child(load("res://models/prefabs/map/kitchencounter_sink.tscn").instantiate()) diff --git a/client/scripts/map/stove.gd b/client/scripts/map/stove.gd deleted file mode 100644 index c2d75b7b..00000000 --- a/client/scripts/map/stove.gd +++ /dev/null @@ -1,6 +0,0 @@ -class_name Stove -extends Counter - -func setup(rename: String, neighbors: Array): - super.setup(rename, neighbors) - base.add_child(load("res://models/prefabs/map/stove_single.tscn").instantiate()) diff --git a/client/scripts/map/table.gd b/client/scripts/map/table.gd deleted file mode 100644 index 937ef097..00000000 --- a/client/scripts/map/table.gd +++ /dev/null @@ -1,6 +0,0 @@ -class_name Table -extends FullTile - -func setup(rename: String, neighbors: Array): - super.setup(rename, neighbors) - base.add_child(load("res://models/prefabs/map/table_round_A_small.tscn").instantiate()) diff --git a/client/scripts/map/trash.gd b/client/scripts/map/trash.gd deleted file mode 100644 index 1ec05e49..00000000 --- a/client/scripts/map/trash.gd +++ /dev/null @@ -1,6 +0,0 @@ -class_name Trash -extends FullTile - -func setup(rename: String, neighbors: Array): - super.setup(rename, neighbors) - base.add_child(load("res://models/prefabs/map/crate_trash.tscn").instantiate()) diff --git a/client/scripts/map/wall.gd b/client/scripts/map/wall.gd deleted file mode 100644 index dd6d3495..00000000 --- a/client/scripts/map/wall.gd +++ /dev/null @@ -1,6 +0,0 @@ -class_name Wall -extends WallTile - -func setup(rename: String, neighbors: Array): - super.setup(rename, neighbors) - base.add_child(load("res://models/prefabs/map/wall.tscn").instantiate()) diff --git a/client/scripts/map/wall_tile.gd b/client/scripts/map/wall_tile.gd deleted file mode 100644 index d107d73e..00000000 --- a/client/scripts/map/wall_tile.gd +++ /dev/null @@ -1,10 +0,0 @@ -class_name WallTile -extends FullTile - -func setup(rename: String, neighbors: Array): - super.setup(rename, neighbors) - var facing = 0 - for i in range(4): - if neighbors[i] != null&&tile_name(neighbors[i]) != "wall": - facing = i - turn_facing(facing) diff --git a/client/scripts/tiles/chair.gd b/client/scripts/tiles/chair.gd new file mode 100644 index 00000000..e51d7864 --- /dev/null +++ b/client/scripts/tiles/chair.gd @@ -0,0 +1,13 @@ +class_name Chair +extends Floor + +func setup(rename: String, neighbors: Array): + super.setup(rename, neighbors) + var chair = load("res://models/prefabs/map/chair_A.tscn").instantiate() + var facing = 0; + for i in range(4): + if tile_name(neighbors[i]) == "table": + facing = i + break + base.add_child(chair) + turn_facing(facing) diff --git a/client/scripts/tiles/counter.gd b/client/scripts/tiles/counter.gd new file mode 100644 index 00000000..d8b41804 --- /dev/null +++ b/client/scripts/tiles/counter.gd @@ -0,0 +1,63 @@ +class_name Counter +extends FullTile + +var counters = [ + "counter", + "pan", + "sink", + "oven", +] + +enum CounterKind { + OUTER_CORNER, + STRAIGHT, + STRAIGHT_BACKSPLASH +} + +var kind: CounterKind = CounterKind.STRAIGHT + +func setup(rename: String, neighbors: Array): + super.setup(rename, neighbors) + var facing = 0 + 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 + + turn_facing(facing) + +func is_counter(tile_name_t) -> bool: + if tile_name_t == null: + return false + return name.ends_with("crate")||counters.has(name) diff --git a/client/scripts/tiles/counter_base.gd b/client/scripts/tiles/counter_base.gd new file mode 100644 index 00000000..19c7f045 --- /dev/null +++ b/client/scripts/tiles/counter_base.gd @@ -0,0 +1,12 @@ +class_name CounterBase +extends Counter + +func setup(rename: String, neighbors: Array): + super.setup(rename, neighbors) + match kind: + CounterKind.OUTER_CORNER: + base.add_child(load("res://models/prefabs/map/kitchencounter_outercorner.tscn").instantiate()) + CounterKind.STRAIGHT: + base.add_child(load("res://models/prefabs/map/kitchencounter_straight_A.tscn").instantiate()) + CounterKind.STRAIGHT_BACKSPLASH: + base.add_child(load("res://models/prefabs/map/kitchencounter_straight_A_backsplash.tscn").instantiate()) diff --git a/client/scripts/tiles/cutting_board.gd b/client/scripts/tiles/cutting_board.gd new file mode 100644 index 00000000..0164036b --- /dev/null +++ b/client/scripts/tiles/cutting_board.gd @@ -0,0 +1,6 @@ +class_name CuttingBoard +extends CounterBase + +func setup(rename: String, neighbors: Array): + super.setup(rename, neighbors) + base.add_child(load("res://models/prefabs/map/cuttingboard.tscn").instantiate()) diff --git a/client/scripts/tiles/door.gd b/client/scripts/tiles/door.gd new file mode 100644 index 00000000..a300977f --- /dev/null +++ b/client/scripts/tiles/door.gd @@ -0,0 +1,12 @@ +class_name Door +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": + facing = i % 4 + base.add_child(load("res://models/prefabs/map/door.tscn").instantiate()) + turn_facing(facing) diff --git a/client/scripts/tiles/floor.gd b/client/scripts/tiles/floor.gd new file mode 100644 index 00000000..a8a396c4 --- /dev/null +++ b/client/scripts/tiles/floor.gd @@ -0,0 +1,25 @@ +class_name Floor +extends Node3D + +var base = Node3D.new() + +enum Facing { + NEG_Y = 0, + NEG_X = 1, + Y = 2, + X = 3, +} + +func setup(rename: String, _neighbors: Array): + add_child(load("res://models/prefabs/map/floor_kitchen_small.tscn").instantiate()) + base.name = "Base" + add_child(base) + self.name = rename + +func turn_facing(facing: Facing): + base.rotate_y(facing * 0.5 * PI + PI) + +func tile_name(idx): + if idx == null: + return null + return Multiplayer.tile_names[idx] diff --git a/client/scripts/tiles/full_tile.gd b/client/scripts/tiles/full_tile.gd new file mode 100644 index 00000000..a986b053 --- /dev/null +++ b/client/scripts/tiles/full_tile.gd @@ -0,0 +1,15 @@ +class_name FullTile +extends Floor + +var static_body = StaticBody3D.new() + +func setup(rename: String, neighbors: Array): + super.setup(rename, neighbors) + var shape = CollisionShape3D.new() + var box = BoxShape3D.new() + shape.position.y += .5 + shape.shape = box + shape.name = "Box" + static_body.add_child(shape) + static_body.name = "Body" + base.add_child(static_body) diff --git a/client/scripts/tiles/oven.gd b/client/scripts/tiles/oven.gd new file mode 100644 index 00000000..2ebe7f33 --- /dev/null +++ b/client/scripts/tiles/oven.gd @@ -0,0 +1,6 @@ +class_name Oven +extends Counter + +func setup(rename: String, neighbors: Array): + super.setup(rename, neighbors) + base.add_child(load("res://models/prefabs/map/oven.tscn").instantiate()) diff --git a/client/scripts/tiles/sink.gd b/client/scripts/tiles/sink.gd new file mode 100644 index 00000000..2067cc33 --- /dev/null +++ b/client/scripts/tiles/sink.gd @@ -0,0 +1,12 @@ +class_name Sink +extends Counter + +func setup(rename: String, neighbors: Array): + super.setup(rename, neighbors) + match kind: + CounterKind.STRAIGHT: + base.add_child(load("res://models/prefabs/map/kitchencounter_sink.tscn").instantiate()) + CounterKind.STRAIGHT_BACKSPLASH: + base.add_child(load("res://models/prefabs/map/kitchencounter_sink_backsplash.tscn").instantiate()) + _: + base.add_child(load("res://models/prefabs/map/kitchencounter_sink.tscn").instantiate()) diff --git a/client/scripts/tiles/stove.gd b/client/scripts/tiles/stove.gd new file mode 100644 index 00000000..c2d75b7b --- /dev/null +++ b/client/scripts/tiles/stove.gd @@ -0,0 +1,6 @@ +class_name Stove +extends Counter + +func setup(rename: String, neighbors: Array): + super.setup(rename, neighbors) + base.add_child(load("res://models/prefabs/map/stove_single.tscn").instantiate()) diff --git a/client/scripts/tiles/table.gd b/client/scripts/tiles/table.gd new file mode 100644 index 00000000..937ef097 --- /dev/null +++ b/client/scripts/tiles/table.gd @@ -0,0 +1,6 @@ +class_name Table +extends FullTile + +func setup(rename: String, neighbors: Array): + super.setup(rename, neighbors) + base.add_child(load("res://models/prefabs/map/table_round_A_small.tscn").instantiate()) diff --git a/client/scripts/tiles/trash.gd b/client/scripts/tiles/trash.gd new file mode 100644 index 00000000..1ec05e49 --- /dev/null +++ b/client/scripts/tiles/trash.gd @@ -0,0 +1,6 @@ +class_name Trash +extends FullTile + +func setup(rename: String, neighbors: Array): + super.setup(rename, neighbors) + base.add_child(load("res://models/prefabs/map/crate_trash.tscn").instantiate()) diff --git a/client/scripts/tiles/wall.gd b/client/scripts/tiles/wall.gd new file mode 100644 index 00000000..dd6d3495 --- /dev/null +++ b/client/scripts/tiles/wall.gd @@ -0,0 +1,6 @@ +class_name Wall +extends WallTile + +func setup(rename: String, neighbors: Array): + super.setup(rename, neighbors) + base.add_child(load("res://models/prefabs/map/wall.tscn").instantiate()) diff --git a/client/scripts/tiles/wall_tile.gd b/client/scripts/tiles/wall_tile.gd new file mode 100644 index 00000000..d107d73e --- /dev/null +++ b/client/scripts/tiles/wall_tile.gd @@ -0,0 +1,10 @@ +class_name WallTile +extends FullTile + +func setup(rename: String, neighbors: Array): + super.setup(rename, neighbors) + var facing = 0 + for i in range(4): + if neighbors[i] != null&&tile_name(neighbors[i]) != "wall": + facing = i + turn_facing(facing) diff --git a/client/scripts/tiles/window.gd b/client/scripts/tiles/window.gd new file mode 100644 index 00000000..953f97db --- /dev/null +++ b/client/scripts/tiles/window.gd @@ -0,0 +1,11 @@ +class_name WallWindow +extends WallTile + +func setup(rename: String, neighbors: Array): + super.setup(rename, neighbors) + match kind: + WallKind.STRAIGHT: + base.add_child(load("res://models/prefabs/map/window.tscn").instantiate()) + WallKind.OUTER_CORNER: + push_warning("There is no corner window!") + base.add_child(load("res://models/prefabs/map/window.tscn").instantiate()) -- cgit v1.2.3-70-g09d2