58 lines
1.5 KiB
GDScript
58 lines
1.5 KiB
GDScript
extends CharacterBody2D
|
|
class_name PlayerCharacter
|
|
|
|
signal InteractScannerAreaEntered(area: Area2D)
|
|
signal InteractScannerAreaExited(area: Area2D)
|
|
|
|
signal InteractScannerBodyEntered(body: Node2D)
|
|
signal InteractScannerBodyExited(body: Node2D)
|
|
|
|
signal InteractionActionTriggered()
|
|
|
|
signal ArrowFired(fire_position: Vector2, direction: Vector2)
|
|
signal SitOnFurnitureTriggered(sitting_position: Vector2, sitting_direction: Enums.Directions)
|
|
|
|
signal CutsceneStarted()
|
|
signal CutsceneEnded()
|
|
|
|
@export var player_sprite: Node2D
|
|
@export var state_machine: PlayerStateMachine
|
|
|
|
# Public Methods
|
|
func OnSitOnFurnitureTriggered(sitting_position: Vector2, sitting_direction: Enums.Directions):
|
|
SitOnFurnitureTriggered.emit(sitting_position, sitting_direction)
|
|
|
|
|
|
func OnCutsceneStarted() -> void:
|
|
CutsceneStarted.emit()
|
|
|
|
|
|
func OnCutsceneEnded() -> void:
|
|
CutsceneEnded.emit()
|
|
|
|
|
|
# Private Methods
|
|
func _on_interact_scanner_area_entered(area: Area2D) -> void:
|
|
InteractScannerAreaEntered.emit(area)
|
|
|
|
|
|
func _on_interact_scanner_area_exited(area: Area2D) -> void:
|
|
InteractScannerAreaExited.emit(area)
|
|
|
|
|
|
func _on_interact_scanner_body_entered(body: Node2D) -> void:
|
|
InteractScannerBodyEntered.emit(body)
|
|
|
|
|
|
func _on_interact_scanner_body_exited(body: Node2D) -> void:
|
|
InteractScannerBodyExited.emit(body)
|
|
|
|
|
|
func _on_interaction_action_triggered() -> void:
|
|
if state_machine.current_state.IsStateActionable():
|
|
InteractionActionTriggered.emit()
|
|
|
|
|
|
func _on_using_item_a_state_arrow_fired(fire_position: Vector2, direction: Vector2) -> void:
|
|
ArrowFired.emit(fire_position, direction)
|