aboutsummaryrefslogtreecommitdiff
path: root/client/map
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-09-28 16:56:19 +0200
committermetamuffin <metamuffin@disroot.org>2025-09-28 16:56:21 +0200
commitcebf9b44a6fa2c74643105bea773adaf0d6ee49a (patch)
tree5c785a13a5725c6d755fd3b4dcc378b5307fd8f2 /client/map
parent7dc877d87044d12b185aa402420fb493db94e55a (diff)
downloadhurrycurry-cebf9b44a6fa2c74643105bea773adaf0d6ee49a.tar
hurrycurry-cebf9b44a6fa2c74643105bea773adaf0d6ee49a.tar.bz2
hurrycurry-cebf9b44a6fa2c74643105bea773adaf0d6ee49a.tar.zst
Add colorful walls
Diffstat (limited to 'client/map')
-rw-r--r--client/map/tile_factory.gd4
-rw-r--r--client/map/tiles/counter_window.gd4
-rw-r--r--client/map/tiles/door.gd2
-rw-r--r--client/map/tiles/wall.gd8
-rw-r--r--client/map/tiles/wall_tile.gd16
-rw-r--r--client/map/tiles/window.gd4
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())