This commit is contained in:
Rendo 2026-01-30 11:39:09 +05:00
commit 2f2ac7c540
20 changed files with 218 additions and 30 deletions

20
src/burn_area.gd Normal file
View file

@ -0,0 +1,20 @@
extends Area3D
@export var enabled: bool = false
@export_range(0,10,0.01,"or_greater","suffix:градус/с") var power: float = 0.1
var flasks: Array[DraggableObject] = []
func _process(delta: float) -> void:
if enabled:
for flask in flasks:
flask.get_node("Inventory").mean_temperature += delta * power
func _on_area_entered(area: Area3D) -> void:
if area.is_in_group("flask"):
flasks.append(area)
func _on_area_exited(area: Area3D) -> void:
if area.is_in_group("flask"):
flasks.erase(area)

1
src/burn_area.gd.uid Normal file
View file

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

View file

@ -0,0 +1,13 @@
extends ButtonGenerator
func get_buttons() -> Control:
var burn_button: Button = Button.new()
burn_button.text = "Потушить спиртовку" if $"../BurnArea".enabled else "Зажечь спиртовку"
burn_button.pressed.connect(toggle_burner)
return burn_button
func toggle_burner() -> void:
$"../BurnArea".enabled = not $"../BurnArea".enabled
GuiSignalBus.add_buttons.emit(get_buttons())

View file

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

View file

@ -11,12 +11,16 @@ var dragged: bool = false:
if dragged != value:
if value:
drag_started.emit()
GuiSignalBus.clear_buttons.emit()
get_viewport().get_camera_3d().start_interaction_seeking(self)
if button_generator:
GuiSignalBus.add_buttons.emit(button_generator.get_buttons())
else:
drag_ended.emit()
dragged = value
@export var interactible: Interactible
@export var button_generator: ButtonGenerator
@export var mask: PackedStringArray
var contacted_draggables: Array[DraggableObject]

7
src/drag/gui_buttons.gd Normal file
View file

@ -0,0 +1,7 @@
@abstract
extends Node
class_name ButtonGenerator
@abstract
func get_buttons() -> Control

View file

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

View file

@ -4,6 +4,8 @@ extends Node
signal interaction_confirmed(data: Dictionary)
signal log_pushed(log_data: String)
signal clear_buttons
signal add_buttons(buttons: Control)
func push(log_data: String):
log_pushed.emit(log_data)

View file

@ -9,7 +9,8 @@ var mean_temperature: float:
set(new_temperature):
mean_temperature = new_temperature
temperature_changed.emit(new_temperature)
update_temperature()
if new_temperature != 0:
update_temperature()
var total_amount: float:
set(value):

View file

@ -0,0 +1,18 @@
extends Control
var current_inspected: Control
func _ready() -> void:
GuiSignalBus.add_buttons.connect(add_buttons)
GuiSignalBus.clear_buttons.connect(clear_buttons)
func clear_buttons() -> void:
if current_inspected:
current_inspected.queue_free()
func add_buttons(buttons: Control) -> void:
clear_buttons()
current_inspected = buttons
add_child(buttons)

View file

@ -0,0 +1 @@
uid://457xdl1tsmde