Save
This commit is contained in:
parent
e1e7c70147
commit
309bbcac5e
12 changed files with 57 additions and 9 deletions
|
|
@ -23,6 +23,7 @@ config/icon="res://icon.svg"
|
||||||
|
|
||||||
GuiSignalBus="*res://src/gui_signal_bus.gd"
|
GuiSignalBus="*res://src/gui_signal_bus.gd"
|
||||||
ReactionRegistry="*res://src/reaction_registry.gd"
|
ReactionRegistry="*res://src/reaction_registry.gd"
|
||||||
|
LabRuntime="*uid://b00hrs2a68cpp"
|
||||||
|
|
||||||
[global_group]
|
[global_group]
|
||||||
|
|
||||||
|
|
|
||||||
9
scenes/lab_menu.tscn
Normal file
9
scenes/lab_menu.tscn
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
[gd_scene format=3 uid="uid://c2ciwyjf7au6l"]
|
||||||
|
|
||||||
|
[node name="LabMenu" type="Control" unique_id=198999369]
|
||||||
|
layout_mode = 3
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
|
@ -3,7 +3,7 @@ extends Node
|
||||||
const dnd_button = preload("res://scenes/drag_and_drop.tscn")
|
const dnd_button = preload("res://scenes/drag_and_drop.tscn")
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
for tool in ReactionRegistry.current_lab.tools:
|
for tool in LabRuntime.current_lab.tools:
|
||||||
var button = dnd_button.instantiate()
|
var button = dnd_button.instantiate()
|
||||||
button.draggable = tool
|
button.draggable = tool
|
||||||
button.text = tool.text
|
button.text = tool.text
|
||||||
|
|
|
||||||
26
src/lab_runtime.gd
Normal file
26
src/lab_runtime.gd
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
extends Node
|
||||||
|
|
||||||
|
var current_lab: Labwork = preload("res://labs/lab-electrolyte.tres")
|
||||||
|
var anwsers: Array[int]
|
||||||
|
|
||||||
|
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 file = FileAccess.open(path,FileAccess.WRITE)
|
||||||
|
file.store_line("Ответы:")
|
||||||
|
for i in range(len(current_lab.tests)):
|
||||||
|
file.store_string(("№"+str(i)).lpad(10))
|
||||||
|
file.store_line("")
|
||||||
|
for i in range(len(current_lab.tests)):
|
||||||
|
if len(anwsers) <= i:
|
||||||
|
file.store_string("Не дан".lpad(10))
|
||||||
|
else:
|
||||||
|
file.store_string(str(anwsers[i]).lpad(10))
|
||||||
|
file.store_line("")
|
||||||
|
for i in range(len(current_lab.tests)):
|
||||||
|
if len(anwsers) <= i:
|
||||||
|
file.store_string("-".lpad(10))
|
||||||
|
else:
|
||||||
|
file.store_string(("+" if anwsers[i] == current_lab.tests[i].correct_anwser else "-").lpad(10))
|
||||||
|
file.store_line("")
|
||||||
|
file.store_line("Ход работы:")
|
||||||
|
file.store_string(LabLogger.instance.text)
|
||||||
1
src/lab_runtime.gd.uid
Normal file
1
src/lab_runtime.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
uid://b00hrs2a68cpp
|
||||||
|
|
@ -4,7 +4,7 @@ const REACTIONS_DIRECTORY = "res://assets/reactions/"
|
||||||
|
|
||||||
@export var water_soluable: Array[Substance] = [preload("res://assets/substances/AgNO3.tres"),preload("res://assets/substances/CaCl.tres"),preload("res://assets/substances/CaCO3.tres"),preload("res://assets/substances/CH3COONa.tres"),preload("res://assets/substances/CuSO4.tres"),preload("res://assets/substances/FeSO4.tres"),preload("res://assets/substances/KCl.tres"),preload("res://assets/substances/KI.tres"),preload("res://assets/substances/KNO3.tres"),preload("res://assets/substances/LeadNitrate.tres"),preload("res://assets/substances/MethylOrange.tres"),preload("res://assets/substances/Na2CO3.tres"),preload("res://assets/substances/Na2S.tres"),preload("res://assets/substances/Na2SO4.tres"),preload("res://assets/substances/NaCl.tres"),preload("res://assets/substances/NaNO3.tres"),preload("res://assets/substances/NaOH.tres"),preload("res://assets/substances/NH4CL.tres"),preload("res://assets/substances/NH4OH.tres"),preload("res://assets/substances/Phenolphtalein.tres")]
|
@export var water_soluable: Array[Substance] = [preload("res://assets/substances/AgNO3.tres"),preload("res://assets/substances/CaCl.tres"),preload("res://assets/substances/CaCO3.tres"),preload("res://assets/substances/CH3COONa.tres"),preload("res://assets/substances/CuSO4.tres"),preload("res://assets/substances/FeSO4.tres"),preload("res://assets/substances/KCl.tres"),preload("res://assets/substances/KI.tres"),preload("res://assets/substances/KNO3.tres"),preload("res://assets/substances/LeadNitrate.tres"),preload("res://assets/substances/MethylOrange.tres"),preload("res://assets/substances/Na2CO3.tres"),preload("res://assets/substances/Na2S.tres"),preload("res://assets/substances/Na2SO4.tres"),preload("res://assets/substances/NaCl.tres"),preload("res://assets/substances/NaNO3.tres"),preload("res://assets/substances/NaOH.tres"),preload("res://assets/substances/NH4CL.tres"),preload("res://assets/substances/NH4OH.tres"),preload("res://assets/substances/Phenolphtalein.tres")]
|
||||||
|
|
||||||
var current_lab: Labwork = preload("res://labs/lab-electrolyte.tres")
|
var current_lab: Labwork
|
||||||
var reactions: Array[Reaction]
|
var reactions: Array[Reaction]
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
|
|
|
||||||
|
|
@ -9,3 +9,4 @@ class_name Labwork
|
||||||
@export var tests: Array[LabTest]
|
@export var tests: Array[LabTest]
|
||||||
@export var reagents: Array[Reagent]
|
@export var reagents: Array[Reagent]
|
||||||
@export var tools: Array[Draggable]
|
@export var tools: Array[Draggable]
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,6 @@ func _on_tab_clicked(tab: int) -> void:
|
||||||
1:
|
1:
|
||||||
$Questions.visible = true
|
$Questions.visible = true
|
||||||
2:
|
2:
|
||||||
pass
|
LabRuntime.save()
|
||||||
3:
|
3:
|
||||||
GuiSignalBus.clear_table.emit()
|
GuiSignalBus.clear_table.emit()
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,12 @@
|
||||||
extends TextEdit
|
extends TextEdit
|
||||||
|
|
||||||
|
class_name LabLogger
|
||||||
|
|
||||||
|
static var instance: LabLogger
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
GuiSignalBus.log_pushed.connect(on_log_pushed)
|
GuiSignalBus.log_pushed.connect(on_log_pushed)
|
||||||
|
instance = self
|
||||||
|
|
||||||
func on_log_pushed(log_data: String):
|
func on_log_pushed(log_data: String):
|
||||||
text += "\n" + log_data
|
text += "\n" + log_data
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ extends Control
|
||||||
var current: int = -1
|
var current: int = -1
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
for question in ReactionRegistry.current_lab.tests:
|
for question in LabRuntime.current_lab.tests:
|
||||||
var options = question.options.duplicate()
|
var options = question.options.duplicate()
|
||||||
options.shuffle()
|
options.shuffle()
|
||||||
var vbox = VBoxContainer.new()
|
var vbox = VBoxContainer.new()
|
||||||
|
|
@ -11,11 +11,12 @@ func _ready() -> void:
|
||||||
description.text = question.question
|
description.text = question.question
|
||||||
vbox.add_child(description)
|
vbox.add_child(description)
|
||||||
vbox.visible = false
|
vbox.visible = false
|
||||||
for option in options:
|
for i in range(len(options)):
|
||||||
var button = Button.new()
|
var button = Button.new()
|
||||||
button.text = option
|
button.text = options[i]
|
||||||
vbox.add_child(button)
|
vbox.add_child(button)
|
||||||
button.pressed.connect(next)
|
button.pressed.connect(next)
|
||||||
|
button.pressed.connect(anwser.bind(i))
|
||||||
add_child(vbox)
|
add_child(vbox)
|
||||||
next()
|
next()
|
||||||
|
|
||||||
|
|
@ -28,3 +29,8 @@ func next() -> void:
|
||||||
if current < get_child_count() - 1:
|
if current < get_child_count() - 1:
|
||||||
current += 1
|
current += 1
|
||||||
get_child(current).visible = true
|
get_child(current).visible = true
|
||||||
|
else:
|
||||||
|
get_parent().visible = false
|
||||||
|
|
||||||
|
func anwser(option: int):
|
||||||
|
LabRuntime.anwsers.append(option)
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ extends Node
|
||||||
const dnd_button = preload("res://scenes/reactives_drag_and_drop.tscn")
|
const dnd_button = preload("res://scenes/reactives_drag_and_drop.tscn")
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
for reagent in ReactionRegistry.current_lab.reagents:
|
for reagent in LabRuntime.current_lab.reagents:
|
||||||
var button = dnd_button.instantiate()
|
var button = dnd_button.instantiate()
|
||||||
button.reagent = reagent
|
button.reagent = reagent
|
||||||
get_parent().add_element.call_deferred(button)
|
get_parent().add_element.call_deferred(button)
|
||||||
|
|
|
||||||
|
|
@ -3,11 +3,11 @@ extends Node
|
||||||
|
|
||||||
# Called when the node enters the scene tree for the first time.
|
# Called when the node enters the scene tree for the first time.
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
for i in range(len(ReactionRegistry.current_lab.experiments)):
|
for i in range(len(LabRuntime.current_lab.experiments)):
|
||||||
var tab = preload("uid://ce4a3scprw3c7").instantiate()
|
var tab = preload("uid://ce4a3scprw3c7").instantiate()
|
||||||
tab.name = "Опыт " + str(i + 1)
|
tab.name = "Опыт " + str(i + 1)
|
||||||
add_child(tab)
|
add_child(tab)
|
||||||
tab.get_node("Text").text = ReactionRegistry.current_lab.experiments[i].description
|
tab.get_node("Text").text = LabRuntime.current_lab.experiments[i].description
|
||||||
|
|
||||||
|
|
||||||
func _on_close_button_pressed() -> void:
|
func _on_close_button_pressed() -> void:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue