diff options
-rw-r--r-- | client/map/tile_factory.gd | 4 | ||||
-rw-r--r-- | client/map/tiles/counter_window.gd | 4 | ||||
-rw-r--r-- | client/map/tiles/door.gd | 2 | ||||
-rw-r--r-- | client/map/tiles/wall.gd | 8 | ||||
-rw-r--r-- | client/map/tiles/wall_tile.gd | 16 | ||||
-rw-r--r-- | client/map/tiles/window.gd | 4 | ||||
-rw-r--r-- | data/maps/burgers_inc.yaml | 14 | ||||
-rw-r--r-- | data/maps/debug.yaml | 26 |
8 files changed, 43 insertions, 35 deletions
diff --git a/client/map/tile_factory.gd b/client/map/tile_factory.gd index 57570263..13fb2ce8 100644 --- a/client/map/tile_factory.gd +++ b/client/map/tile_factory.gd @@ -18,7 +18,7 @@ extends Object class TileName: - var name: String + var name# : String var variant #: String? func _init(raw_name: String): var c = Array(raw_name.split(":")) @@ -43,7 +43,7 @@ func produce(raw_name: String, position: Vector2i, neighbors: Array) -> Tile: var ctx := TileCC.new() ctx.tile_name = tile_name ctx.position = position - ctx.neighbors = neighbors + ctx.neighbors = neighbors.map(func(n): return null if n == null else TileName.new(n).name) ctx.floor_meshers = floor_meshers match tile_name.name: diff --git a/client/map/tiles/counter_window.gd b/client/map/tiles/counter_window.gd index 780aa4e7..46889e43 100644 --- a/client/map/tiles/counter_window.gd +++ b/client/map/tiles/counter_window.gd @@ -23,7 +23,7 @@ func _init(ctx: TileFactory.TileCC): super(ctx) match kind: WallKind.STRAIGHT: - base.add_child(load("res://map/tiles/counter_window.tscn").instantiate()) + add_dyed_mesh(ctx, load("res://map/tiles/counter_window.tscn").instantiate()) WallKind.OUTER_CORNER: push_warning("There is no corner counter window!") - base.add_child(load("res://map/tiles/counter_window.tscn").instantiate()) + add_dyed_mesh(ctx, load("res://map/tiles/counter_window.tscn").instantiate()) diff --git a/client/map/tiles/door.gd b/client/map/tiles/door.gd index 4a9cb856..7fe23c93 100644 --- a/client/map/tiles/door.gd +++ b/client/map/tiles/door.gd @@ -24,4 +24,4 @@ func _init(ctx: TileFactory.TileCC): if ctx.neighbors[i] == "door": new_facing = i turn_facing(new_facing) - base.add_child(load("res://map/tiles/door.tscn").instantiate()) + add_dyed_mesh(ctx, load("res://map/tiles/door.tscn").instantiate(), "Door", 1) diff --git a/client/map/tiles/wall.gd b/client/map/tiles/wall.gd index 4f9588f5..25289635 100644 --- a/client/map/tiles/wall.gd +++ b/client/map/tiles/wall.gd @@ -19,7 +19,7 @@ extends WallTile func _init(ctx: TileFactory.TileCC): super(ctx) match kind: - WallKind.STRAIGHT: base.add_child(load("res://map/tiles/wall_straight.tscn").instantiate()) - WallKind.OUTER_CORNER: base.add_child(load("res://map/tiles/wall_corner.tscn").instantiate()) - WallKind.T: base.add_child(load("res://map/tiles/wall_t.tscn").instantiate()) - WallKind.CROSS: base.add_child(load("res://map/tiles/wall_cross.tscn").instantiate()) + WallKind.STRAIGHT: add_dyed_mesh(ctx, load("res://map/tiles/wall_straight.tscn").instantiate()) + WallKind.OUTER_CORNER: add_dyed_mesh(ctx, load("res://map/tiles/wall_corner.tscn").instantiate()) + WallKind.T: add_dyed_mesh(ctx, load("res://map/tiles/wall_t.tscn").instantiate()) + WallKind.CROSS: add_dyed_mesh(ctx, load("res://map/tiles/wall_cross.tscn").instantiate()) diff --git a/client/map/tiles/wall_tile.gd b/client/map/tiles/wall_tile.gd index 173a9355..390a4bfb 100644 --- a/client/map/tiles/wall_tile.gd +++ b/client/map/tiles/wall_tile.gd @@ -16,6 +16,17 @@ class_name WallTile extends Floor +static func create_material(color: Color): + var mat = StandardMaterial3D.new() + mat.albedo_color = color + return mat + +static var MATERIALS := { + "red": create_material(Color(0.777, 0.244, 0.187, 1.0)), + "green": create_material(Color(0.18, 0.745, 0.596, 1.0)), + "blue": create_material(Color(0.466, 0.519, 0.939, 1.0)), +} + const WALLS: Array = [ "wall", "wall-window", @@ -70,5 +81,10 @@ func _init(ctx: TileFactory.TileCC): kind = WallKind.CROSS turn_facing(facing) +func add_dyed_mesh(ctx: TileFactory.TileCC, node: Node3D, node_name = "Mesh", surface = 0): + var meshi: MeshInstance3D = node.get_node(node_name) + meshi.set_surface_override_material(surface, MATERIALS.get(ctx.tile_name.variant, MATERIALS["green"])) + base.add_child(node) + func is_wall(tile_name_t) -> bool: return walls.has(tile_name_t) diff --git a/client/map/tiles/window.gd b/client/map/tiles/window.gd index 9b95ff4c..da0963ed 100644 --- a/client/map/tiles/window.gd +++ b/client/map/tiles/window.gd @@ -23,7 +23,7 @@ func _init(ctx: TileFactory.TileCC): super(ctx) match kind: WallKind.STRAIGHT: - base.add_child(load("res://map/tiles/window.tscn").instantiate()) + add_dyed_mesh(ctx, load("res://map/tiles/window.tscn").instantiate()) WallKind.OUTER_CORNER: push_warning("There is no corner window!") - base.add_child(load("res://map/tiles/window.tscn").instantiate()) + add_dyed_mesh(ctx, load("res://map/tiles/window.tscn").instantiate()) diff --git a/data/maps/burgers_inc.yaml b/data/maps/burgers_inc.yaml index 1c4e9561..c3b4312e 100644 --- a/data/maps/burgers_inc.yaml +++ b/data/maps/burgers_inc.yaml @@ -45,7 +45,7 @@ tiles: "W": counter "p": counter "t": table - "w": counter-window + "w": counter-window:red "s": sink "o": oven "P": stove @@ -68,9 +68,9 @@ tiles: "~": path "!": path "_": path - "d": door - "█": wall - "▒": wall-window + "d": door:red + "█": wall:red + "▒": wall-window:red "=": fence items: @@ -88,14 +88,14 @@ chef_spawn: "~" customer_spawn: "!" walkable: - - door + - door:red - floor - chair - grass - path collider: - - wall + - wall:red - tree - - wall-window + - wall-window:red - fence diff --git a/data/maps/debug.yaml b/data/maps/debug.yaml index ccaac980..66dad148 100644 --- a/data/maps/debug.yaml +++ b/data/maps/debug.yaml @@ -26,11 +26,11 @@ map: - "..ppppbpppp............." - "..ccccɷcccc..'''''''''''" - ".............''''''''⁴''" - - "6.>>>}o>>>>..''l''''''''" - - "p.°>>>>v.....'''''''''''" - - "2.+>>]öü>>>..''l''''''''" - - "3.L>>>^......'''''''''''" - - ".............''l''''''''" + - ".A...........''l''''''''" + - ".Æ...........'''''''''''" + - ".A...........''l''''''''" + - ".B....C......'''''''''''" + - ".BBBCCC......''l''''''''" - ".............'''''''''''" - ".............'''''''''''" @@ -76,18 +76,10 @@ tiles: "!": path "_": path "d": door - "▒": wall-window - "█": wall - ">": conveyor - "ö": stove - "ü": conveyor - "^": conveyor - "v": conveyor - "}": counter - "]": counter - "L": counter-window - "+": counter-window - "°": counter-window + "Æ": counter-window:blue + "A": wall:blue + "B": wall:red + "C": wall:green "ɷ": chandelier items: |