Add lever and jump pad components with activation logic

This commit is contained in:
2025-04-25 22:41:35 +02:00
parent 9b2ca61163
commit 8959fd4b9f
323 changed files with 12844 additions and 18 deletions

View File

@@ -0,0 +1,60 @@
extends EditorInspectorPlugin
## This inspector plugin will show an Execute button for action properties in
## SS2D_Shape.
##
## To add an action property export it with:
##
## @export_placeholder("ActionProperty") var ...
##
## Then, when an action is executed by user (by pressing an Execute button in inspector),
## setter will be called with non-empty string:
##
## func _action_property_setter(value: String) -> void:
## if value.size() > 0:
## ## Action is executed
##
class ActionPropertyEditor:
extends EditorProperty
signal action_pressed
var button: Button
func _init() -> void:
button = Button.new()
button.text = "Execute"
add_child(button)
button.connect("pressed", func() -> void: emit_signal("action_pressed"))
func _ready() -> void:
button.icon = get_theme_icon("TextEditorPlay", "EditorIcons")
func _can_handle(object: Object) -> bool:
if object is SS2D_Shape:
return true
return false
func _parse_property(
object: Object,
_type: Variant.Type,
name: String,
_hint_type: PropertyHint,
hint_string: String,
_usage_flags,
_wide: bool
) -> bool:
if hint_string == "ActionProperty":
var prop_editor := ActionPropertyEditor.new()
add_property_editor(name, prop_editor)
prop_editor.connect("action_pressed", self._on_action_pressed.bind(object, name))
return true
return false
func _on_action_pressed(object: Object, prop_name: String) -> void:
prints("Action executed:", prop_name.capitalize())
object.set(prop_name, "executed")