46 lines
1.1 KiB
GDScript
46 lines
1.1 KiB
GDScript
extends Resource
|
|
|
|
class_name Substance
|
|
|
|
@export var formula: StringName
|
|
@export var scientific_name: StringName
|
|
@export var melting_point: float
|
|
@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
|
|
@export var is_solution: bool
|
|
|
|
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
|