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
115 lines
3.1 KiB
3 years ago
|
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
|