Improved component system

This commit is contained in:
2024-02-15 16:28:27 +01:00
parent 8de91eaba1
commit b439919ad0
19 changed files with 89 additions and 99 deletions

View File

@ -1,32 +1,34 @@
class_name PlayerController
extends Controller
## The character that we're controlling.
var player: Player
## We need the movement component to check if we can perform certain actions.
var movement: MovementComponent
var skills: SkillsComponent
func _init(new_player: Player):
player = new_player
movement = player.find_child("Movement")
movement = player.get_node("Movement")
skills = player.get_node("Skills")
name = "Controller"
func _unhandled_input(event):
func _unhandled_input(event: InputEvent):
if Global.interacting_with_ui:
return
# Calculate the direction
update_direction()
update_actions(event)
func update_direction():
var move := Input.get_vector("move_left", "move_right", "move_forward", "move_backward")
var direction := (Global.camera.global_basis * Vector3(move.x, 0, move.y))
direction.y = 0
direction = direction.normalized()
# Notify components
player.set_direction(direction)
direction_changed.emit(direction)
func update_actions(event: InputEvent):
if event.is_action_pressed("jump") && movement && movement.can_jump():
player.jump()
jumped.emit()
for i in range(4):
if event.is_action_pressed("skill_%d" % (i + 1)):
player.use_skill(i)
used_skill.emit(i)