diff --git a/lib/classes/movement_parameters.gd b/lib/classes/movement_parameters.gd index 6c86be4..5f5e18b 100644 --- a/lib/classes/movement_parameters.gd +++ b/lib/classes/movement_parameters.gd @@ -26,7 +26,13 @@ export var debug_name :String func modify(_movement_parameters :MovementParameters): pass +func apply_multiple_modifiers( _modifiers: Array): + for m in _modifiers: + if m is StateModifierAnimatedActor: + apply_state_modifier(m) + func apply_state_modifier(_modifier :StateModifierMovement): + #_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 @@ -63,6 +69,13 @@ func apply_state_modifier(_modifier :StateModifierMovement): 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 + + 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/movement_state_receiver.gd b/lib/classes/movement_state_receiver.gd index 5944f36..b238eac 100644 --- a/lib/classes/movement_state_receiver.gd +++ b/lib/classes/movement_state_receiver.gd @@ -40,7 +40,7 @@ const LEFT = -1.0 const RIGHT = 1.0 func _ready(): - velocity_controller.debug = true + #velocity_controller.debug = true ## FuncRef to request state machine change state request_state_change = funcref(get_node(callable_state_machine), 'change_to_known_state') diff --git a/lib/classes/state_modifier.gd b/lib/classes/state_modifier.gd index 130e104..6e15950 100644 --- a/lib/classes/state_modifier.gd +++ b/lib/classes/state_modifier.gd @@ -31,7 +31,7 @@ var debug: bool = false ## Modification Type ## if an animation is specified, the default behavior will be just to override ## the state animation. Or perform a 'Replace Animation' -var modifier_type = TYPE.NONE +export(TYPE) var modifier_type = TYPE.NONE export var name :String = '' #var ready :bool = false diff --git a/lib/classes/state_modifier_movement.gd b/lib/classes/state_modifier_movement.gd index d6139ac..3fc2e72 100644 --- a/lib/classes/state_modifier_movement.gd +++ b/lib/classes/state_modifier_movement.gd @@ -8,7 +8,7 @@ export var horizontal_acceleration: float = 0 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 jerk_factor: float = 0 export var vertical_speed: float = 0 export var vertical_acceleration: float = 0 @@ -20,14 +20,22 @@ export var vertical_speed_offset_acceleration: float = 0 export var gravity: int = 0 ## Processing Directives (help determine how the merge function works) -var direction :float = 0.0 # -1, 0, 1 +enum APPLIED_DIRECTIONS { + LEFT_OR_UP = -1, + RELATIVE = 0, + RIGHT_OR_DOWN = 1 +} +export(APPLIED_DIRECTIONS) var direction :float = float(APPLIED_DIRECTIONS.RELATIVE) # -1, 0, 1 export var only_grounded :bool = false +## Ways to determine how modifiers are applied to movement parameters enum SUB_TYPE { NONE, # Basic physics modifier just adds numbers ## Disallows ability to surpass zero when applied to state kinematic values - NEGATIVE_CONSTRAINT + NEGATIVE_CONSTRAINT, + ONLY_ON_ZERO } +export(SUB_TYPE) var processing_mode func _to_string(): return "StateModifierMovement" @@ -42,7 +50,7 @@ func reset(): horizontal_speed_offset = 0 ## Applies only if offset applies horizontal_speed_offset_acceleration = 0 - jerk_factor = 0 + #jerk_factor = 0 func copy(_copy_state: StateModifier): .copy(_copy_state) diff --git a/src/Interactables/modifiers/icy_surface.tres b/src/Interactables/modifiers/icy_surface.tres index 954c751..475a6a0 100644 --- a/src/Interactables/modifiers/icy_surface.tres +++ b/src/Interactables/modifiers/icy_surface.tres @@ -6,16 +6,18 @@ resource_local_to_scene = true resource_name = "ice" script = ExtResource( 1 ) +modifier_type = 0 name = "ice_or_something" timeout_seconds = 0.0 horizontal_speed = 0.0 horizontal_acceleration = -250.0 horizontal_speed_offset = 0.0 horizontal_speed_offset_acceleration = 0.0 -jerk_factor = 0.0 vertical_speed = 0.0 vertical_acceleration = 0.0 vertical_speed_offset = 0.0 vertical_speed_offset_acceleration = 0.0 gravity = 0 +direction = 0 only_grounded = true +processing_mode = 0 diff --git a/src/Interactables/modifiers/left_conveyor.tres b/src/Interactables/modifiers/left_conveyor.tres new file mode 100644 index 0000000..14a1bd0 --- /dev/null +++ b/src/Interactables/modifiers/left_conveyor.tres @@ -0,0 +1,23 @@ +[gd_resource type="Resource" load_steps=2 format=2] + +[ext_resource path="res://lib/classes/state_modifier_movement.gd" type="Script" id=1] + +[resource] +resource_local_to_scene = true +resource_name = "conveyor_left" +script = ExtResource( 1 ) +modifier_type = 0 +name = "conveyor_left" +timeout_seconds = 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 +direction = -1 +only_grounded = true +processing_mode = 0 diff --git a/src/Interactables/modifiers/left_wind.tres b/src/Interactables/modifiers/left_wind.tres new file mode 100644 index 0000000..4794dea --- /dev/null +++ b/src/Interactables/modifiers/left_wind.tres @@ -0,0 +1,23 @@ +[gd_resource type="Resource" load_steps=2 format=2] + +[ext_resource path="res://lib/classes/state_modifier_movement.gd" type="Script" id=1] + +[resource] +resource_local_to_scene = true +resource_name = "wind_left" +script = ExtResource( 1 ) +modifier_type = 0 +name = "wind_left" +timeout_seconds = 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 +direction = -1 +only_grounded = false +processing_mode = 0