Small fixes
This commit is contained in:
parent
1c7e6cf814
commit
1e3ed6a55d
11 changed files with 92 additions and 12 deletions
|
|
@ -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://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"]
|
[ext_resource type="Script" uid="uid://dwks86y6383p4" path="res://src/resources/reaction.gd" id="2_bwaxw"]
|
||||||
|
|
|
||||||
45
assets/reactions/na2co3_p_hcl.tres
Normal file
45
assets/reactions/na2co3_p_hcl.tres
Normal 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"
|
||||||
13
assets/substances/CO2.tres
Normal file
13
assets/substances/CO2.tres
Normal 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"
|
||||||
|
|
@ -2,17 +2,16 @@ extends GPUParticles3D
|
||||||
|
|
||||||
|
|
||||||
@export var inventory: Inventory
|
@export var inventory: Inventory
|
||||||
@export var particles: GPUParticles3D
|
|
||||||
var tween: Tween
|
var tween: Tween
|
||||||
|
|
||||||
func _on_inventory_reacted_with_gasses(gasses: Array[RuntimeSubstanceData]) -> void:
|
func _on_inventory_reacted_with_gasses(gasses: Array[RuntimeSubstanceData]) -> void:
|
||||||
if tween:
|
if tween:
|
||||||
tween.kill()
|
tween.kill()
|
||||||
tween = create_tween()
|
tween = create_tween()
|
||||||
particles.emitting = true
|
emitting = true
|
||||||
tween.tween_interval(2.)
|
tween.tween_interval(2.)
|
||||||
tween.tween_callback(func():
|
tween.tween_callback(func():
|
||||||
particles.emitting = false
|
emitting = false
|
||||||
for gas in gasses:
|
for gas in gasses:
|
||||||
inventory.extract_substance(gas.substance.get_formula(),gas.amount)
|
inventory.extract_substance(gas.substance.get_formula(),gas.amount)
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -76,17 +76,26 @@ bottom_radius = 0.772
|
||||||
radial_segments = 16
|
radial_segments = 16
|
||||||
rings = 0
|
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"]
|
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_u7u8q"]
|
||||||
emission_shape_scale = Vector3(0.755, 0.93, 0.755)
|
emission_shape_scale = Vector3(0.755, 0.93, 0.755)
|
||||||
emission_shape = 1
|
emission_shape = 1
|
||||||
emission_sphere_radius = 1.0
|
emission_sphere_radius = 1.0
|
||||||
gravity = Vector3(0, 1, 0)
|
gravity = Vector3(0, 1, 0)
|
||||||
|
alpha_curve = SubResource("CurveTexture_aukgj")
|
||||||
collision_mode = 1
|
collision_mode = 1
|
||||||
collision_friction = 0.0
|
collision_friction = 0.0
|
||||||
collision_bounce = 0.0
|
collision_bounce = 0.0
|
||||||
|
|
||||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_t5c10"]
|
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_t5c10"]
|
||||||
transparency = 1
|
transparency = 1
|
||||||
|
vertex_color_use_as_albedo = true
|
||||||
albedo_texture = ExtResource("6_rqua0")
|
albedo_texture = ExtResource("6_rqua0")
|
||||||
billboard_mode = 1
|
billboard_mode = 1
|
||||||
|
|
||||||
|
|
@ -127,16 +136,19 @@ script = ExtResource("3_0xufn")
|
||||||
display_type = 1
|
display_type = 1
|
||||||
|
|
||||||
[node name="GPUParticlesCollisionBox3D" type="GPUParticlesCollisionBox3D" parent="Flash" unique_id=330053589]
|
[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)
|
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
|
emitting = false
|
||||||
|
amount = 16
|
||||||
lifetime = 3.0
|
lifetime = 3.0
|
||||||
|
speed_scale = 3.0
|
||||||
local_coords = true
|
local_coords = true
|
||||||
process_material = SubResource("ParticleProcessMaterial_u7u8q")
|
process_material = SubResource("ParticleProcessMaterial_u7u8q")
|
||||||
draw_pass_1 = SubResource("QuadMesh_iuc1c")
|
draw_pass_1 = SubResource("QuadMesh_iuc1c")
|
||||||
script = ExtResource("7_wadb5")
|
script = ExtResource("7_wadb5")
|
||||||
|
inventory = NodePath("../../Inventory")
|
||||||
|
|
||||||
[node name="Inventory" type="Node" parent="." unique_id=1748297338]
|
[node name="Inventory" type="Node" parent="." unique_id=1748297338]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
|
|
|
||||||
|
|
@ -50,10 +50,14 @@ offset_bottom = 40.0
|
||||||
[node name="ProgressBar" type="HSlider" parent="Interaction/HBoxContainer" unique_id=1037338095]
|
[node name="ProgressBar" type="HSlider" parent="Interaction/HBoxContainer" unique_id=1037338095]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
|
max_value = 10.0
|
||||||
|
step = 0.5
|
||||||
allow_greater = true
|
allow_greater = true
|
||||||
|
|
||||||
[node name="SpinBox" type="SpinBox" parent="Interaction/HBoxContainer" unique_id=194740698]
|
[node name="SpinBox" type="SpinBox" parent="Interaction/HBoxContainer" unique_id=194740698]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
max_value = 10.0
|
||||||
|
step = 0.5
|
||||||
allow_greater = true
|
allow_greater = true
|
||||||
suffix = "мл."
|
suffix = "мл."
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -27,8 +27,8 @@ grow_vertical = 2
|
||||||
|
|
||||||
[node name="TabBar" parent="HSplitContainer" unique_id=877427232 instance=ExtResource("1_p7vwb")]
|
[node name="TabBar" parent="HSplitContainer" unique_id=877427232 instance=ExtResource("1_p7vwb")]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
tab_count = 3
|
|
||||||
tab_2/title = "Завершить отчёт"
|
tab_2/title = "Завершить отчёт"
|
||||||
|
tab_3/title = "Очистить стол"
|
||||||
|
|
||||||
[node name="InspectorPanel" type="PanelContainer" parent="HSplitContainer" unique_id=918152974]
|
[node name="InspectorPanel" type="PanelContainer" parent="HSplitContainer" unique_id=918152974]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
|
|
||||||
|
|
@ -199,7 +199,7 @@ func find_gases() -> Array[RuntimeSubstanceData]:
|
||||||
return gasses
|
return gasses
|
||||||
|
|
||||||
func find_odor() -> Array[RuntimeSubstanceData]:
|
func find_odor() -> Array[RuntimeSubstanceData]:
|
||||||
var result = []
|
var result: Array[RuntimeSubstanceData] = []
|
||||||
for key in inventory:
|
for key in inventory:
|
||||||
if inventory[key].substance in [preload("res://assets/substances/CH3COOH.tres")]:
|
if inventory[key].substance in [preload("res://assets/substances/CH3COOH.tres")]:
|
||||||
result.push_back(inventory[key])
|
result.push_back(inventory[key])
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
@tool
|
||||||
extends Node
|
extends Node
|
||||||
|
|
||||||
const LAB_PREFAB: PackedScene = preload("uid://c7r4rhgj3ucao")
|
const LAB_PREFAB: PackedScene = preload("uid://c7r4rhgj3ucao")
|
||||||
|
|
@ -7,12 +8,18 @@ var current_lab: Labwork
|
||||||
var anwsers: Array[int]
|
var anwsers: Array[int]
|
||||||
var correctness: Array[bool]
|
var correctness: Array[bool]
|
||||||
var tries: int
|
var tries: int
|
||||||
|
var debug_correct: bool
|
||||||
|
|
||||||
|
@export_tool_button("Complete test") var complete_test = force_correct
|
||||||
|
|
||||||
func questions_anwsered() -> bool:
|
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:
|
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():
|
func save():
|
||||||
var path: String = OS.get_system_dir(OS.SYSTEM_DIR_DESKTOP) + "/" + current_lab.lab_name + "-" + Time.get_datetime_string_from_system() + ".txt"
|
var path: String = OS.get_system_dir(OS.SYSTEM_DIR_DESKTOP) + "/" + current_lab.lab_name + "-" + Time.get_datetime_string_from_system() + ".txt"
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ class_name Substance
|
||||||
@export var color: Color
|
@export var color: Color
|
||||||
@export var pHColor: Gradient
|
@export var pHColor: Gradient
|
||||||
@export var prefer_scientific_name: bool
|
@export var prefer_scientific_name: bool
|
||||||
@export var is_solution: bool
|
@export var is_solution: bool = true
|
||||||
|
|
||||||
func get_formula() -> StringName:
|
func get_formula() -> StringName:
|
||||||
return scientific_name if prefer_scientific_name else formula
|
return scientific_name if prefer_scientific_name else formula
|
||||||
|
|
|
||||||
|
|
@ -106,5 +106,5 @@ func update_material_unfiltered(substances: Array[RuntimeSubstanceData],capacity
|
||||||
var solids = substances.filter(filter_solids)
|
var solids = substances.filter(filter_solids)
|
||||||
update_solid_material(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
|
func filter_solids(sub: RuntimeSubstanceData): return sub.substance.melting_point > sub.temperature and not sub.is_solution
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue