From 38696b93989cd5c3f009e2a95e1a8776cecdd259 Mon Sep 17 00:00:00 2001 From: Nitsud Yarg Date: Sat, 29 Jun 2024 10:03:48 -0700 Subject: [PATCH] Working on a modifier property set for merging --- project.godot | 6 ++++++ src/state_modifier.gd | 27 ++++++++++++++++++++++----- src/state_modifier_properties.gd | 16 ++++++++++++++++ 3 files changed, 44 insertions(+), 5 deletions(-) create mode 100644 src/state_modifier_properties.gd diff --git a/project.godot b/project.godot index 821e21d..5c62422 100644 --- a/project.godot +++ b/project.godot @@ -44,6 +44,11 @@ _global_script_classes=[ { "language": "GDScript", "path": "res://src/Level.gd" }, { +"base": "Reference", +"class": "ModifierProperties", +"language": "GDScript", +"path": "res://src/state_modifier_properties.gd" +}, { "base": "Node", "class": "MovementComponent", "language": "GDScript", @@ -87,6 +92,7 @@ _global_script_class_icons={ "Interactable": "", "Interactable_Receiver": "", "Level": "", +"ModifierProperties": "", "MovementComponent": "", "State": "", "StateAnimatedActor": "", diff --git a/src/state_modifier.gd b/src/state_modifier.gd index a2d625e..a94ce2a 100644 --- a/src/state_modifier.gd +++ b/src/state_modifier.gd @@ -14,10 +14,15 @@ enum TYPE {NONE,EXIT_ANIMATION, ANIMATION_SUFFIX, REPLACE_ANIMATION} var debug_state: bool = false +## These should be the original properties set when the modifier is created. +# property changes can be applied over time but these are the instantiated values. +var modifier_properties: ModifierProperties + ## Animation modifier variables ## The name of the animation that could be applied and starting frame var animation_name: String var starting_frame: int = 0 +##TODO: Animation speed ## Modification Type ## if an animation is specified, the default behavior will be just to override @@ -64,12 +69,20 @@ var state_call_function: FuncRef # # return StateModifier.new() # -#func merge_modifier(merging_mod: StateModifier) -> StateModifier: -# var new_modifier = StateModifier.new() -# new_modifier.ready(animation_name, modifier_type, timeout_seconds) -# -# return StateModifier.new() +func merge_modifier(merging_mod: ModifierProperties): + if merging_mod.modifier_type != TYPE.NONE: + print("Warning Merging modifier types that aren't set to 'none' is not supported!") + return + # Can't support timeouts or animation stuff right now. + #timeout_seconds = merging_mod.timeout_seconds + move_speed = merging_mod.move_speed + gravity = merging_mod.gravity + move_speed_modifier = merging_mod.move_speed_modifier + move_speed_modifier_decay = merging_mod.move_speed_modifier_decay + +func get_modifier_properties() -> ModifierProperties: + return ModifierProperties.new( move_speed, gravity, move_speed_modifier, move_speed_modifier_decay) func ready(modifier_name:String, anim_name:String = '', type = TYPE.NONE, timeout : float = 0, parent:Node = null, function_name : String = "") -> Timer: # If somebody forgot to specify the type @@ -79,6 +92,9 @@ func ready(modifier_name:String, anim_name:String = '', type = TYPE.NONE, timeou modifier_type = type # if parent != null and function_name != "": # state_call_function = funcref(parent, function_name) + + modifier_properties = ModifierProperties.new(0,0,0,0) + if timeout > 0: state_timeout = Timer.new() state_timeout.wait_time = timeout @@ -86,6 +102,7 @@ func ready(modifier_name:String, anim_name:String = '', type = TYPE.NONE, timeou state_timeout.autostart = false return state_timeout #add_child(state_timeout) + #ModifierProperties.new() return null diff --git a/src/state_modifier_properties.gd b/src/state_modifier_properties.gd new file mode 100644 index 0000000..a09ef84 --- /dev/null +++ b/src/state_modifier_properties.gd @@ -0,0 +1,16 @@ +class_name ModifierProperties +extends Reference + +var modifier_type: int = 0 +#var timeout_seconds: float = 0.0 +var move_speed: float = 0.0 +var gravity:int = 0 +var move_speed_modifier: float = 0.0 +var move_speed_modifier_decay: float = 0.0 + +func _init( p_move_speed:float, p_gravity:int , p_move_speed_modifier:float, p_move_speed_modifier_decay:float): + #timeout_seconds = p_timeout_seconds + move_speed = p_move_speed + gravity = p_gravity + move_speed_modifier = p_move_speed_modifier + move_speed_modifier_decay = p_move_speed_modifier_decay