68 lines
2.7 KiB
GDScript
68 lines
2.7 KiB
GDScript
class_name MovementParameters
|
|
extends Reference
|
|
|
|
## 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
|
|
|
|
var gravity: int = ProjectSettings.get_setting("physics/2d/default_gravity")
|
|
var jerk: float = 0.0
|
|
# export var base_h_move_speed :float
|
|
# export var base_h_move_acceleration :float
|
|
# export var h_move_speed_modifier :float
|
|
# export var h_move_modifier_move_acceleration :float
|
|
|
|
# export var base_v_move_speed :float
|
|
# export var base_v_move_acceleration :float
|
|
# export var v_move_speed_modifier :float
|
|
# export var v_move_modifier_move_acceleration :float
|
|
|
|
func modify(_movement_parameters :MovementParameters):
|
|
pass
|
|
|
|
func apply_state_modifier(_modifier :StateModifierMovement, _movement_direction :float):
|
|
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 base_move_speed.x == 10:
|
|
var foo = 2+2
|
|
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_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
|
|
|
|
##TODO: Um, modifiers are a little weirder for this
|
|
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
|
|
|
|
|
|
|
|
# var movement_params :Dictionary = {
|
|
# "_base_h_move_speed" : _state.horizontal_speed,
|
|
# "_base_h_move_acceleration" : _state.horizontal_acceleration,
|
|
# "_base_h_move_speed_modifier" : _state.horizontal_speed_offset,
|
|
# "_base_h_move_modifier_move_acceleration" : _state.horizontal_speed_offset_acceleration,
|
|
# "_jerk_factor" : _state.jerk_factor,
|
|
# "_gravity" : _state.gravity
|
|
# }
|