Attempt2/lib/classes/state_modifier_movement.gd

56 lines
1.9 KiB
GDScript

class_name StateModifierMovement
extends StateModifier
## Movement Modifiers
var horizontal_speed: float = 0
var horizontal_acceleration: float = 0
## Movement Speed Offsets (Positive or Negative)
var horizontal_speed_offset: float = 0
## Applies only if offset applies
var horizontal_speed_offset_acceleration: float = 0
var jerk_factor: float = 0
var gravity: int = 0
enum SUB_TYPE {
NONE, # Basic physics modifier just adds numbers
PASS_ZERO # Allows ability to surpass zero and move backwords
}
func _to_string():
return "StateModifierMovement"
func reset():
.reset()
modifier_type = SUB_TYPE.NONE
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
func merge(_merge_from_modifier: StateModifier):
.merge(_merge_from_modifier)
is_active = _merge_from_modifier.is_active
if modifier_type != SUB_TYPE.NONE and _merge_from_modifier.modifier_type != SUB_TYPE.NONE:
push_warning( "Attempt to push modifier type over existing one. Wut du?" )
if _merge_from_modifier.to_string() == "StateModifierMovement":
if modifier_type == SUB_TYPE.NONE and _merge_from_modifier.modifier_type != SUB_TYPE.NONE:
modifier_type = _merge_from_modifier.modifier_type
match _merge_from_modifier.modifier_type:
_:
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