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.

115 lines
3.1 KiB

tool
extends HBoxContainer
export (bool) var optional := false
var default_definition_text = 'Select Definition'
var default_condition_text = 'equal to'
onready var Definition = $Values/Definition
onready var Condition = $Values/Condition
onready var Value = $Values/Value
var options = [{
"text": "equal to",
"condition": "=="
},{
"text": "different from",
"condition": "!="
},{
"text": "greater than",
"condition": ">"
},{
"text": "greater or equal to",
"condition": ">="
},{
"text": "less than",
"condition": "<"
},{
"text": "less or equal to",
"condition": "<="
}
]
func _ready():
Definition.get_popup().connect("index_pressed", self, '_on_definition_selected')
Definition.connect("about_to_show", self, "_on_definition_about_to_show")
Condition.get_popup().connect("index_pressed", self, '_on_condition_selected')
Condition.connect("about_to_show", self, "_on_condition_about_to_show")
Value.connect("text_changed", self, "_on_value_changed")
$HasCondition.visible = false
$Values.visible = true
if optional:
$HasCondition.visible = true
$HasCondition/CheckBox.connect('toggled', self, '_on_toggle_visibility')
$Values.visible = false
func _on_toggle_visibility(checkbox_value):
$Values.visible = checkbox_value
if checkbox_value == false:
Definition.text = default_definition_text
Condition.text = default_condition_text
Value.text = ''
get_parent().event_data['definition'] = ''
get_parent().event_data['condition'] = ''
get_parent().event_data['value'] = ''
# Definition picker ------------------------------------------------------------
func set_definition(definition):
if definition != '':
for d in DialogicResources.get_default_definitions()['variables']:
if d['id'] == definition:
Definition.text = d['name']
else:
Definition.text = default_definition_text
func _on_definition_selected(index):
var definition = Definition.get_popup().get_item_metadata(index).get('id', '')
set_definition(definition)
# Set values on the parent
get_parent().event_data['definition'] = definition
func _on_definition_about_to_show():
Definition.get_popup().clear()
var index = 0
for d in DialogicUtil.get_default_definitions_list():
if d['type'] == 0:
Definition.get_popup().add_item(d['name'])
Definition.get_popup().set_item_metadata(index, d)
index += 1
# Condition picker -------------------------------------------------------------
func set_condition(condition):
for o in options:
if o['condition'] == condition:
Condition.text = o['text']
func _on_condition_selected(index):
var condition = Condition.get_popup().get_item_metadata(index).get('condition')
set_condition(condition)
# Set values on the parent
get_parent().event_data['condition'] = condition
func _on_condition_about_to_show():
Condition.get_popup().clear()
var index = 0
for o in options:
Condition.get_popup().add_item(o['text'])
Condition.get_popup().set_item_metadata(index, o)
index += 1
# Value ------------------------------------------------------------------------
func _on_value_changed(new_text):
# Set values on the parent
get_parent().event_data['value'] = new_text