This commit is contained in:
Rendo 2026-02-12 23:50:53 +05:00
commit e1e7c70147
39 changed files with 279 additions and 60 deletions

View file

@ -33,6 +33,7 @@ var filtered_draggables: Array[DraggableObject]
func _ready() -> void:
area_entered.connect(on_area_entered)
area_exited.connect(on_area_exited)
GuiSignalBus.clear_table.connect(queue_free)
func _mouse_enter() -> void:
mouse_in = true

View file

@ -26,5 +26,5 @@ func snap_flask(flask: DraggableObject) -> void:
func unsnap_flask(flask: DraggableObject) -> void:
held_flask = null
flask.reparent(flask_parent)
flask.reparent(get_tree().current_scene)
flask.drag_ended_on.disconnect(unsnap_flask)

View file

@ -6,6 +6,7 @@ signal interaction_confirmed(data: Dictionary)
signal log_pushed(log_data: String)
signal clear_buttons
signal add_buttons(buttons: Control)
signal clear_table
func push(log_data: String):
log_pushed.emit(log_data)

View file

@ -4,6 +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")]
var current_lab: Labwork = preload("res://labs/lab-electrolyte.tres")
var reactions: Array[Reaction]
func _ready() -> void:

View file

@ -5,3 +5,4 @@ class_name Draggable
@export var scene_to_spawn: PackedScene
@export var icon: Texture2D
@export var text: String

View file

@ -2,9 +2,9 @@ extends Resource
class_name Labwork
static var current_lab: Labwork
@export var lab_name: String
@export_multiline() var tasks: String
@export_multiline() var equipment: String
@export var experiments: Array[LabExperiment]
@export var tests: Array[LabTest]
@export var reagents: Array[Reagent]

View file

@ -2,5 +2,6 @@ extends Resource
class_name LabTest
@export var question: String
@export var options: Array[String]
@export var correct_anwser: int

13
src/ui/lab_tabs.gd Normal file
View file

@ -0,0 +1,13 @@
extends TabBar
func _on_tab_clicked(tab: int) -> void:
match tab:
0:
$Worktabs.visible = true
1:
$Questions.visible = true
2:
pass
3:
GuiSignalBus.clear_table.emit()

1
src/ui/lab_tabs.gd.uid Normal file
View file

@ -0,0 +1 @@
uid://14snb0pu3b1t

View file

@ -0,0 +1,30 @@
extends Control
var current: int = -1
func _ready() -> void:
for question in ReactionRegistry.current_lab.tests:
var options = question.options.duplicate()
options.shuffle()
var vbox = VBoxContainer.new()
var description = Label.new()
description.text = question.question
vbox.add_child(description)
vbox.visible = false
for option in options:
var button = Button.new()
button.text = option
vbox.add_child(button)
button.pressed.connect(next)
add_child(vbox)
next()
func _on_close_button_pressed() -> void:
get_parent().visible = false
func next() -> void:
get_child(current).visible = false
if current < get_child_count() - 1:
current += 1
get_child(current).visible = true

View file

@ -0,0 +1 @@
uid://bosx1bhaka185

View file

@ -1,12 +1,11 @@
extends Node
const dnd_button = preload("res://scenes/reactives_drag_and_drop.tscn")
const reagent_dir = "res://assets/reagents/"
func _ready() -> void:
for file in ResourceLoader.list_directory(reagent_dir):
for reagent in ReactionRegistry.current_lab.reagents:
var button = dnd_button.instantiate()
button.reagent = load(reagent_dir+file)
button.reagent = reagent
get_parent().add_element.call_deferred(button)

View file

@ -3,14 +3,12 @@ extends Node
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
for i in range(len(Labwork.current_lab.experiments)):
var container: PanelContainer = PanelContainer.new()
container.name = "Опыт " + str(i + 1)
var scroll: ScrollContainer = ScrollContainer.new()
scroll.horizontal_scroll_mode = ScrollContainer.SCROLL_MODE_DISABLED
var label: Label = Label.new()
label.text = Labwork.current_lab.experiments[i].description
scroll.add_child(label)
container.add_child(scroll)
add_child(container)
for i in range(len(ReactionRegistry.current_lab.experiments)):
var tab = preload("uid://ce4a3scprw3c7").instantiate()
tab.name = "Опыт " + str(i + 1)
add_child(tab)
tab.get_node("Text").text = ReactionRegistry.current_lab.experiments[i].description
func _on_close_button_pressed() -> void:
get_parent().visible = false