diff --git a/assets/substances/CH3COONa.tres b/assets/substances/CH3COONa.tres index 8c98715..4e66ff9 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,9 @@ 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) +is_solution = true metadata/_custom_type_script = "uid://b8q5buwgvppyh" diff --git a/assets/substances/NH4CL.tres b/assets/substances/NH4CL.tres index 0bc85b2..8c61151 100644 --- a/assets/substances/NH4CL.tres +++ b/assets/substances/NH4CL.tres @@ -1,12 +1,17 @@ -[gd_resource type="Resource" script_class="Substance" load_steps=2 format=3 uid="uid://b0pdv8e1ybr8h"] +[gd_resource type="Resource" script_class="Substance" load_steps=3 format=3 uid="uid://b0pdv8e1ybr8h"] [ext_resource type="Script" uid="uid://b8q5buwgvppyh" path="res://src/resources/substance.gd" id="1_r754y"] +[ext_resource type="Resource" uid="uid://b2iqhriy265ik" path="res://assets/substances/NH4OH.tres" id="2_p1wre"] [resource] script = ExtResource("1_r754y") formula = &"NH_4Cl" -scientific_name = &"Соляная кислота" +scientific_name = &"Хлорид аммония" melting_point = 337.6 boiling_point = 520.0 +pHIonicOverrides = Dictionary[ExtResource("1_r754y"), float]({ +ExtResource("2_p1wre"): -5.0 +}) color = Color(1, 1, 1, 1) +is_solution = true metadata/_custom_type_script = "uid://b8q5buwgvppyh" diff --git a/assets/substances/NH4OH.tres b/assets/substances/NH4OH.tres new file mode 100644 index 0000000..cdfc164 --- /dev/null +++ b/assets/substances/NH4OH.tres @@ -0,0 +1,13 @@ +[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") +formula = &"NH4OH" +scientific_name = &"Аммиачная вода" +melting_point = -100.0 +boiling_point = 10000000000.0 +pH = 12.0 +color = Color(1, 1, 1, 1) +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