X-Git-Url: http://git.purplebirdman.com/lightcycles.git/blobdiff_plain/3e15374f814e7b21fc895b09ed77ef983f392a93..d9c42b6592d56cd8bf20cae59b2bf1d32219f9e0:/player/player.gd?ds=sidebyside diff --git a/player/player.gd b/player/player.gd index 1c842d4..c71d952 100644 --- a/player/player.gd +++ b/player/player.gd @@ -2,33 +2,52 @@ class_name Player extends CharacterBody3D -signal playerReady signal playerTurn +signal playerDestroyed +signal playerRestart -@export_category("Movement") +@onready var _skin = $skin + + +@export_category("Movement") @export var speed = 5.0 @export_category("Camera") @export var distance = 3.0 + @onready var _springArm = $SpringArm3D +enum state {ALIVE, DEAD} +var _state = state.ALIVE func _ready() -> void: _springArm.spring_length = distance - playerReady.emit(self) func _input(event: InputEvent) -> void: - if event.is_action_pressed("player_left"): - playerTurn.emit(self) - global_rotate(Vector3.UP, PI/2) - elif event.is_action_pressed("player_right"): - playerTurn.emit(self) - global_rotate(Vector3.UP, -PI/2) + if _state == state.ALIVE: + if event.is_action_pressed("player_left"): + global_rotate(Vector3.UP, PI/2) + playerTurn.emit(self) + elif event.is_action_pressed("player_right"): + global_rotate(Vector3.UP, -PI/2) + playerTurn.emit(self) + else: + if event.is_action_pressed("player_restart"): + playerRestart.emit(self) func _physics_process(_delta: float) -> void: - velocity = global_transform.basis.z * speed - move_and_slide() + if _state == state.ALIVE: + velocity = global_transform.basis.z * speed + move_and_slide() + if velocity.length() == 0: + _explode() + + +func _explode() -> void: + _skin.visible = false + _state = state.DEAD + playerDestroyed.emit(self)