64 lines
1.7 KiB
GDScript
64 lines
1.7 KiB
GDScript
@tool
|
|
class_name TurnActionNode
|
|
extends "res://addons/cutscene_editor/editor/nodes/BaseGraphNode.gd"
|
|
|
|
# Node for TurnAction
|
|
|
|
func _init() -> void:
|
|
node_type = "turn"
|
|
node_id = "turn_" + str(randi())
|
|
title = "Turn"
|
|
modulate = Color(0.5, 1.0, 0.5) # Green
|
|
|
|
# One input and one output connection
|
|
var slot = 0
|
|
set_slot(slot, true, 0, Color(0, 0, 0), true, 0, Color(0, 0, 0))
|
|
|
|
func _ready() -> void:
|
|
super._ready()
|
|
# Initialize default parameters
|
|
action_parameters["character"] = ""
|
|
action_parameters["target"] = ""
|
|
action_parameters["turn_speed"] = 2.0
|
|
|
|
func _setup_parameter_fields() -> void:
|
|
# Character field
|
|
var char_label = Label.new()
|
|
char_label.text = "Character:"
|
|
add_child(char_label)
|
|
|
|
var char_field = LineEdit.new()
|
|
char_field.text = action_parameters["character"]
|
|
char_field.connect("text_changed", _on_character_changed)
|
|
add_child(char_field)
|
|
|
|
# Target field
|
|
var target_label = Label.new()
|
|
target_label.text = "Target:"
|
|
add_child(target_label)
|
|
|
|
var target_field = LineEdit.new()
|
|
target_field.text = action_parameters["target"]
|
|
target_field.connect("text_changed", _on_target_changed)
|
|
add_child(target_field)
|
|
|
|
# Turn speed field
|
|
var speed_label = Label.new()
|
|
speed_label.text = "Turn Speed:"
|
|
add_child(speed_label)
|
|
|
|
var speed_field = LineEdit.new()
|
|
speed_field.text = str(action_parameters["turn_speed"])
|
|
speed_field.connect("text_changed", _on_turn_speed_changed)
|
|
add_child(speed_field)
|
|
|
|
func _on_character_changed(new_text: String) -> void:
|
|
set_parameter("character", new_text)
|
|
|
|
func _on_target_changed(new_text: String) -> void:
|
|
set_parameter("target", new_text)
|
|
|
|
func _on_turn_speed_changed(new_text: String) -> void:
|
|
var value = float(new_text) if new_text.is_valid_float() else 2.0
|
|
set_parameter("turn_speed", value)
|