You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
100 lines
2.7 KiB
100 lines
2.7 KiB
3 years ago
|
tool
|
||
|
extends "res://addons/dialogic/Editor/Events/Parts/EventPart.gd"
|
||
|
|
||
|
# has an event_data variable that stores the current data!!!
|
||
|
|
||
|
## node references
|
||
|
onready var input_feature = $HBox/InputValue
|
||
|
onready var input_field = $HBox/InputValue/InputField
|
||
|
onready var definition_picker = $HBox/DefinitionPicker
|
||
|
onready var operation_picker = $HBox/OperationPicker
|
||
|
|
||
|
onready var random_enabled_button = $HBox/RandomEnabled
|
||
|
onready var random_features = $HBox/RandomValue
|
||
|
onready var random_lower_limit = $HBox/RandomValue/LowerLimit
|
||
|
onready var random_upper_limit = $HBox/RandomValue/UpperLimit
|
||
|
|
||
|
# used to connect the signals
|
||
|
func _ready():
|
||
|
input_field.connect("text_changed", self, "_on_InputField_text_changed")
|
||
|
definition_picker.connect("data_changed", self, "_on_DefintionPicker_data_changed")
|
||
|
operation_picker.connect("data_changed", self, "_on_OperationPicker_data_changed")
|
||
|
|
||
|
random_enabled_button.icon = get_icon("MaterialPreviewCube", "EditorIcons")
|
||
|
|
||
|
# called by the event block
|
||
|
func load_data(data:Dictionary):
|
||
|
# First set the event_data
|
||
|
.load_data(data)
|
||
|
|
||
|
# Now update the ui nodes to display the data.
|
||
|
input_field.text = event_data['set_value']
|
||
|
definition_picker.load_data(data)
|
||
|
operation_picker.load_data(data)
|
||
|
|
||
|
switch_random_features(data.get('set_random', false))
|
||
|
|
||
|
random_lower_limit.value = data.get("random_lower_limit", 0)
|
||
|
random_upper_limit.value = data.get("random_upper_limit", 100)
|
||
|
|
||
|
# has to return the wanted preview, only useful for body parts
|
||
|
func get_preview():
|
||
|
return ''
|
||
|
|
||
|
func check_data():
|
||
|
if event_data['operation'] != '=':
|
||
|
if not event_data['set_value'].is_valid_float():
|
||
|
emit_signal("set_warning", DTS.translate("The selected operator requires a number!"))
|
||
|
return
|
||
|
|
||
|
emit_signal("remove_warning")
|
||
|
|
||
|
func _on_InputField_text_changed(text):
|
||
|
event_data['set_value'] = text
|
||
|
|
||
|
operation_picker.load_data(event_data)
|
||
|
definition_picker.load_data(event_data)
|
||
|
|
||
|
check_data()
|
||
|
|
||
|
# informs the parent about the changes!
|
||
|
data_changed()
|
||
|
|
||
|
func _on_DefintionPicker_data_changed(data):
|
||
|
event_data = data
|
||
|
|
||
|
operation_picker.load_data(data)
|
||
|
|
||
|
# informs the parent about the changes!
|
||
|
data_changed()
|
||
|
|
||
|
func _on_OperationPicker_data_changed(data):
|
||
|
event_data = data
|
||
|
|
||
|
definition_picker.load_data(data)
|
||
|
|
||
|
check_data()
|
||
|
|
||
|
# informs the parent about the changes!
|
||
|
data_changed()
|
||
|
|
||
|
func switch_random_features(enabled):
|
||
|
random_features.visible = enabled
|
||
|
input_feature.visible = !enabled
|
||
|
random_enabled_button.pressed = enabled
|
||
|
event_data['set_random'] = enabled
|
||
|
|
||
|
|
||
|
func _on_LowerLimit_value_changed(value):
|
||
|
event_data['random_lower_limit'] = value
|
||
|
|
||
|
data_changed()
|
||
|
|
||
|
func _on_UpperLimit_value_changed(value):
|
||
|
event_data['random_upper_limit'] = value
|
||
|
|
||
|
data_changed()
|
||
|
|
||
|
func _on_RandomEnabled_toggled(button_pressed):
|
||
|
switch_random_features(button_pressed)
|