54 lines
1.1 KiB
GDScript
54 lines
1.1 KiB
GDScript
class_name Interactable
|
|
extends Node2D
|
|
|
|
signal interacted
|
|
|
|
var checked_teleport
|
|
var telecam_speed_mult = 4
|
|
var enabled = true
|
|
var cooldown = 2
|
|
var _is_interactable = false
|
|
|
|
func disable():
|
|
enabled = false
|
|
$Sprite2D.modulate = Color.DARK_ORANGE
|
|
|
|
func enable():
|
|
enabled = true
|
|
$Sprite2D.modulate = Color.WHITE
|
|
|
|
func is_interactable() -> bool:
|
|
return _is_interactable
|
|
|
|
func interact() -> void:
|
|
if not is_interactable():
|
|
return
|
|
interacted.emit()
|
|
|
|
func _physics_process(delta: float) -> void:
|
|
pass
|
|
|
|
func _on_approach(body) -> void:
|
|
if body!=%Player2D:
|
|
return
|
|
_is_interactable = true
|
|
self.add_to_group("nearby_interactables")
|
|
if %Player2D.controller_ui:
|
|
print("CONTROLLER UI")
|
|
$Sprite2D/ButtonPrompt.show()
|
|
$Sprite2D/KeyPrompt.hide()
|
|
else:
|
|
print("KEYBOARD UI")
|
|
$Sprite2D/KeyPrompt.show()
|
|
$Sprite2D/ButtonPrompt.hide()
|
|
|
|
func _on_abandon(body) -> void:
|
|
if body!=%Player2D:
|
|
return
|
|
_is_interactable = false
|
|
self.remove_from_group("nearby_interactables")
|
|
if %Player2D.controller_ui:
|
|
$Sprite2D/ButtonPrompt.hide()
|
|
else:
|
|
$Sprite2D/KeyPrompt.hide()
|