aboutsummaryrefslogtreecommitdiff
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
parent7dc877d87044d12b185aa402420fb493db94e55a (diff)
downloadhurrycurry-cebf9b44a6fa2c74643105bea773adaf0d6ee49a.tar
hurrycurry-cebf9b44a6fa2c74643105bea773adaf0d6ee49a.tar.bz2
hurrycurry-cebf9b44a6fa2c74643105bea773adaf0d6ee49a.tar.zst
Add colorful walls
-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
-rw-r--r--data/maps/burgers_inc.yaml14
-rw-r--r--data/maps/debug.yaml26
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: