summaryrefslogtreecommitdiff
path: root/client
diff options
context:
space:
mode:
Diffstat (limited to 'client')
-rw-r--r--client/menu/menu_background.gd32
1 files changed, 23 insertions, 9 deletions
diff --git a/client/menu/menu_background.gd b/client/menu/menu_background.gd
index 33ec6e43..77fb123f 100644
--- a/client/menu/menu_background.gd
+++ b/client/menu/menu_background.gd
@@ -17,8 +17,8 @@
#
extends Node3D
-const NULLS = [null,null,null,null]
-const BUCKETS = [[], ["floor","floor","floor","floor","tomato-crate", "steak-crate"], ["table", "chair", "counter"], ["sink", "stove"]]
+const CRATES = ["tomato-crate", "steak-crate", "cheese-crate", "lettuce-crate", "flour-crate", "coconut-crate"]
+const TOOLS = ["sink", "cuttingboard", "stove", "oven", "freezer"]
@onready var environment: WorldEnvironment = $Environment
@onready var map: Map = $Map
@@ -27,12 +27,26 @@ func _ready():
if !Global.on_vulkan():
environment.environment.tonemap_exposure = 0.25
- for x in range(-10,11):
- for y in range(-10,11):
- var w = exp(-sqrt(x*x+y*y) * 0.15)
+ var tiles = {}
+ for x in range(-10, 11):
+ for y in range(-10, 11):
+ var w = exp(-sqrt(x * x + y * y) * 0.15)
var k = randf() * w
- var bucket = BUCKETS[int(floor(k * BUCKETS.size())) % BUCKETS.size()]
- if bucket.size() == 0: continue
- var tile_name = bucket[randi() % bucket.size()]
- map.set_tile(Vector2i(x,y), tile_name)
+ var tn = null
+ if k > 0.25: tn = "floor"
+ if k > 0.4: tn = choose(CRATES) if randf() > 0.3 else "counter"
+ if k > 0.6: tn = choose(TOOLS)
+ if tn != null: tiles[str(Vector2i(x,y))] = [tn,[x,y]]
+
+ var gt = func (cs):
+ var t = tiles.get(str(Vector2i(cs[0],cs[1])))
+ return null if t == null else t[0]
+ for pk in tiles.keys():
+ var x = tiles[pk][1][0]
+ var y = tiles[pk][1][1]
+ var t = gt.call([x,y])
+ if t != null: map.set_tile(Vector2i(x,y), t, [[x,y-1],[x-1,y],[x,y+1],[x+1,y]].map(gt))
+
map.flush()
+
+func choose(a): return a[floor(a.size() * randf())]