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()