diff --git a/assets/substances/CH3COONa.tres b/assets/substances/CH3COONa.tres index 8c98715..ebcd6c1 100644 --- a/assets/substances/CH3COONa.tres +++ b/assets/substances/CH3COONa.tres @@ -1,6 +1,7 @@ -[gd_resource type="Resource" script_class="Substance" load_steps=2 format=3 uid="uid://dr65qbkum4emy"] +[gd_resource type="Resource" script_class="Substance" load_steps=3 format=3 uid="uid://dr65qbkum4emy"] [ext_resource type="Script" uid="uid://b8q5buwgvppyh" path="res://src/resources/substance.gd" id="1_551qc"] +[ext_resource type="Resource" uid="uid://dn10p6rbdd7qb" path="res://assets/substances/CH3COOH.tres" id="2_2qskh"] [resource] script = ExtResource("1_551qc") @@ -8,5 +9,8 @@ formula = &"CH_3COONa" scientific_name = &"Ацетат натрия" melting_point = 328.0 boiling_point = 9999999999.0 +pHIonicOverrides = Dictionary[ExtResource("1_551qc"), float]({ +ExtResource("2_2qskh"): 4.8 +}) color = Color(1, 1, 1, 1) metadata/_custom_type_script = "uid://b8q5buwgvppyh" diff --git a/assets/substances/NH4OH.tres b/assets/substances/NH4OH.tres new file mode 100644 index 0000000..9302418 --- /dev/null +++ b/assets/substances/NH4OH.tres @@ -0,0 +1,7 @@ +[gd_resource type="Resource" script_class="Substance" load_steps=2 format=3 uid="uid://b2iqhriy265ik"] + +[ext_resource type="Script" uid="uid://b8q5buwgvppyh" path="res://src/resources/substance.gd" id="1_ctlfr"] + +[resource] +script = ExtResource("1_ctlfr") +metadata/_custom_type_script = "uid://b8q5buwgvppyh" diff --git a/export_presets.cfg b/export_presets.cfg index 863fad4..dfee77a 100644 --- a/export_presets.cfg +++ b/export_presets.cfg @@ -23,7 +23,7 @@ script_export_mode=2 custom_template/debug="" custom_template/release="" debug/export_console_wrapper=1 -binary_format/embed_pck=true +binary_format/embed_pck=false texture_format/s3tc_bptc=true texture_format/etc2_astc=false shader_baker/enabled=false diff --git a/exports/lab-electrolyte.exe b/exports/lab-electrolyte.exe index 16fce76..2b32d02 100644 Binary files a/exports/lab-electrolyte.exe and b/exports/lab-electrolyte.exe differ diff --git a/exports/lab-electrolyte.pck b/exports/lab-electrolyte.pck new file mode 100644 index 0000000..c412ce2 Binary files /dev/null and b/exports/lab-electrolyte.pck differ diff --git a/exports/lab.zip b/exports/lab.zip new file mode 100644 index 0000000..b71e7c4 Binary files /dev/null and b/exports/lab.zip differ diff --git a/exports/test.zip b/exports/test.zip deleted file mode 100644 index c035e75..0000000 Binary files a/exports/test.zip and /dev/null differ diff --git a/src/resources/substance.gd b/src/resources/substance.gd index 3b79e47..019ae8a 100644 --- a/src/resources/substance.gd +++ b/src/resources/substance.gd @@ -8,6 +8,7 @@ class_name Substance @export var boiling_point: float @export var liquid_transparency: float = 0.5 @export var pH: float = 7.0 +@export var pHIonicOverrides: Dictionary[Substance,float] @export var color: Color @export var pHColor: Gradient @export var prefer_scientific_name: bool @@ -15,3 +16,31 @@ class_name Substance func get_formula() -> StringName: return scientific_name if prefer_scientific_name else formula + +func get_ph(context: Array[Substance]): + var overriden_value: float = 0 + var overrides: int = 0 + + for sub in context: + if pHIonicOverrides.has(sub): + overriden_value += pHIonicOverrides[sub] + overrides += 1 + + if overrides > 0: + return overriden_value / overrides + else: + return pH + +func get_ph_runtime(context: Array[RuntimeSubstanceData]): + var overriden_value: float = 0 + var overrides: int = 0 + + for sub in context: + if pHIonicOverrides.has(sub.substance): + overriden_value += pHIonicOverrides[sub.substance] + overrides += 1 + + if overrides > 0: + return overriden_value / overrides + else: + return pH diff --git a/src/substance_display.gd b/src/substance_display.gd index 38a9376..c1d0f95 100644 --- a/src/substance_display.gd +++ b/src/substance_display.gd @@ -26,7 +26,7 @@ func update_material(substances: Array[RuntimeSubstanceData]) -> void: for sub: RuntimeSubstanceData in substances: var weight: float = sub.amount/total_weight - pH += sub.substance.pH * weight + pH += sub.substance.get_ph_runtime(substances) * weight for sub: RuntimeSubstanceData in substances: var weight: float = sub.amount/total_weight