Reaction hidden
This commit is contained in:
parent
f0ee075f7a
commit
d4b50bdda0
12 changed files with 189 additions and 12 deletions
BIN
assets/textures/bubble.png
Normal file
BIN
assets/textures/bubble.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.9 KiB |
40
assets/textures/bubble.png.import
Normal file
40
assets/textures/bubble.png.import
Normal file
|
|
@ -0,0 +1,40 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://bkuxwtxum1r4x"
|
||||||
|
path="res://.godot/imported/bubble.png-a4e9df5e78917cd4475ee7b84b1534f0.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/textures/bubble.png"
|
||||||
|
dest_files=["res://.godot/imported/bubble.png-a4e9df5e78917cd4475ee7b84b1534f0.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=false
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=1
|
||||||
|
|
@ -3,7 +3,6 @@
|
||||||
name="Windows Desktop"
|
name="Windows Desktop"
|
||||||
platform="Windows Desktop"
|
platform="Windows Desktop"
|
||||||
runnable=true
|
runnable=true
|
||||||
advanced_options=false
|
|
||||||
dedicated_server=false
|
dedicated_server=false
|
||||||
custom_features=""
|
custom_features=""
|
||||||
export_filter="all_resources"
|
export_filter="all_resources"
|
||||||
|
|
@ -11,6 +10,11 @@ include_filter=""
|
||||||
exclude_filter=""
|
exclude_filter=""
|
||||||
export_path="exports/lab-electrolyte.exe"
|
export_path="exports/lab-electrolyte.exe"
|
||||||
patches=PackedStringArray()
|
patches=PackedStringArray()
|
||||||
|
patch_delta_encoding=false
|
||||||
|
patch_delta_compression_level_zstd=19
|
||||||
|
patch_delta_min_reduction=0.1
|
||||||
|
patch_delta_include_filters="*"
|
||||||
|
patch_delta_exclude_filters=""
|
||||||
encryption_include_filters=""
|
encryption_include_filters=""
|
||||||
encryption_exclude_filters=""
|
encryption_exclude_filters=""
|
||||||
seed=0
|
seed=0
|
||||||
|
|
@ -65,3 +69,50 @@ Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorActi
|
||||||
ssh_remote_deploy/cleanup_script="Stop-ScheduledTask -TaskName godot_remote_debug -ErrorAction:SilentlyContinue
|
ssh_remote_deploy/cleanup_script="Stop-ScheduledTask -TaskName godot_remote_debug -ErrorAction:SilentlyContinue
|
||||||
Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue
|
Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue
|
||||||
Remove-Item -Recurse -Force '{temp_dir}'"
|
Remove-Item -Recurse -Force '{temp_dir}'"
|
||||||
|
|
||||||
|
[preset.1]
|
||||||
|
|
||||||
|
name="Linux"
|
||||||
|
platform="Linux"
|
||||||
|
runnable=true
|
||||||
|
dedicated_server=false
|
||||||
|
custom_features=""
|
||||||
|
export_filter="all_resources"
|
||||||
|
include_filter=""
|
||||||
|
exclude_filter=""
|
||||||
|
export_path=""
|
||||||
|
patches=PackedStringArray()
|
||||||
|
patch_delta_encoding=false
|
||||||
|
patch_delta_compression_level_zstd=19
|
||||||
|
patch_delta_min_reduction=0.1
|
||||||
|
patch_delta_include_filters="*"
|
||||||
|
patch_delta_exclude_filters=""
|
||||||
|
encryption_include_filters=""
|
||||||
|
encryption_exclude_filters=""
|
||||||
|
seed=0
|
||||||
|
encrypt_pck=false
|
||||||
|
encrypt_directory=false
|
||||||
|
script_export_mode=2
|
||||||
|
|
||||||
|
[preset.1.options]
|
||||||
|
|
||||||
|
custom_template/debug=""
|
||||||
|
custom_template/release=""
|
||||||
|
debug/export_console_wrapper=1
|
||||||
|
binary_format/embed_pck=false
|
||||||
|
texture_format/s3tc_bptc=true
|
||||||
|
texture_format/etc2_astc=false
|
||||||
|
shader_baker/enabled=false
|
||||||
|
binary_format/architecture="x86_64"
|
||||||
|
ssh_remote_deploy/enabled=false
|
||||||
|
ssh_remote_deploy/host="user@host_ip"
|
||||||
|
ssh_remote_deploy/port="22"
|
||||||
|
ssh_remote_deploy/extra_args_ssh=""
|
||||||
|
ssh_remote_deploy/extra_args_scp=""
|
||||||
|
ssh_remote_deploy/run_script="#!/usr/bin/env bash
|
||||||
|
export DISPLAY=:0
|
||||||
|
unzip -o -q \"{temp_dir}/{archive_name}\" -d \"{temp_dir}\"
|
||||||
|
\"{temp_dir}/{exe_name}\" {cmd_args}"
|
||||||
|
ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash
|
||||||
|
pkill -x -f \"{temp_dir}/{exe_name} {cmd_args}\"
|
||||||
|
rm -rf \"{temp_dir}\""
|
||||||
|
|
|
||||||
4
note
Normal file
4
note
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
Каждый опыт должен быть изолирован, иметь свой логгер, свою рабочую зону
|
||||||
|
Добавить зону для текста с (возможно) зоной/кнопками для формул
|
||||||
|
Тесты должны быть вначале и пропускать студента
|
||||||
|
|
||||||
|
|
@ -3,6 +3,7 @@
|
||||||
[ext_resource type="Script" uid="uid://bjnv2g1ni0525" path="res://src/drag/draggable_object.gd" id="1_0xufn"]
|
[ext_resource type="Script" uid="uid://bjnv2g1ni0525" path="res://src/drag/draggable_object.gd" id="1_0xufn"]
|
||||||
[ext_resource type="Material" uid="uid://64m17act0kwu" path="res://assets/materials/mat_glass.tres" id="2_dbm1u"]
|
[ext_resource type="Material" uid="uid://64m17act0kwu" path="res://assets/materials/mat_glass.tres" id="2_dbm1u"]
|
||||||
[ext_resource type="Script" uid="uid://dig825r70a0sn" path="res://src/substance_display.gd" id="3_0xufn"]
|
[ext_resource type="Script" uid="uid://dig825r70a0sn" path="res://src/substance_display.gd" id="3_0xufn"]
|
||||||
|
[ext_resource type="Shader" uid="uid://djb4t6pw03tow" path="res://shaders/fluid.gdshader" id="4_ailwx"]
|
||||||
[ext_resource type="Script" uid="uid://bl0ojhc0thk1p" path="res://src/interactible/interactible.gd" id="4_dbm1u"]
|
[ext_resource type="Script" uid="uid://bl0ojhc0thk1p" path="res://src/interactible/interactible.gd" id="4_dbm1u"]
|
||||||
[ext_resource type="Texture2D" uid="uid://cw3jw8qbvj3fv" path="res://assets/textures/solid.png" id="4_h7awq"]
|
[ext_resource type="Texture2D" uid="uid://cw3jw8qbvj3fv" path="res://assets/textures/solid.png" id="4_h7awq"]
|
||||||
[ext_resource type="Script" uid="uid://duirfi4j26g2i" path="res://src/interactible/flask_interaction.gd" id="5_pmegg"]
|
[ext_resource type="Script" uid="uid://duirfi4j26g2i" path="res://src/interactible/flask_interaction.gd" id="5_pmegg"]
|
||||||
|
|
@ -46,9 +47,12 @@ _surfaces = [{
|
||||||
blend_shape_mode = 0
|
blend_shape_mode = 0
|
||||||
shadow_mesh = SubResource("ArrayMesh_1ouf4")
|
shadow_mesh = SubResource("ArrayMesh_1ouf4")
|
||||||
|
|
||||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ailwx"]
|
[sub_resource type="ShaderMaterial" id="ShaderMaterial_ailwx"]
|
||||||
resource_local_to_scene = true
|
resource_local_to_scene = true
|
||||||
transparency = 1
|
render_priority = 0
|
||||||
|
shader = ExtResource("4_ailwx")
|
||||||
|
shader_parameter/fill = 0.8999999798832
|
||||||
|
shader_parameter/wave_intensity = 0.0
|
||||||
|
|
||||||
[sub_resource type="CylinderMesh" id="CylinderMesh_h7awq"]
|
[sub_resource type="CylinderMesh" id="CylinderMesh_h7awq"]
|
||||||
top_radius = 0.772
|
top_radius = 0.772
|
||||||
|
|
@ -85,8 +89,7 @@ skeleton = NodePath("")
|
||||||
|
|
||||||
[node name="FillLiquid" type="MeshInstance3D" parent="Flash" unique_id=439339804]
|
[node name="FillLiquid" type="MeshInstance3D" parent="Flash" unique_id=439339804]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3.8061247, 0)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3.8061247, 0)
|
||||||
visible = false
|
material_override = SubResource("ShaderMaterial_ailwx")
|
||||||
material_override = SubResource("StandardMaterial3D_ailwx")
|
|
||||||
mesh = SubResource("CylinderMesh_h7awq")
|
mesh = SubResource("CylinderMesh_h7awq")
|
||||||
skeleton = NodePath("")
|
skeleton = NodePath("")
|
||||||
script = ExtResource("3_0xufn")
|
script = ExtResource("3_0xufn")
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
[gd_scene format=3 uid="uid://be746nxgkc5ay"]
|
[gd_scene format=3 uid="uid://be746nxgkc5ay"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://bosx1bhaka185" path="res://src/ui/questions_generator.gd" id="1_rdw2t"]
|
[ext_resource type="Script" uid="uid://bosx1bhaka185" path="res://src/ui/questions_generator.gd" id="1_rdw2t"]
|
||||||
|
[ext_resource type="Script" uid="uid://ckhrj43lyvorv" path="res://ui/questions_result.gd" id="2_8omho"]
|
||||||
|
|
||||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_faf07"]
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_faf07"]
|
||||||
content_margin_left = 0.0
|
content_margin_left = 0.0
|
||||||
|
|
@ -39,4 +40,44 @@ offset_right = 40.0
|
||||||
offset_bottom = 40.0
|
offset_bottom = 40.0
|
||||||
script = ExtResource("1_rdw2t")
|
script = ExtResource("1_rdw2t")
|
||||||
|
|
||||||
|
[node name="Result" type="Control" parent="." unique_id=717890506]
|
||||||
|
visible = false
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
mouse_filter = 2
|
||||||
|
script = ExtResource("2_8omho")
|
||||||
|
|
||||||
|
[node name="Label" type="Label" parent="Result" unique_id=979512538]
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = 8
|
||||||
|
anchor_left = 0.5
|
||||||
|
anchor_top = 0.5
|
||||||
|
anchor_right = 0.5
|
||||||
|
anchor_bottom = 0.5
|
||||||
|
offset_left = -20.0
|
||||||
|
offset_top = -11.5
|
||||||
|
offset_right = 20.0
|
||||||
|
offset_bottom = 11.5
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
|
||||||
|
[node name="TryAgain" type="Button" parent="Result" unique_id=472218266]
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = 7
|
||||||
|
anchor_left = 0.5
|
||||||
|
anchor_top = 1.0
|
||||||
|
anchor_right = 0.5
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
offset_left = -73.0
|
||||||
|
offset_top = -31.0
|
||||||
|
offset_right = 73.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 0
|
||||||
|
text = "Перепройти тест"
|
||||||
|
|
||||||
[connection signal="pressed" from="CloseButton" to="Questions" method="_on_close_button_pressed"]
|
[connection signal="pressed" from="CloseButton" to="Questions" method="_on_close_button_pressed"]
|
||||||
|
[connection signal="pressed" from="Result/TryAgain" to="Result" method="_on_try_again_pressed"]
|
||||||
|
|
|
||||||
25
shaders/fluid.gdshader
Normal file
25
shaders/fluid.gdshader
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
shader_type spatial;
|
||||||
|
|
||||||
|
render_mode cull_back, blend_mix;
|
||||||
|
|
||||||
|
uniform float fill: hint_range(0.0, 1.0, 0.01) = 0.;
|
||||||
|
uniform float wave_intensity: hint_range(0.0, 1.0, 0.01) = 0.;
|
||||||
|
|
||||||
|
const float MAX_AMPLITUDE = 0.1;
|
||||||
|
const float MAX_SPEED = 2.;
|
||||||
|
|
||||||
|
void vertex() {
|
||||||
|
if (VERTEX.y > 0.) {
|
||||||
|
VERTEX.y *= (fill - 0.5) * 2.;
|
||||||
|
VERTEX.y += sin((TIME+VERTEX.x+VERTEX.z)*wave_intensity*MAX_SPEED) * MAX_AMPLITUDE * wave_intensity;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void fragment() {
|
||||||
|
// Called for every pixel the material is visible on.
|
||||||
|
}
|
||||||
|
|
||||||
|
//void light() {
|
||||||
|
// // Called for every pixel for every light affecting the material.
|
||||||
|
// // Uncomment to replace the default light processing function with this one.
|
||||||
|
//}
|
||||||
1
shaders/fluid.gdshader.uid
Normal file
1
shaders/fluid.gdshader.uid
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
uid://djb4t6pw03tow
|
||||||
|
|
@ -3,6 +3,7 @@ extends Node
|
||||||
class_name Inventory
|
class_name Inventory
|
||||||
|
|
||||||
@export var open_on_top: bool
|
@export var open_on_top: bool
|
||||||
|
@export var capacity: float = 10.
|
||||||
var inventory: Dictionary[StringName,RuntimeSubstanceData]
|
var inventory: Dictionary[StringName,RuntimeSubstanceData]
|
||||||
|
|
||||||
var mean_temperature: float:
|
var mean_temperature: float:
|
||||||
|
|
@ -177,4 +178,4 @@ func check_for_reactions() -> void:
|
||||||
recalculate_temperature()
|
recalculate_temperature()
|
||||||
update_solutions()
|
update_solutions()
|
||||||
inventory_changed.emit(inventory.values())
|
inventory_changed.emit(inventory.values())
|
||||||
GuiSignalBus.push("Произошла реакция: " + found_reaction.formula())
|
GuiSignalBus.push("Произошла реакция")
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
@tool
|
||||||
extends MeshInstance3D
|
extends MeshInstance3D
|
||||||
|
|
||||||
enum DisplayType{
|
enum DisplayType{
|
||||||
|
|
@ -6,6 +7,10 @@ enum DisplayType{
|
||||||
}
|
}
|
||||||
|
|
||||||
@export var display_type: DisplayType
|
@export var display_type: DisplayType
|
||||||
|
@export_tool_button("Wiggle") var wiggle = func() -> void:
|
||||||
|
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)
|
||||||
|
|
||||||
func update_material(substances: Array[RuntimeSubstanceData]) -> void:
|
func update_material(substances: Array[RuntimeSubstanceData]) -> void:
|
||||||
var mat: StandardMaterial3D = material_override
|
var mat: StandardMaterial3D = material_override
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ func _on_tab_clicked(tab: int) -> void:
|
||||||
GuiSignalBus.clear_table.emit()
|
GuiSignalBus.clear_table.emit()
|
||||||
|
|
||||||
func _process(_delta: float) -> void:
|
func _process(_delta: float) -> void:
|
||||||
var anwsered = LabRuntime.questions_anwsered()
|
var anwsered = LabRuntime.test_failed()
|
||||||
set_tab_disabled(0,anwsered)
|
set_tab_disabled(0,anwsered)
|
||||||
set_tab_disabled(2,anwsered)
|
set_tab_disabled(2,anwsered)
|
||||||
set_tab_disabled(3,anwsered)
|
set_tab_disabled(3,anwsered)
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,13 @@ extends Control
|
||||||
var current: int = -1
|
var current: int = -1
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
for question in LabRuntime.current_lab.tests:
|
shuffle_questions()
|
||||||
|
|
||||||
|
func shuffle_questions() -> void:
|
||||||
|
var questions = LabRuntime.current_lab.tests.duplicate()
|
||||||
|
questions.shuffle()
|
||||||
|
questions.resize(5)
|
||||||
|
for question in questions:
|
||||||
var options = question.options.duplicate()
|
var options = question.options.duplicate()
|
||||||
options.shuffle()
|
options.shuffle()
|
||||||
var vbox = VBoxContainer.new()
|
var vbox = VBoxContainer.new()
|
||||||
|
|
@ -20,7 +26,6 @@ func _ready() -> void:
|
||||||
add_child(vbox)
|
add_child(vbox)
|
||||||
next()
|
next()
|
||||||
|
|
||||||
|
|
||||||
func _on_close_button_pressed() -> void:
|
func _on_close_button_pressed() -> void:
|
||||||
get_parent().visible = false
|
get_parent().visible = false
|
||||||
|
|
||||||
|
|
@ -30,9 +35,10 @@ func next() -> void:
|
||||||
current += 1
|
current += 1
|
||||||
get_child(current).visible = true
|
get_child(current).visible = true
|
||||||
else:
|
else:
|
||||||
get_parent().visible = false
|
visible = false
|
||||||
|
$"../Result".visible = true
|
||||||
|
LabRuntime.tries += 1
|
||||||
|
|
||||||
func anwser(option_number: int,correctness: bool):
|
func anwser(option_number: int,correctness: bool):
|
||||||
LabRuntime.anwsers.append(option_number)
|
LabRuntime.anwsers.append(option_number)
|
||||||
LabRuntime.correctness.append(correctness)
|
LabRuntime.correctness.append(correctness)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue