Some odd dash behavior on slip surfaces but otherwise, add return after state change to fix long standing weirdness of processing the wrong movement parameters right before state change.
This commit is contained in:
parent
5197b3a608
commit
b7002f03ad
|
|
@ -136,30 +136,38 @@ func _state_process_physics_idle():
|
||||||
##Bugfix
|
##Bugfix
|
||||||
if _wants_jump:
|
if _wants_jump:
|
||||||
request_state_change.call_func('jump')
|
request_state_change.call_func('jump')
|
||||||
|
return
|
||||||
|
|
||||||
if _wants_crouch == true:
|
if _wants_crouch == true:
|
||||||
request_state_change.call_func('crouch')
|
request_state_change.call_func('crouch')
|
||||||
|
return
|
||||||
##TODO: May need that 'bump' logic to make velocity work.
|
##TODO: May need that 'bump' logic to make velocity work.
|
||||||
if desired_movement_vector.x != 0: # and velocity.x != 0:
|
if desired_movement_vector.x != 0: # and velocity.x != 0:
|
||||||
request_state_change.call_func('move')
|
request_state_change.call_func('move')
|
||||||
|
return
|
||||||
|
|
||||||
if !parent.is_on_floor():
|
if !parent.is_on_floor():
|
||||||
#return fall_state
|
#return fall_state
|
||||||
request_state_change.call_func('fall')
|
request_state_change.call_func('fall')
|
||||||
|
return
|
||||||
|
|
||||||
if _wants_roll == true:
|
if _wants_roll == true:
|
||||||
request_state_change.call_func('roll')
|
request_state_change.call_func('roll')
|
||||||
|
return
|
||||||
|
|
||||||
if _wants_attack_primary == true:
|
if _wants_attack_primary == true:
|
||||||
#request_state_change.call_func('attack_shoot')
|
#request_state_change.call_func('attack_shoot')
|
||||||
attack_primary()
|
attack_primary()
|
||||||
|
return
|
||||||
|
|
||||||
if _wants_attack_secondary == true:
|
if _wants_attack_secondary == true:
|
||||||
#parent_request_state_change.call_func('attack_sword')
|
#parent_request_state_change.call_func('attack_sword')
|
||||||
attack_secondary()
|
attack_secondary()
|
||||||
|
return
|
||||||
|
|
||||||
if $"%LadderDetector".is_colliding() and _wants_climb == true:
|
if $"%LadderDetector".is_colliding() and _wants_climb == true:
|
||||||
request_state_change.call_func('climb')
|
request_state_change.call_func('climb')
|
||||||
|
return
|
||||||
|
|
||||||
# var _v :Vector2 = new_move_actor_as_desired( physics_delta , current_state )
|
# var _v :Vector2 = new_move_actor_as_desired( physics_delta , current_state )
|
||||||
# apply_movement_to_parent(_v)
|
# apply_movement_to_parent(_v)
|
||||||
|
|
@ -180,6 +188,7 @@ func attack_primary():
|
||||||
var _item_state_name :String = parent_use_primary_item.call_func()
|
var _item_state_name :String = parent_use_primary_item.call_func()
|
||||||
if _item_state_name != '':
|
if _item_state_name != '':
|
||||||
request_state_change.call_func(_item_state_name)
|
request_state_change.call_func(_item_state_name)
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -188,6 +197,7 @@ func attack_secondary():
|
||||||
var _item_state_name :String = get_parent().use_secondary_item()
|
var _item_state_name :String = get_parent().use_secondary_item()
|
||||||
if _item_state_name != '':
|
if _item_state_name != '':
|
||||||
request_state_change.call_func(_item_state_name)
|
request_state_change.call_func(_item_state_name)
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
func _state_process_physics_attack_shoot():
|
func _state_process_physics_attack_shoot():
|
||||||
|
|
@ -199,30 +209,37 @@ func _state_process_physics_attack_shoot():
|
||||||
|
|
||||||
if current_state.animation_finished == true:
|
if current_state.animation_finished == true:
|
||||||
request_state_change.call_func('idle')
|
request_state_change.call_func('idle')
|
||||||
|
return
|
||||||
|
|
||||||
if !parent.is_on_floor():
|
if !parent.is_on_floor():
|
||||||
#return fall_state
|
#return fall_state
|
||||||
request_state_change.call_func('fall')
|
request_state_change.call_func('fall')
|
||||||
|
return
|
||||||
|
|
||||||
func _state_process_physics_attack_punch():
|
func _state_process_physics_attack_punch():
|
||||||
if current_state.animation_finished == true:
|
if current_state.animation_finished == true:
|
||||||
request_state_change.call_func('idle')
|
request_state_change.call_func('idle')
|
||||||
|
return
|
||||||
|
|
||||||
if !parent.is_on_floor():
|
if !parent.is_on_floor():
|
||||||
#return fall_state
|
#return fall_state
|
||||||
request_state_change.call_func('fall')
|
request_state_change.call_func('fall')
|
||||||
|
return
|
||||||
|
|
||||||
func _state_process_physics_attack_sword():
|
func _state_process_physics_attack_sword():
|
||||||
if current_state.animation_finished == true:
|
if current_state.animation_finished == true:
|
||||||
request_state_change.call_func('idle')
|
request_state_change.call_func('idle')
|
||||||
|
return
|
||||||
|
|
||||||
if !parent.is_on_floor():
|
if !parent.is_on_floor():
|
||||||
#return fall_state
|
#return fall_state
|
||||||
request_state_change.call_func('fall')
|
request_state_change.call_func('fall')
|
||||||
|
return
|
||||||
|
|
||||||
func _state_process_physics_roll():
|
func _state_process_physics_roll():
|
||||||
if current_state.animation_finished == true:
|
if current_state.animation_finished == true:
|
||||||
request_state_change.call_func('idle')
|
request_state_change.call_func('idle')
|
||||||
|
return
|
||||||
|
|
||||||
# Force role in facing direction
|
# Force role in facing direction
|
||||||
# instead of movement direction
|
# instead of movement direction
|
||||||
|
|
@ -259,6 +276,7 @@ func _state_process_physics_enter_right():
|
||||||
level_transition_latch = true
|
level_transition_latch = true
|
||||||
elif current_state.state_timeout.time_left == 0 and level_transition_latch == true:
|
elif current_state.state_timeout.time_left == 0 and level_transition_latch == true:
|
||||||
request_state_change.call_func('idle')
|
request_state_change.call_func('idle')
|
||||||
|
return
|
||||||
|
|
||||||
# Force role in facing direction
|
# Force role in facing direction
|
||||||
# instead of movement direction
|
# instead of movement direction
|
||||||
|
|
@ -274,10 +292,12 @@ func _state_process_physics_land():
|
||||||
$"%LedgeDetector".set_enabled(true)
|
$"%LedgeDetector".set_enabled(true)
|
||||||
if current_state.animation_finished == true:
|
if current_state.animation_finished == true:
|
||||||
request_state_change.call_func('idle')
|
request_state_change.call_func('idle')
|
||||||
|
return
|
||||||
|
|
||||||
if !parent.is_on_floor():
|
if !parent.is_on_floor():
|
||||||
#return fall_state
|
#return fall_state
|
||||||
request_state_change.call_func('fall')
|
request_state_change.call_func('fall')
|
||||||
|
return
|
||||||
#move_actor_as_desired()
|
#move_actor_as_desired()
|
||||||
apply_movement_to_parent(
|
apply_movement_to_parent(
|
||||||
velocity_controller.calculate_velocity(
|
velocity_controller.calculate_velocity(
|
||||||
|
|
@ -289,6 +309,7 @@ func _state_process_physics_land():
|
||||||
func _state_process_physics_hurt():
|
func _state_process_physics_hurt():
|
||||||
if current_state.state_timeout.time_left == 0:
|
if current_state.state_timeout.time_left == 0:
|
||||||
request_state_change.call_func('idle')
|
request_state_change.call_func('idle')
|
||||||
|
return
|
||||||
|
|
||||||
# if !parent.is_on_floor():
|
# if !parent.is_on_floor():
|
||||||
# #return fall_state
|
# #return fall_state
|
||||||
|
|
@ -311,11 +332,12 @@ func _state_process_physics_fall():
|
||||||
if debug_component:
|
if debug_component:
|
||||||
UiManager.debug_text = (str($"%LedgeDetector".get_collision_point()))
|
UiManager.debug_text = (str($"%LedgeDetector".get_collision_point()))
|
||||||
request_state_change.call_func('ledge_grab')
|
request_state_change.call_func('ledge_grab')
|
||||||
|
return
|
||||||
if parent.is_on_floor():
|
if parent.is_on_floor():
|
||||||
#modifier.reference()
|
#modifier.reference()
|
||||||
#idle_state.modifier = landing_modifier
|
#idle_state.modifier = landing_modifier
|
||||||
request_state_change.call_func('land')
|
request_state_change.call_func('land')
|
||||||
|
return
|
||||||
|
|
||||||
#move_actor_as_desired()
|
#move_actor_as_desired()
|
||||||
apply_movement_to_parent(
|
apply_movement_to_parent(
|
||||||
|
|
@ -336,6 +358,7 @@ func _state_process_physics_jump():
|
||||||
# request_state_change.call_func('idle')
|
# request_state_change.call_func('idle')
|
||||||
if velocity_controller.velocity.y > 0:
|
if velocity_controller.velocity.y > 0:
|
||||||
request_state_change.call_func('fall')
|
request_state_change.call_func('fall')
|
||||||
|
return
|
||||||
desired_movement_vector.y = UP
|
desired_movement_vector.y = UP
|
||||||
#move_actor_as_desired()
|
#move_actor_as_desired()
|
||||||
apply_movement_to_parent(
|
apply_movement_to_parent(
|
||||||
|
|
@ -351,12 +374,15 @@ func _state_process_physics_move():
|
||||||
|
|
||||||
if _wants_jump:
|
if _wants_jump:
|
||||||
request_state_change.call_func('jump')
|
request_state_change.call_func('jump')
|
||||||
|
return
|
||||||
|
|
||||||
if desired_movement_vector.x == 0:
|
if desired_movement_vector.x == 0:
|
||||||
request_state_change.call_func('idle')
|
request_state_change.call_func('idle')
|
||||||
|
return
|
||||||
|
|
||||||
if !parent.is_on_floor():
|
if !parent.is_on_floor():
|
||||||
request_state_change.call_func('fall')
|
request_state_change.call_func('fall')
|
||||||
|
return
|
||||||
|
|
||||||
## First version
|
## First version
|
||||||
#move_actor_as_desired()
|
#move_actor_as_desired()
|
||||||
|
|
@ -410,9 +436,11 @@ func _state_process_physics_climb():
|
||||||
# animations.stop()
|
# animations.stop()
|
||||||
else:
|
else:
|
||||||
return request_state_change.call_func('idle')
|
return request_state_change.call_func('idle')
|
||||||
|
|
||||||
|
|
||||||
if _wants_crouch:
|
if _wants_crouch:
|
||||||
request_state_change.call_func('fall')
|
request_state_change.call_func('fall')
|
||||||
|
return
|
||||||
|
|
||||||
func _state_process_physics_ledge_grab():
|
func _state_process_physics_ledge_grab():
|
||||||
if debug_component:
|
if debug_component:
|
||||||
|
|
@ -421,9 +449,11 @@ func _state_process_physics_ledge_grab():
|
||||||
|
|
||||||
if _wants_jump:
|
if _wants_jump:
|
||||||
request_state_change.call_func('ledge_climb')
|
request_state_change.call_func('ledge_climb')
|
||||||
|
return
|
||||||
|
|
||||||
if _wants_crouch:
|
if _wants_crouch:
|
||||||
request_state_change.call_func('fall')
|
request_state_change.call_func('fall')
|
||||||
|
return
|
||||||
|
|
||||||
func _state_process_physics_ledge_climb():
|
func _state_process_physics_ledge_climb():
|
||||||
# $"../LedgeDetector".set_enabled(false)
|
# $"../LedgeDetector".set_enabled(false)
|
||||||
|
|
@ -457,14 +487,18 @@ func _state_process_physics_crouch():
|
||||||
|
|
||||||
if _wants_crouch != true:
|
if _wants_crouch != true:
|
||||||
request_state_change.call_func('idle')
|
request_state_change.call_func('idle')
|
||||||
|
return
|
||||||
|
|
||||||
if !parent.is_on_floor():
|
if !parent.is_on_floor():
|
||||||
request_state_change.call_func('fall')
|
request_state_change.call_func('fall')
|
||||||
|
return
|
||||||
|
|
||||||
if _wants_crouch == true and desired_movement_vector.x != 0:
|
if _wants_crouch == true and desired_movement_vector.x != 0:
|
||||||
request_state_change.call_func('crouch_move')
|
request_state_change.call_func('crouch_move')
|
||||||
|
return
|
||||||
elif desired_movement_vector.x != 0: # and velocity.x != 0:
|
elif desired_movement_vector.x != 0: # and velocity.x != 0:
|
||||||
request_state_change.call_func('move')
|
request_state_change.call_func('move')
|
||||||
|
return
|
||||||
|
|
||||||
apply_movement_to_parent(
|
apply_movement_to_parent(
|
||||||
velocity_controller.calculate_velocity(
|
velocity_controller.calculate_velocity(
|
||||||
|
|
@ -479,14 +513,18 @@ func _state_process_physics_crouch_move():
|
||||||
|
|
||||||
if _wants_crouch != true:
|
if _wants_crouch != true:
|
||||||
request_state_change.call_func('idle')
|
request_state_change.call_func('idle')
|
||||||
|
return
|
||||||
|
|
||||||
if !parent.is_on_floor():
|
if !parent.is_on_floor():
|
||||||
request_state_change.call_func('fall')
|
request_state_change.call_func('fall')
|
||||||
|
return
|
||||||
|
|
||||||
if _wants_crouch == true and desired_movement_vector.x == 0:
|
if _wants_crouch == true and desired_movement_vector.x == 0:
|
||||||
request_state_change.call_func('crouch')
|
request_state_change.call_func('crouch')
|
||||||
|
return
|
||||||
elif _wants_crouch != true and desired_movement_vector.x != 0:
|
elif _wants_crouch != true and desired_movement_vector.x != 0:
|
||||||
request_state_change.call_func('move')
|
request_state_change.call_func('move')
|
||||||
|
return
|
||||||
|
|
||||||
#move_actor_as_desired()
|
#move_actor_as_desired()
|
||||||
apply_movement_to_parent(
|
apply_movement_to_parent(
|
||||||
|
|
|
||||||
|
|
@ -193,7 +193,7 @@ func calculate_velocity(_delta :float,
|
||||||
_v_impulse_applied = true
|
_v_impulse_applied = true
|
||||||
calc_inertia.y += impulse_inertia
|
calc_inertia.y += impulse_inertia
|
||||||
|
|
||||||
if debug and movement_parameters.debug_name == 'jump':
|
if debug and movement_parameters.debug_name == 'roll':
|
||||||
var foo = 2+2
|
var foo = 2+2
|
||||||
## We are always moving from h_speed.x towards y at a given rate
|
## We are always moving from h_speed.x towards y at a given rate
|
||||||
## if we have a difference of speed and an acceleration
|
## if we have a difference of speed and an acceleration
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user