diff options
Diffstat (limited to 'client/map')
| -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()) | 
