summaryrefslogtreecommitdiff
path: root/scripts/builder.gd
diff options
context:
space:
mode:
authorJ08nY2017-04-24 02:23:37 +0200
committerJ08nY2017-04-24 02:23:37 +0200
commit8f1613ca0fab95fe837d9278e7829f70fb7bc934 (patch)
tree572ebdce96d1e1734d5175d646fe2248d483cff2 /scripts/builder.gd
parentcfe4ce0fb4705a6c231528d60e4833c4dc2ec68f (diff)
downloadld38-8f1613ca0fab95fe837d9278e7829f70fb7bc934.tar.gz
ld38-8f1613ca0fab95fe837d9278e7829f70fb7bc934.tar.zst
ld38-8f1613ca0fab95fe837d9278e7829f70fb7bc934.zip
Diffstat (limited to 'scripts/builder.gd')
-rw-r--r--scripts/builder.gd60
1 files changed, 60 insertions, 0 deletions
diff --git a/scripts/builder.gd b/scripts/builder.gd
new file mode 100644
index 0000000..9a43437
--- /dev/null
+++ b/scripts/builder.gd
@@ -0,0 +1,60 @@
+extends Object
+
+const Wrld = preload("res://world.tscn")
+const Items = preload("res://scripts/items.gd")
+
+var items = null
+
+func _init():
+ self.items = Items.new()
+
+func build(where):
+ var w = Wrld.instance()
+ w.set_scale(Vector3(0.02, 0.02, 0.02))
+ w.set_translation(where)
+ return w
+
+func can_combine(materials):
+ var has_solid = false
+ var has_gas = false
+ for id in materials:
+ var category = self.items.category(id)
+ if category == "solid":
+ has_solid = true
+ if category == "gas":
+ has_gas = true
+ return has_solid and has_gas
+
+func combine(where, materials):
+ var w = build(where)
+ var mass = 0
+ var volume = 0
+ var color = Color(0.3,0.3,0.3)
+ var gas_mass = 0
+ var gas_volume = 0
+ var gas_color = Color(0.5,0.5,0.6,0.35)
+
+ for mat in materials:
+ var item = self.items.get(mat)
+ var category = self.items.category(mat)
+ if category == "solid":
+ mass += item.data["mass"]
+ #volume += item.data["volume"]
+ var s = item.data["color"]
+ color = color.blend(Color(s))
+
+ if category == "gas":
+ gas_mass += item.data["mass"]
+ gas_volume += item.data["volume"]
+ var s = item.data["color"]
+ gas_color = gas_color.blend(Color(s))
+
+ w.materials = materials
+ w.mass = mass
+ w.volume = volume
+ w.color = color
+ w.gas_mass = gas_mass
+ w.gas_volume = gas_volume
+ w.gas_color = gas_color
+ w.call_deferred("build")
+ return w