interaction base
This commit is contained in:
parent
3a6da57079
commit
2f559639fb
21 changed files with 134 additions and 49 deletions
|
|
@ -1,5 +1,7 @@
|
|||
extends Area3D
|
||||
|
||||
class_name DraggableObject
|
||||
|
||||
signal drag_started
|
||||
signal drag_ended
|
||||
|
||||
|
|
|
|||
5
src/gui_signal_bus.gd
Normal file
5
src/gui_signal_bus.gd
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
extends Node
|
||||
|
||||
@warning_ignore_start("unused_signal")
|
||||
|
||||
signal interaction_confirmed(data: Dictionary)
|
||||
1
src/gui_signal_bus.gd.uid
Normal file
1
src/gui_signal_bus.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
|||
uid://5o7igp3yxx6o
|
||||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
7
src/interactible/returner.gd
Normal file
7
src/interactible/returner.gd
Normal 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
|
||||
1
src/interactible/returner.gd.uid
Normal file
1
src/interactible/returner.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
|||
uid://b1gv6dt8bwj2p
|
||||
6
src/inventory.gd
Normal file
6
src/inventory.gd
Normal 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
1
src/inventory.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
|||
uid://82ettbegollp
|
||||
11
src/ui/slider_display.gd
Normal file
11
src/ui/slider_display.gd
Normal 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
|
||||
1
src/ui/slider_display.gd.uid
Normal file
1
src/ui/slider_display.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
|||
uid://dteb2xxl8gixp
|
||||
Loading…
Add table
Add a link
Reference in a new issue