Small fixes

This commit is contained in:
Rendo 2026-07-01 09:42:21 +05:00
commit 1e3ed6a55d
11 changed files with 92 additions and 12 deletions

View file

@ -1,4 +1,4 @@
[gd_resource type="Resource" script_class="Reaction" load_steps=11 format=3 uid="uid://b4x586j255rh7"]
[gd_resource type="Resource" script_class="Reaction" format=3 uid="uid://b4x586j255rh7"]
[ext_resource type="Script" uid="uid://bb8o8l6u6fiai" path="res://src/resources/reaction_substance.gd" id="1_q3co2"]
[ext_resource type="Script" uid="uid://dwks86y6383p4" path="res://src/resources/reaction.gd" id="2_bwaxw"]

View file

@ -0,0 +1,45 @@
[gd_resource type="Resource" script_class="Reaction" format=3 uid="uid://bpkydu1iy7ps"]
[ext_resource type="Script" uid="uid://bb8o8l6u6fiai" path="res://src/resources/reaction_substance.gd" id="1_lk0fm"]
[ext_resource type="Resource" uid="uid://df17c818irsju" path="res://assets/substances/Na2CO3.tres" id="2_xd3oy"]
[ext_resource type="Resource" uid="uid://bj3cdfwvgksee" path="res://assets/substances/HCl.tres" id="3_lk0fm"]
[ext_resource type="Resource" uid="uid://chdrv5i45chwe" path="res://assets/substances/NaCl.tres" id="5_x63nk"]
[ext_resource type="Resource" uid="uid://dp0e62nxlnaeg" path="res://assets/substances/H2O.tres" id="5_xd3oy"]
[ext_resource type="Resource" uid="uid://dk604b5skdxn1" path="res://assets/substances/CO2.tres" id="6_xd3oy"]
[ext_resource type="Script" uid="uid://dwks86y6383p4" path="res://src/resources/reaction.gd" id="6_yn22r"]
[sub_resource type="Resource" id="Resource_qs4v7"]
script = ExtResource("1_lk0fm")
coefficient = 1
substance = ExtResource("2_xd3oy")
metadata/_custom_type_script = "uid://bb8o8l6u6fiai"
[sub_resource type="Resource" id="Resource_5wjtx"]
script = ExtResource("1_lk0fm")
coefficient = 2
substance = ExtResource("3_lk0fm")
metadata/_custom_type_script = "uid://bb8o8l6u6fiai"
[sub_resource type="Resource" id="Resource_i3fna"]
script = ExtResource("1_lk0fm")
coefficient = 2
substance = ExtResource("5_x63nk")
metadata/_custom_type_script = "uid://bb8o8l6u6fiai"
[sub_resource type="Resource" id="Resource_b2l6v"]
script = ExtResource("1_lk0fm")
coefficient = 1
substance = ExtResource("5_xd3oy")
metadata/_custom_type_script = "uid://bb8o8l6u6fiai"
[sub_resource type="Resource" id="Resource_nnkfn"]
script = ExtResource("1_lk0fm")
coefficient = 1
substance = ExtResource("6_xd3oy")
metadata/_custom_type_script = "uid://bb8o8l6u6fiai"
[resource]
script = ExtResource("6_yn22r")
input_substances = Array[ExtResource("1_lk0fm")]([SubResource("Resource_qs4v7"), SubResource("Resource_5wjtx")])
output_substances = Array[ExtResource("1_lk0fm")]([SubResource("Resource_i3fna"), SubResource("Resource_b2l6v"), SubResource("Resource_nnkfn")])
metadata/_custom_type_script = "uid://dwks86y6383p4"

View file

@ -0,0 +1,13 @@
[gd_resource type="Resource" script_class="Substance" format=3 uid="uid://dk604b5skdxn1"]
[ext_resource type="Script" uid="uid://b8q5buwgvppyh" path="res://src/resources/substance.gd" id="1_qyshc"]
[resource]
script = ExtResource("1_qyshc")
formula = &"CO2"
scientific_name = &"Углекислый газ"
melting_point = -79.0
boiling_point = -79.0
prefer_scientific_name = true
is_solution = false
metadata/_custom_type_script = "uid://b8q5buwgvppyh"

View file

@ -2,17 +2,16 @@ extends GPUParticles3D
@export var inventory: Inventory
@export var particles: GPUParticles3D
var tween: Tween
func _on_inventory_reacted_with_gasses(gasses: Array[RuntimeSubstanceData]) -> void:
if tween:
tween.kill()
tween = create_tween()
particles.emitting = true
emitting = true
tween.tween_interval(2.)
tween.tween_callback(func():
particles.emitting = false
emitting = false
for gas in gasses:
inventory.extract_substance(gas.substance.get_formula(),gas.amount)
)

View file

