interaction base

This commit is contained in:
Rendo 2025-11-14 12:52:41 +05:00
commit 2f559639fb
21 changed files with 134 additions and 49 deletions

View file

@ -1,5 +1,7 @@
extends Area3D
class_name DraggableObject
signal drag_started
signal drag_ended

5
src/gui_signal_bus.gd Normal file
View file

@ -0,0 +1,5 @@
extends Node
@warning_ignore_start("unused_signal")
signal interaction_confirmed(data: Dictionary)

View file

@ -0,0 +1 @@
uid://5o7igp3yxx6o

View file

@ -2,7 +2,7 @@ extends Area3D
class_name InteractionReciever
signal interacted(source: InteractionSource)
signal interaction_start(source: InteractionSource)
func _ready() -> void:
area_entered.connect(on_area_entered)
@ -10,8 +10,8 @@ func _ready() -> void:
func on_area_entered(area: Area3D):
if area is InteractionSource:
area.interaction_requested.connect(interacted.emit)
area.interaction_requested.connect(interaction_start.emit)
func on_area_exited(area: Area3D):
if area is InteractionSource:
area.interaction_requested.disconnect(interacted.emit)
area.interaction_requested.disconnect(interaction_start.emit)

View file

@ -2,21 +2,33 @@ extends Area3D
class_name InteractionSource
@export var interaction_dialog: ConfirmationDialog
var recievers: int = 0
signal interaction_requested
signal interaction_closed
signal interaction_reciever_entered(reicever: InteractionReciever)
signal interaction_reciever_exited(reicever: InteractionReciever)
func _ready() -> void:
area_entered.connect(on_area_entered)
area_exited.connect(on_area_exited)
interaction_dialog.canceled.connect(interaction_closed.emit)
interaction_dialog.confirmed.connect(interaction_closed.emit)
func on_area_entered(area: Area3D):
if area is InteractionReciever:
interaction_reciever_entered.emit(area)
recievers += 1
func on_area_exited(area: Area3D):
if area is InteractionReciever:
interaction_reciever_exited.emit(area)
recievers -= 1
func request_interaction() -> void:
if recievers == 0:
interaction_closed.emit()
return
interaction_requested.emit()
interaction_dialog.popup_centered()

View file

@ -13,6 +13,7 @@ func _on_interaction_area_interaction_reciever_entered(rec: InteractionReciever)
func _on_interaction_area_interaction_reciever_exited(rec: InteractionReciever) -> void:
if reciever == rec:
reciever = null
rotated.quaternion = start_rotation
func _process(_delta: float) -> void:
if reciever == null:

View file

@ -0,0 +1,7 @@
extends Node
@export var node: Node3D
@onready var start_position: Vector3 = node.global_position
func return_to_start() -> void:
node.global_position = start_position

View file

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

6
src/inventory.gd Normal file
View file

@ -0,0 +1,6 @@
extends Node
@export var open_on_top: bool
var liquids
var solids
var gasses

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

@ -0,0 +1 @@
uid://82ettbegollp

11
src/ui/slider_display.gd Normal file
View file

@ -0,0 +1,11 @@
extends Label
@export var slider: Slider
@export var suffix: String
func _ready() -> void:
slider.value_changed.connect(_on_slider_value_changed)
text = str(slider.value).lpad(len(str(slider.max_value)),"0") + " " + suffix
func _on_slider_value_changed(value: float):
text = str(value).lpad(len(str(slider.max_value)),"0") + " " + suffix

View file

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