First work on dialogic, resized guild, and started implementing portraits.
This commit is contained in:
114
addons/dialogic/Modules/Jump/event_label.gd
Normal file
114
addons/dialogic/Modules/Jump/event_label.gd
Normal file
@@ -0,0 +1,114 @@
|
||||
@tool
|
||||
class_name DialogicLabelEvent
|
||||
extends DialogicEvent
|
||||
|
||||
## Event that is used as an anchor. You can use the DialogicJumpEvent to jump to this point.
|
||||
|
||||
|
||||
### Settings
|
||||
|
||||
## Used to identify the label. Duplicate names in a timeline will mean it always chooses the first.
|
||||
var name := ""
|
||||
var display_name := ""
|
||||
|
||||
|
||||
|
||||
################################################################################
|
||||
## EXECUTE
|
||||
################################################################################
|
||||
|
||||
func _execute() -> void:
|
||||
# This event is mainly implemented in the Jump subsystem.
|
||||
dialogic.Jump.passed_label.emit(
|
||||
{
|
||||
"identifier": name,
|
||||
"display_name": get_property_translated("display_name"),
|
||||
"display_name_orig": display_name,
|
||||
"timeline": DialogicResourceUtil.get_unique_identifier(dialogic.current_timeline.resource_path)
|
||||
})
|
||||
finish()
|
||||
|
||||
|
||||
################################################################################
|
||||
## INITIALIZE
|
||||
################################################################################
|
||||
|
||||
func _init() -> void:
|
||||
event_name = "Label"
|
||||
set_default_color('Color4')
|
||||
event_category = "Flow"
|
||||
event_sorting_index = 3
|
||||
|
||||
|
||||
func _get_icon() -> Resource:
|
||||
return load(self.get_script().get_path().get_base_dir().path_join('icon_label.png'))
|
||||
|
||||
|
||||
################################################################################
|
||||
## SAVING/LOADING
|
||||
################################################################################
|
||||
func to_text() -> String:
|
||||
if display_name.is_empty():
|
||||
return "label "+name
|
||||
else:
|
||||
return "label "+name+ " ("+display_name+")"
|
||||
|
||||
|
||||
|
||||
func from_text(string:String) -> void:
|
||||
var regex := RegEx.create_from_string(r'label +(?<name>[^(]+)(\((?<display_name>.+)\))?')
|
||||
var result := regex.search(string.strip_edges())
|
||||
if result:
|
||||
name = result.get_string('name').strip_edges()
|
||||
display_name = result.get_string('display_name').strip_edges()
|
||||
|
||||
|
||||
func is_valid_event(string:String) -> bool:
|
||||
if string.strip_edges().begins_with("label"):
|
||||
return true
|
||||
return false
|
||||
|
||||
|
||||
# this is only here to provide a list of default values
|
||||
# this way the module manager can add custom default overrides to this event.
|
||||
func get_shortcode_parameters() -> Dictionary:
|
||||
return {
|
||||
#param_name : property_info
|
||||
"name" : {"property": "name", "default": ""},
|
||||
"display" : {"property": "display_name", "default": ""},
|
||||
}
|
||||
|
||||
|
||||
func _get_translatable_properties() -> Array:
|
||||
return ["display_name"]
|
||||
|
||||
|
||||
func _get_property_original_translation(property_name:String) -> String:
|
||||
match property_name:
|
||||
'display_name':
|
||||
return display_name
|
||||
return ''
|
||||
|
||||
################################################################################
|
||||
## EDITOR REPRESENTATION
|
||||
################################################################################
|
||||
|
||||
func build_event_editor() -> void:
|
||||
add_header_edit('name', ValueType.SINGLELINE_TEXT, {'left_text':'Label', 'autofocus':true})
|
||||
add_body_edit('display_name', ValueType.SINGLELINE_TEXT, {'left_text':'Display Name:'})
|
||||
|
||||
|
||||
####################### CODE COMPLETION ########################################
|
||||
################################################################################
|
||||
|
||||
func _get_start_code_completion(_CodeCompletionHelper:Node, TextNode:TextEdit) -> void:
|
||||
TextNode.add_code_completion_option(CodeEdit.KIND_PLAIN_TEXT, 'label', 'label ', event_color.lerp(TextNode.syntax_highlighter.normal_color, 0.3))
|
||||
|
||||
|
||||
#################### SYNTAX HIGHLIGHTING #######################################
|
||||
################################################################################
|
||||
|
||||
func _get_syntax_highlighting(Highlighter:SyntaxHighlighter, dict:Dictionary, line:String) -> Dictionary:
|
||||
dict[line.find('label')] = {"color":event_color.lerp(Highlighter.normal_color, 0.3)}
|
||||
dict[line.find('label')+5] = {"color":event_color.lerp(Highlighter.normal_color, 0.5)}
|
||||
return dict
|
||||
Reference in New Issue
Block a user