diff --git a/src/playerD/Player.tscn b/src/playerD/Player.tscn index f86f2c6..ffeaf7f 100644 --- a/src/playerD/Player.tscn +++ b/src/playerD/Player.tscn @@ -593,6 +593,7 @@ attack_node = NodePath("../attack") [node name="jump" type="Node" parent="movement_state_machine" index="3"] script = ExtResource( 8 ) +debug_state = true move_speed = 90.0 animation_sequence = [ "jump" ] idle_node = NodePath("../idle") @@ -602,7 +603,6 @@ jump_force = 250.0 [node name="attack" type="Node" parent="movement_state_machine" index="4"] script = ExtResource( 10 ) -debug_state = true timeout_seconds = 1.5 animation_sequence = [ "shoot" ] jump_node = NodePath("../jump") diff --git a/src/playerD/states/attack.gd b/src/playerD/states/attack.gd index 252d741..80bc738 100644 --- a/src/playerD/states/attack.gd +++ b/src/playerD/states/attack.gd @@ -67,6 +67,8 @@ func enter() -> void: "jump": animations.play("jump_shoot") animations.frame = previous_state_frame_number + if debug_state: + print("Starting Animation: jump_shoot at frame ", animations.animation , animations.frame) _: print("Warning!: Attack state encountered unhandled prev animation: ", previous_animation_name) @@ -80,6 +82,7 @@ func enter() -> void: #mod_timer.connect("timeout", self, "_on_Timer_timeout") state_timeout.start() + draw_weapon_modifier.state_timeout.start() state_ready = false animation_finished = false @@ -106,14 +109,16 @@ func process_physics(delta: float) -> State: can_fire = false if move_component.wants_jump() and parent.is_on_floor(): + draw_weapon_modifier.state_timeout.start() + jump_state.modifier = draw_weapon_modifier return jump_state move_actor_as_desired(delta) - if previous_state_name == "move" and move_component.velocity.x == 0.0: - return idle_state +# if previous_state_name == "move" and move_component.velocity.x == 0.0: +# return idle_state - if previous_state_name == "idle" and move_component.velocity.x != 0.0: + if move_component.velocity.x != 0.0: draw_weapon_modifier.state_timeout.start() move_state.modifier = draw_weapon_modifier #draw_weapon_modifier.transfer_owner(move_state) @@ -126,6 +131,8 @@ func process_physics(delta: float) -> State: # return move_state if !parent.is_on_floor(): + draw_weapon_modifier.state_timeout.start() + fall_state.modifier = draw_weapon_modifier return fall_state diff --git a/src/playerD/states/hurt.gd b/src/playerD/states/hurt.gd index 8518720..9dfd136 100644 --- a/src/playerD/states/hurt.gd +++ b/src/playerD/states/hurt.gd @@ -6,7 +6,14 @@ onready var idle_state: State = get_node(idle_node) var flash_color = Color.yellow +var store_modifier: StateModifier + func enter() -> void: + if modifier: + if debug_state: + print(name, " skipping modifier and holding for next state.") + store_modifier = modifier + modifier = null # modifier_stack_ref.clear() .enter() move_component.velocity.x = 0 @@ -15,6 +22,7 @@ func enter() -> void: state_timeout.start() func exit() -> void: + modifier = store_modifier .exit() animations.modulate = Color.white diff --git a/src/state_machine_animated_actor.gd b/src/state_machine_animated_actor.gd index f5daac8..89e5a34 100644 --- a/src/state_machine_animated_actor.gd +++ b/src/state_machine_animated_actor.gd @@ -108,12 +108,12 @@ func _on_AnimatedSprite_animation_finished(): # current_state.animation_finished = true if current_state.animations.frames.get_animation_loop( current_state.animations.animation) == false: - print("Stop!!!!!", current_state.animation_sequence.size(), " - ", current_state.animation_index) + #print("Stop!!!!!", current_state.animation_sequence.size(), " - ", current_state.animation_index) if current_state.animation_sequence.size() > 0: - print("<-- next anim.") + #print("<-- next anim.") current_state.animation_index += 1 if current_state.animation_index >= current_state.animation_sequence.size(): - print("Stop!!!!!") + #print("Stop!!!!!") current_state.animation_finished = true