From a3c3d2db9fdcb646a3284f6ff4a52d40bbc53ebe Mon Sep 17 00:00:00 2001 From: Dustin Date: Wed, 14 May 2025 23:49:33 -0700 Subject: [PATCH] Total switch of export params for movement params and modifiers, state is next. --- lib/classes/movement_parameters.gd | 84 +++++++++---------- lib/classes/state_animated_actor.gd | 16 ++-- lib/classes/state_modifier_movement.gd | 65 +++++++------- src/Interactables/modifiers/icy_surface.tres | 8 -- .../modifiers/left_conveyor.tres | 8 -- src/Interactables/modifiers/left_wind.tres | 8 -- .../playerE/PlayerE-Movement_StateReceiver.gd | 1 + src/actors/players/playerE/PlayerE.gd | 2 +- src/classes/velocity_controller.gd | 76 ++++++++--------- 9 files changed, 119 insertions(+), 149 deletions(-) diff --git a/lib/classes/movement_parameters.gd b/lib/classes/movement_parameters.gd index fe28aa7..239aab3 100644 --- a/lib/classes/movement_parameters.gd +++ b/lib/classes/movement_parameters.gd @@ -9,10 +9,10 @@ export(PoolVector2Array) var _acceleration = PoolVector2Array([Vector2(0,0),Vect ## Vector based ones for x and y -export var base_move_speed :Vector2 -export var base_move_acceleration :Vector2 -export var move_speed_modifier :Vector2 -export var move_speed_modifier_acceleration :Vector2 +#export var base_move_speed :Vector2 +#export var base_move_acceleration :Vector2 +#export var move_speed_modifier :Vector2 +#export var move_speed_modifier_acceleration :Vector2 export var jerk_factor :Vector2 var gravity: int = ProjectSettings.get_setting("physics/2d/default_gravity") @@ -62,15 +62,15 @@ func apply_state_modifier(_modifier :StateModifierMovement, _movement_direction #_modifier.direction == _modifier.APPLIED_DIRECTIONS.LEFT_OR_UP match _modifier.modifier_type: StateModifierMovement.SUB_TYPE.NEGATIVE_CONSTRAINT: - var adjusted_move_speed = base_move_speed.x + _modifier.horizontal_speed - ## We crossed the zero from the base - if sign(adjusted_move_speed) != sign(base_move_speed.x): - base_move_speed.x = 0.0 - else: - base_move_speed.x = adjusted_move_speed +# var adjusted_move_speed = base_move_speed.x + _modifier.horizontal_speed +# ## We crossed the zero from the base +# if sign(adjusted_move_speed) != sign(base_move_speed.x): +# base_move_speed.x = 0.0 +# else: +# base_move_speed.x = adjusted_move_speed var speed :Vector2 = get_speed_start(_modifier.direction) - adjusted_move_speed = get_speed_start(_modifier.direction) + _modifier.speed_start + var adjusted_move_speed = get_speed_start(_modifier.direction) + _modifier.speed_start if sign(adjusted_move_speed.x) != sign(speed.x): speed.x = 0.0 else: @@ -94,14 +94,14 @@ func apply_state_modifier(_modifier :StateModifierMovement, _movement_direction set_speed_end(_modifier.direction, speed) - var adjusted_accel = base_move_acceleration.x + _modifier.horizontal_acceleration - if sign(adjusted_accel) != sign(base_move_acceleration.x): - base_move_acceleration.x = 0.0 - else: - base_move_acceleration.x = adjusted_accel +# var adjusted_accel = base_move_acceleration.x + _modifier.horizontal_acceleration +# if sign(adjusted_accel) != sign(base_move_acceleration.x): +# base_move_acceleration.x = 0.0 +# else: +# base_move_acceleration.x = adjusted_accel var accel :Vector2 = get_acceleration(_modifier.direction) - adjusted_accel = get_acceleration(_modifier.direction) + _modifier.acceleration + var adjusted_accel = get_acceleration(_modifier.direction) + _modifier.acceleration if sign(adjusted_accel.x) != sign(accel.x): accel.x = 0.0 else: @@ -117,26 +117,26 @@ func apply_state_modifier(_modifier :StateModifierMovement, _movement_direction ##TODO: Um, modifiers are a little weirder for this #move_speed_modifier.x += _modifier.horizontal_speed_offset - var speed_differance = base_move_speed.x + (move_speed_modifier.x + _modifier.horizontal_speed_offset) - if sign(speed_differance) != sign(base_move_speed.x) and base_move_speed.x != 0: - ## Add the inverse of the modifier instead - move_speed_modifier.x += speed_differance * - 1 - else: - move_speed_modifier.x += _modifier.horizontal_speed_offset - - move_speed_modifier_acceleration.x += _modifier.horizontal_speed_offset_acceleration - move_speed_modifier.y += _modifier.vertical_speed_offset - move_speed_modifier_acceleration.y += _modifier.vertical_speed_offset_acceleration +# var speed_differance = base_move_speed.x + (move_speed_modifier.x + _modifier.horizontal_speed_offset) +# if sign(speed_differance) != sign(base_move_speed.x) and base_move_speed.x != 0: +# ## Add the inverse of the modifier instead +# move_speed_modifier.x += speed_differance * - 1 +# else: +# move_speed_modifier.x += _modifier.horizontal_speed_offset +# +# move_speed_modifier_acceleration.x += _modifier.horizontal_speed_offset_acceleration +# move_speed_modifier.y += _modifier.vertical_speed_offset +# move_speed_modifier_acceleration.y += _modifier.vertical_speed_offset_acceleration _: - base_move_speed.x += _modifier.horizontal_speed - base_move_acceleration.x += _modifier.horizontal_acceleration - move_speed_modifier.x += _modifier.horizontal_speed_offset - move_speed_modifier_acceleration.x += _modifier.horizontal_speed_offset_acceleration - - base_move_speed.y += _modifier.vertical_speed - base_move_acceleration.y += _modifier.vertical_acceleration - move_speed_modifier.y += _modifier.vertical_speed_offset - move_speed_modifier_acceleration.y += _modifier.vertical_speed_offset_acceleration +# base_move_speed.x += _modifier.horizontal_speed +# base_move_acceleration.x += _modifier.horizontal_acceleration +# move_speed_modifier.x += _modifier.horizontal_speed_offset +# move_speed_modifier_acceleration.x += _modifier.horizontal_speed_offset_acceleration +# +# base_move_speed.y += _modifier.vertical_speed +# base_move_acceleration.y += _modifier.vertical_acceleration +# move_speed_modifier.y += _modifier.vertical_speed_offset +# move_speed_modifier_acceleration.y += _modifier.vertical_speed_offset_acceleration set_speed_start( _modifier.direction, @@ -154,12 +154,12 @@ func apply_state_modifier(_modifier :StateModifierMovement, _movement_direction if (true): #DEGUG var foo = 2+2 - UiManager.debug_text = ( #"H_Speed x Dir: " + str(h_speed) + str('duh') + - "BaseSpeed Fm:{0} To:{1}".format({"0":"%5.2f" % base_move_speed.x, "1":"%5.2f" % base_move_speed.y}) + - "\nSpeedMod Fm:{0} To:{1}".format({"0":"%5.2f" % move_speed_modifier.x, "1":"%5.2f" % move_speed_modifier.y}) + - "\nMoveAccel: {0}, {1}".format({"0":"%4.1f" % base_move_acceleration.x, "1":"%4.1f" % base_move_acceleration.y}) + - "\nType: " + str(_modifier.modifier_type) - ) +# UiManager.debug_text = ( #"H_Speed x Dir: " + str(h_speed) + str('duh') + +# "BaseSpeed Fm:{0} To:{1}".format({"0":"%5.2f" % base_move_speed.x, "1":"%5.2f" % base_move_speed.y}) + +# "\nSpeedMod Fm:{0} To:{1}".format({"0":"%5.2f" % move_speed_modifier.x, "1":"%5.2f" % move_speed_modifier.y}) + +# "\nMoveAccel: {0}, {1}".format({"0":"%4.1f" % base_move_acceleration.x, "1":"%4.1f" % base_move_acceleration.y}) + +# "\nType: " + str(_modifier.modifier_type) +# ) diff --git a/lib/classes/state_animated_actor.gd b/lib/classes/state_animated_actor.gd index ad69c1a..1dc577e 100644 --- a/lib/classes/state_animated_actor.gd +++ b/lib/classes/state_animated_actor.gd @@ -81,14 +81,14 @@ func get_movement_parameters() -> MovementParameters: movement_parameters.jerk_factor = jerk_factor ## Old stuff - movement_parameters.base_move_speed.x = horizontal_speed - movement_parameters.base_move_acceleration.x = horizontal_acceleration - movement_parameters.move_speed_modifier.x = horizontal_speed_offset - movement_parameters.move_speed_modifier_acceleration.x = horizontal_speed_offset_acceleration - movement_parameters.base_move_speed.y = vertical_speed - movement_parameters.base_move_acceleration.y = vertical_acceleration - movement_parameters.move_speed_modifier.y = vertical_speed_offset - movement_parameters.move_speed_modifier_acceleration.y = vertical_speed_offset_acceleration +# movement_parameters.base_move_speed.x = horizontal_speed +# movement_parameters.base_move_acceleration.x = horizontal_acceleration +# movement_parameters.move_speed_modifier.x = horizontal_speed_offset +# movement_parameters.move_speed_modifier_acceleration.x = horizontal_speed_offset_acceleration +# movement_parameters.base_move_speed.y = vertical_speed +# movement_parameters.base_move_acceleration.y = vertical_acceleration +# movement_parameters.move_speed_modifier.y = vertical_speed_offset +# movement_parameters.move_speed_modifier_acceleration.y = vertical_speed_offset_acceleration return movement_parameters diff --git a/lib/classes/state_modifier_movement.gd b/lib/classes/state_modifier_movement.gd index 5693449..a7e7746 100644 --- a/lib/classes/state_modifier_movement.gd +++ b/lib/classes/state_modifier_movement.gd @@ -18,20 +18,20 @@ export(Vector2) var speed_end export(Vector2) var acceleration ## Movement Modifiers -export var horizontal_speed: float = 0 -export var horizontal_acceleration: float = 0 -## Movement Speed Offsets (Positive or Negative) -export var horizontal_speed_offset: float = 0 -## Applies only if offset applies -export var horizontal_speed_offset_acceleration: float = 0 -#export var jerk_factor: float = 0 - -export var vertical_speed: float = 0 -export var vertical_acceleration: float = 0 -## Movement Speed Offsets (Positive or Negative) -export var vertical_speed_offset: float = 0 -## Applies only if offset applies -export var vertical_speed_offset_acceleration: float = 0 +#export var horizontal_speed: float = 0 +#export var horizontal_acceleration: float = 0 +### Movement Speed Offsets (Positive or Negative) +#export var horizontal_speed_offset: float = 0 +### Applies only if offset applies +#export var horizontal_speed_offset_acceleration: float = 0 +##export var jerk_factor: float = 0 +# +#export var vertical_speed: float = 0 +#export var vertical_acceleration: float = 0 +### Movement Speed Offsets (Positive or Negative) +#export var vertical_speed_offset: float = 0 +### Applies only if offset applies +#export var vertical_speed_offset_acceleration: float = 0 export var gravity: int = 0 @@ -52,21 +52,24 @@ func _to_string(): func reset(): .reset() modifier_type = SUB_TYPE.NONE - direction = 0.0 - horizontal_speed = 0 - horizontal_acceleration = 0 - ## Movement Speed Offsets (Positive or Negative) - horizontal_speed_offset = 0 - ## Applies only if offset applies - horizontal_speed_offset_acceleration = 0 +# direction = 0.0 +# horizontal_speed = 0 +# horizontal_acceleration = 0 +# ## Movement Speed Offsets (Positive or Negative) +# horizontal_speed_offset = 0 +# ## Applies only if offset applies +# horizontal_speed_offset_acceleration = 0 #jerk_factor = 0 func copy(_copy_state: StateModifier): .copy(_copy_state) modifier_type = _copy_state.modifier_type if _copy_state.to_string() == "StateModifierMovement": - _copy_state.horizontal_speed = horizontal_speed - _copy_state.horizontal_acceleration = horizontal_acceleration + #_copy_state.horizontal_speed = horizontal_speed + _copy_state.speed.start = speed_start + _copy_state.speed_end = speed_end + #_copy_state.horizontal_acceleration = horizontal_acceleration + _copy_state.acceleration = acceleration ## Overrident to check whether this state is a grounded and this modifier ## should only apply while in the air. @@ -94,13 +97,13 @@ func merge(_merge_from_modifier: StateModifier): speed_start += _merge_from_modifier.speed_start acceleration += _merge_from_modifier.acceleration - horizontal_speed += _merge_from_modifier.horizontal_speed - horizontal_acceleration += _merge_from_modifier.horizontal_acceleration - horizontal_speed_offset += _merge_from_modifier.horizontal_speed_offset - horizontal_speed_offset_acceleration += _merge_from_modifier.horizontal_speed_offset_acceleration - vertical_speed += _merge_from_modifier.vertical_speed - vertical_acceleration += _merge_from_modifier.vertical_acceleration - vertical_speed_offset += _merge_from_modifier.vertical_speed_offset - vertical_speed_offset_acceleration += _merge_from_modifier.vertical_speed_offset_acceleration +# horizontal_speed += _merge_from_modifier.horizontal_speed +# horizontal_acceleration += _merge_from_modifier.horizontal_acceleration +# horizontal_speed_offset += _merge_from_modifier.horizontal_speed_offset +# horizontal_speed_offset_acceleration += _merge_from_modifier.horizontal_speed_offset_acceleration +# vertical_speed += _merge_from_modifier.vertical_speed +# vertical_acceleration += _merge_from_modifier.vertical_acceleration +# vertical_speed_offset += _merge_from_modifier.vertical_speed_offset +# vertical_speed_offset_acceleration += _merge_from_modifier.vertical_speed_offset_acceleration direction = _merge_from_modifier.direction only_grounded = _merge_from_modifier.only_grounded diff --git a/src/Interactables/modifiers/icy_surface.tres b/src/Interactables/modifiers/icy_surface.tres index 414da30..dd94cd0 100644 --- a/src/Interactables/modifiers/icy_surface.tres +++ b/src/Interactables/modifiers/icy_surface.tres @@ -13,14 +13,6 @@ direction = 0 speed_start = Vector2( 0, 0 ) speed_end = Vector2( 0, 0 ) acceleration = Vector2( -250, 1.36422e-12 ) -horizontal_speed = 0.0 -horizontal_acceleration = -250.0 -horizontal_speed_offset = 0.0 -horizontal_speed_offset_acceleration = 0.0 -vertical_speed = 0.0 -vertical_acceleration = 0.0 -vertical_speed_offset = 0.0 -vertical_speed_offset_acceleration = 0.0 gravity = 0 only_grounded = true processing_mode = 0 diff --git a/src/Interactables/modifiers/left_conveyor.tres b/src/Interactables/modifiers/left_conveyor.tres index 0b85c95..f40704d 100644 --- a/src/Interactables/modifiers/left_conveyor.tres +++ b/src/Interactables/modifiers/left_conveyor.tres @@ -13,14 +13,6 @@ direction = -1 speed_start = Vector2( 30, 1.36422e-12 ) speed_end = Vector2( 30, 1.36422e-12 ) acceleration = Vector2( 0, 0 ) -horizontal_speed = -30.0 -horizontal_acceleration = 0.0 -horizontal_speed_offset = 0.0 -horizontal_speed_offset_acceleration = 0.0 -vertical_speed = 0.0 -vertical_acceleration = 0.0 -vertical_speed_offset = 0.0 -vertical_speed_offset_acceleration = 0.0 gravity = 0 only_grounded = true processing_mode = 0 diff --git a/src/Interactables/modifiers/left_wind.tres b/src/Interactables/modifiers/left_wind.tres index a2e1dad..3efe933 100644 --- a/src/Interactables/modifiers/left_wind.tres +++ b/src/Interactables/modifiers/left_wind.tres @@ -13,14 +13,6 @@ direction = -1 speed_start = Vector2( 30, 1.36422e-12 ) speed_end = Vector2( 30, 1.36422e-12 ) acceleration = Vector2( 0, 0 ) -horizontal_speed = -30.0 -horizontal_acceleration = 0.0 -horizontal_speed_offset = 0.0 -horizontal_speed_offset_acceleration = 0.0 -vertical_speed = 0.0 -vertical_acceleration = 0.0 -vertical_speed_offset = 0.0 -vertical_speed_offset_acceleration = 0.0 gravity = 0 only_grounded = false processing_mode = 0 diff --git a/src/actors/players/playerE/PlayerE-Movement_StateReceiver.gd b/src/actors/players/playerE/PlayerE-Movement_StateReceiver.gd index e0adea8..22b5613 100644 --- a/src/actors/players/playerE/PlayerE-Movement_StateReceiver.gd +++ b/src/actors/players/playerE/PlayerE-Movement_StateReceiver.gd @@ -11,6 +11,7 @@ onready var stamina_component = $"%Stamina_Component" var state_stamina_cost :Dictionary func _ready(): + velocity_controller.debug = true #var state_ref :State #var state_name :String #state_name = 'jump' diff --git a/src/actors/players/playerE/PlayerE.gd b/src/actors/players/playerE/PlayerE.gd index c2dde89..8771456 100644 --- a/src/actors/players/playerE/PlayerE.gd +++ b/src/actors/players/playerE/PlayerE.gd @@ -72,7 +72,7 @@ func _ready(): tired_debuff_modifier.setup('so_tired', StateModifierMovement.SUB_TYPE.NEGATIVE_CONSTRAINT) tired_debuff_modifier.speed_start = Vector2(-40,0) - tired_debuff_modifier.horizontal_speed = -40 + #tired_debuff_modifier.horizontal_speed = -40 tired_debuff_modifier.only_grounded = true movement_state_machine.push_state_modifier(tired_debuff_modifier) diff --git a/src/classes/velocity_controller.gd b/src/classes/velocity_controller.gd index fb59542..2e838d6 100644 --- a/src/classes/velocity_controller.gd +++ b/src/classes/velocity_controller.gd @@ -120,13 +120,13 @@ func calculate_velocity(_delta :float, ## Acceleration is always postive because we use the # move toward functions. - calc_acceleration.x = abs(resolve_h_acceleration(movement_parameters, move_direction.x)) -# if move_direction.x != 0: -# calc_acceleration.x = movement_parameters.get_acceleration(0).x -# if move_direction.y != 0: -# calc_acceleration.y = movement_parameters.get_acceleration(0).y + #calc_acceleration.x = abs(resolve_h_acceleration(movement_parameters, move_direction.x)) + if sign(move_direction.x) != 0: + calc_acceleration.x = movement_parameters.get_acceleration(0).x + if sign(move_direction.y) != 0: + calc_acceleration.y = movement_parameters.get_acceleration(0).y - if debug and movement_parameters.debug_name == 'roll': + if debug and movement_parameters.debug_name == 'move': var foo = 2+2 ## We are always moving from h_speed.x towards y at a given rate ## if we have a difference of speed and an acceleration @@ -267,49 +267,39 @@ func placement_to_speed_range(speed: float, speed_range: Vector2) -> int: ## Returns an Vector where x is MIN_SPEED and y is MAX_SPEED func resolve_h_speed(_params :MovementParameters) -> Vector2: - var base_speed :float = _params.base_move_speed.x - ## if a speed difference applies - if _params.move_speed_modifier.x != 0: - var speed_differance = base_speed + _params.move_speed_modifier.x - - return(Vector2(base_speed, speed_differance)) - return Vector2(base_speed,base_speed) +# var base_speed :float = _params.base_move_speed.x +# ## if a speed difference applies +# if _params.move_speed_modifier.x != 0: +# var speed_differance = base_speed + _params.move_speed_modifier.x +# +# return(Vector2(base_speed, speed_differance)) +# return Vector2(base_speed,base_speed) + return Vector2(0,0) func resolve_v_speed(_params :MovementParameters) -> Vector2: - var base_speed :float = _params.base_move_speed.y - ## if a speed difference applies - if _params.move_speed_modifier.y != 0: - var speed_differance = base_speed + _params.move_speed_modifier.y - - return(Vector2(base_speed, speed_differance)) - return Vector2(base_speed,base_speed) +# var base_speed :float = _params.base_move_speed.y +# ## if a speed difference applies +# if _params.move_speed_modifier.y != 0: +# var speed_differance = base_speed + _params.move_speed_modifier.y +# +# return(Vector2(base_speed, speed_differance)) +# return Vector2(base_speed,base_speed) + return Vector2(0,0) func resolve_h_acceleration(_params :MovementParameters, _move_direction :float) -> float: ## TODO: Adjust for jerk, determine if we're currently experiencing accel ## if a speed difference applies - var _acceleration :float = 0.0 - var base_speed :float = _params.base_move_speed.x - if _params.move_speed_modifier.x != 0: - var speed_differance = base_speed + _params.move_speed_modifier.x - _acceleration = _params.base_move_acceleration.x + _params.move_speed_modifier_acceleration.x - ##WIP: Add part where offset acceleration only applies until the inertia equals the offset or whatever -# if sign(_params["_base_h_move_modifier_move_acceleration"]) == -1 and abs(_inertia.x) >= speed_differance: -# #print("I should add the modifier acceleration maybe?") -# _acceleration += _params["_base_h_move_modifier_move_acceleration"] -# else: -# print ("not yet.") - else: - _acceleration = _params.base_move_acceleration.x - - ## This works but I want to try something differant. -# if _inertia.x != 0.0 and sign(_inertia.x) != sign(_move_direction): -# return _acceleration * -1 -# elif sign(_move_direction) != 0: -# ## If no velocity or it matches just return as is. -# return _acceleration - - if sign(_move_direction) != 0: - return _acceleration +# var _acceleration :float = 0.0 +# var base_speed :float = _params.base_move_speed.x +# if _params.move_speed_modifier.x != 0: +# var speed_differance = base_speed + _params.move_speed_modifier.x +# _acceleration = _params.base_move_acceleration.x + _params.move_speed_modifier_acceleration.x +# +# else: +# _acceleration = _params.base_move_acceleration.x +# +# if sign(_move_direction) != 0: +# return _acceleration # No accel returned unless intended return 0.0