]> Untitled Git - frog-ninja.git/blob - player/model.gd
Added landing states
[frog-ninja.git] / player / model.gd
1 extends Node
2 class_name PlayerModel
3
4 @onready var player: Player = $".."
5 @onready var camera: Camera3D = %camera
6
7 @onready var moves: Dictionary = {
8         "idle": $Idle,
9         "walk": $Walk,
10         "slash": $Slash,
11         "shoot": $Shoot,
12         "dash": $Dash,
13         "fall": $Fall,
14         "fallToRoll": $FallToRoll,
15         "fallToLanding": $FallToLanding
16 }
17 var current_move: Move
18
19
20 ###
21
22 func _ready() -> void:
23         # assign starting state
24         current_move = moves["idle"]
25         
26         # assign objects to each move
27         for move in moves.values():
28                 move.player = player
29                 move.camera = camera
30
31
32 func update(input: InputPacket, delta: float):
33         var relevent_move := current_move.should_enter(input)
34         if moves[relevent_move] != current_move:
35                 switch_to(relevent_move)
36         current_move.update(input, delta)
37
38
39 func switch_to(state: String):
40         player.state = state
41         current_move.on_exit_state()
42         current_move = moves[state]
43         current_move.on_enter_state()