This commit is contained in:
Rendo 2026-06-29 00:20:57 +05:00
commit 49b09b9bb8
9 changed files with 77 additions and 12 deletions

View file

@ -23,6 +23,7 @@ var total_amount: float:
return result
signal inventory_changed(substances: Array[RuntimeSubstanceData], capacity: float)
signal reacted_with_gasses(gasses: Array[RuntimeSubstanceData])
signal temperature_changed(to: float)
func _ready() -> void:
@ -179,15 +180,23 @@ func check_for_reactions() -> void:
add_substance_no_callback(data)
check_for_reactions()
recalculate_temperature()
var gasses = find_gases()
if gasses != []:
reacted_with_gasses.emit(gasses)
update_solutions()
inventory_changed.emit(inventory.values(),capacity)
GuiSignalBus.push("Произошла реакция")
if len(find_odor()) > 0:
GuiSignalBus.push("Появился запах")
#func find_gases() -> Array[RuntimeSubstanceData]:
# for key in inventory:
# if inventory[key].substance in [preload("H")]
func find_gases() -> Array[RuntimeSubstanceData]:
var gasses: Array[RuntimeSubstanceData] = []
for key in inventory:
if inventory[key].substance.boiling_point < mean_temperature:
gasses.append(inventory[key])
return gasses
func find_odor() -> Array[RuntimeSubstanceData]:
var result = []

View file

@ -11,6 +11,7 @@ enum DisplayType{
var tween = create_tween()
material_override.set_shader_parameter("wave_intensity",1.)
tween.tween_property(material_override,"shader_parameter/wave_intensity",0.0,2.0)
@export var particle_collision: GPUParticlesCollisionBox3D
func update_fluid_material(substances: Array[RuntimeSubstanceData],capacity: float) -> void:
var mat: ShaderMaterial = material_override
@ -53,6 +54,7 @@ func update_fluid_material(substances: Array[RuntimeSubstanceData],capacity: flo
mat.set_shader_parameter("albedo_color", color / total_color)
mat.set_shader_parameter("fill",total_weight/capacity)
particle_collision.position.y = + particle_collision.size.y/2 + position.y - 4 + 8 * total_weight/capacity
func update_solid_material(substances: Array[RuntimeSubstanceData]) -> void:
var mat: StandardMaterial3D = material_override