diff options
Diffstat (limited to 'client')
-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 |
6 files changed, 27 insertions, 11 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()) |