]> Untitled Git - frog-ninja.git/blobdiff - player/model.gd
Separated the Visual from the Model
[frog-ninja.git] / player / model.gd
index c3657b06b484102e140754cd92346a4d1543bf0d..cd6100420ca891e1b18f2ec185061faf782302ff 100644 (file)
@@ -1,28 +1,32 @@
 extends Node
 class_name PlayerModel
 
 extends Node
 class_name PlayerModel
 
-@onready var player: Player = $".."
-@onready var camera: Camera3D = %camera
 
 @onready var moves: Dictionary = {
        "idle": $Idle,
        "walk": $Walk,
 
 @onready var moves: Dictionary = {
        "idle": $Idle,
        "walk": $Walk,
+       "slash": $Slash,
+       "shoot": $Shoot,
        "dash": $Dash,
        "dash": $Dash,
-       "fall": $Fall
+       "fall": $Fall,
+       "fallToRoll": $FallToRoll,
+       "fallToLanding": $FallToLanding
 }
 }
-var current_move: Move
 
 
+@onready var player: Player = $".."
+@onready var skeleton: Skeleton3D = $Skeleton3D
+@onready var animation_tree: ModelAnimationTree = $AnimationTree
+
+var current_move: Move
 
 
-###
 
 func _ready() -> void:
 
 func _ready() -> void:
-       # assign starting state
-       current_move = moves["idle"]
-       
-       # assign objects to each move
-       for move in moves.values():
+       for state_name in moves.keys():
+               var move: Move = moves[state_name]
                move.player = player
                move.player = player
-               move.camera = camera
+               move.state_name = state_name
+               
+       assign_current_move("idle")
 
 
 func update(input: InputPacket, delta: float):
 
 
 func update(input: InputPacket, delta: float):
@@ -30,10 +34,21 @@ func update(input: InputPacket, delta: float):
        if moves[relevent_move] != current_move:
                switch_to(relevent_move)
        current_move.update(input, delta)
        if moves[relevent_move] != current_move:
                switch_to(relevent_move)
        current_move.update(input, delta)
+       animation_tree.set_walking_speed(player.velocity.length())
 
 
 func switch_to(state: String):
 
 
 func switch_to(state: String):
-       player.state = state
+       animation_tree.animation_started.disconnect(current_move._on_animation_started)
+       animation_tree.animation_finished.disconnect(current_move._on_animation_finished)
        current_move.on_exit_state()
        current_move.on_exit_state()
+       assign_current_move(state)
+       
+       
+func assign_current_move(state: String):
        current_move = moves[state]
        current_move.on_enter_state()
        current_move = moves[state]
        current_move.on_enter_state()
+       
+       animation_tree.animation_started.connect(current_move._on_animation_started)
+       animation_tree.animation_finished.connect(current_move._on_animation_finished)
+       animation_tree.transition(state)
+       player.state = state