@ -76,17 +76,26 @@ bottom_radius = 0.772
radial_segments = 16
rings = 0
[sub_resource type="Curve" id="Curve_tvmew"]
_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(0.8611111, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
point_count = 3
[sub_resource type="CurveTexture" id="CurveTexture_aukgj"]
curve = SubResource("Curve_tvmew")
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_u7u8q"]
emission_shape_scale = Vector3(0.755, 0.93, 0.755)
emission_shape = 1
emission_sphere_radius = 1.0
gravity = Vector3(0, 1, 0)
alpha_curve = SubResource("CurveTexture_aukgj")
collision_mode = 1
collision_friction = 0.0
collision_bounce = 0.0
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_t5c10"]
transparency = 1
vertex_color_use_as_albedo = true
albedo_texture = ExtResource("6_rqua0")
billboard_mode = 1
@ -127,16 +136,19 @@ script = ExtResource("3_0xufn")
display_type = 1
[node name="GPUParticlesCollisionBox3D" type="GPUParticlesCollisionBox3D" parent="Flash" unique_id=330053589]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5932534, 0)
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.593, 0)
size = Vector3(2.7734375, 1.1738281, 3.2333984)
[node name="GPUParticles3D" type="GPUParticles3D" parent="Flash" unique_id=2054685714]
[node name="GPUParticles3D" type="GPUParticles3D" parent="Flash" unique_id=2054685714 node_paths=PackedStringArray("inventory")]
emitting = false
amount = 16
lifetime = 3.0
speed_scale = 3.0
local_coords = true
process_material = SubResource("ParticleProcessMaterial_u7u8q")
draw_pass_1 = SubResource("QuadMesh_iuc1c")
script = ExtResource("7_wadb5")
inventory = NodePath("../../Inventory")
[node name="Inventory" type="Node" parent="." unique_id=1748297338]
unique_name_in_owner = true

View file

@ -50,10 +50,14 @@ offset_bottom = 40.0
[node name="ProgressBar" type="HSlider" parent="Interaction/HBoxContainer" unique_id=1037338095]
layout_mode = 2
size_flags_horizontal = 3
max_value = 10.0
step = 0.5
allow_greater = true
[node name="SpinBox" type="SpinBox" parent="Interaction/HBoxContainer" unique_id=194740698]
layout_mode = 2
max_value = 10.0
step = 0.5
allow_greater = true
suffix = "мл."

View file

@ -27,8 +27,8 @@ grow_vertical = 2
[node name="TabBar" parent="HSplitContainer" unique_id=877427232 instance=ExtResource("1_p7vwb")]
layout_mode = 2
tab_count = 3
tab_2/title = "Завершить отчёт"
tab_3/title = "Очистить стол"
[node name="InspectorPanel" type="PanelContainer" parent="HSplitContainer" unique_id=918152974]
layout_mode = 2

View file

@ -199,7 +199,7 @@ func find_gases() -> Array[RuntimeSubstanceData]:
return gasses
func find_odor() -> Array[RuntimeSubstanceData]:
var result = []
var result: Array[RuntimeSubstanceData] = []
for key in inventory:
if inventory[key].substance in [preload("res://assets/substances/CH3COOH.tres")]:
result.push_back(inventory[key])

View file

@ -1,3 +1,4 @@
@tool
extends Node
const LAB_PREFAB: PackedScene = preload("uid://c7r4rhgj3ucao")
@ -7,12 +8,18 @@ var current_lab: Labwork
var anwsers: Array[int]
var correctness: Array[bool]
var tries: int
var debug_correct: bool
@export_tool_button("Complete test") var complete_test = force_correct
func questions_anwsered() -> bool:
return float(correctness.count(true))/len(correctness) >= 0.6
return float(correctness.count(true))/len(correctness) >= 0.6 or debug_correct
func test_failed() -> bool:
return float(correctness.count(true))/len(correctness) < 0.6
return float(correctness.count(true))/len(correctness) < 0.6 and not debug_correct
func force_correct() -> void:
debug_correct = true
func save():
var path: String = OS.get_system_dir(OS.SYSTEM_DIR_DESKTOP) + "/" + current_lab.lab_name + "-" + Time.get_datetime_string_from_system() + ".txt"

View file

@ -12,7 +12,7 @@ class_name Substance
@export var color: Color
@export var pHColor: Gradient
@export var prefer_scientific_name: bool
@export var is_solution: bool
@export var is_solution: bool = true
func get_formula() -> StringName:
return scientific_name if prefer_scientific_name else formula

View file

@ -106,5 +106,5 @@ func update_material_unfiltered(substances: Array[RuntimeSubstanceData],capacity
var solids = substances.filter(filter_solids)
update_solid_material(solids)
func filter_liquids(sub: RuntimeSubstanceData): return sub.substance.melting_point < sub.temperature or sub.is_solution
func filter_liquids(sub: RuntimeSubstanceData): return sub.substance.melting_point < sub.temperature and sub.substance.boiling_point > sub.temperature or sub.is_solution
func filter_solids(sub: RuntimeSubstanceData): return sub.substance.melting_point > sub.temperature and not sub.is_solution