2 class_name DialogicClearEvent
5 ## Event that clears audio & visuals (not variables).
6 ## Useful to make sure the scene is clear for a completely new thing.
9 var step_by_step := true
11 var clear_textbox := true
12 var clear_portraits := true
13 var clear_style := true
14 var clear_music := true
15 var clear_portrait_positions := true
16 var clear_background := true
18 ################################################################################
20 ################################################################################
22 func _execute() -> void:
23 var final_time := time
25 if dialogic.Inputs.auto_skip.enabled:
26 var time_per_event: float = dialogic.Inputs.auto_skip.time_per_event
27 final_time = min(time, time_per_event)
29 if clear_textbox and dialogic.has_subsystem("Text"):
30 dialogic.Text.update_dialog_text('')
31 dialogic.Text.hide_textbox()
32 dialogic.current_state = dialogic.States.IDLE
33 if step_by_step: await dialogic.get_tree().create_timer(final_time).timeout
35 if clear_portraits and dialogic.has_subsystem('Portraits') and len(dialogic.Portraits.get_joined_characters()) != 0:
37 dialogic.Portraits.leave_all_characters("Instant", final_time, step_by_step)
39 dialogic.Portraits.leave_all_characters("", final_time, step_by_step)
40 if step_by_step: await dialogic.get_tree().create_timer(final_time).timeout
42 if clear_background and dialogic.has_subsystem('Backgrounds') and dialogic.Backgrounds.has_background():
43 dialogic.Backgrounds.update_background('', '', final_time)
44 if step_by_step: await dialogic.get_tree().create_timer(final_time).timeout
46 if clear_music and dialogic.has_subsystem('Audio'):
47 for channel_id in dialogic.Audio.max_channels:
48 if dialogic.Audio.has_music(channel_id):
49 dialogic.Audio.update_music('', 0.0, "", final_time, channel_id)
50 if step_by_step: await dialogic.get_tree().create_timer(final_time).timeout
52 if clear_style and dialogic.has_subsystem('Styles'):
53 dialogic.Styles.change_style()
55 if clear_portrait_positions and dialogic.has_subsystem('Portraits'):
56 dialogic.PortraitContainers.reset_all_containers()
59 await dialogic.get_tree().create_timer(final_time).timeout
64 ################################################################################
66 ################################################################################
70 set_default_color('Color9')
71 event_category = "Other"
72 event_sorting_index = 2
75 ################################################################################
77 ################################################################################
79 func get_shortcode() -> String:
83 func get_shortcode_parameters() -> Dictionary:
85 #param_name : property_info
86 "time" : {"property": "time", "default": ""},
87 "step" : {"property": "step_by_step", "default": true},
88 "text" : {"property": "clear_textbox", "default": true},
89 "portraits" : {"property": "clear_portraits", "default": true},
90 "music" : {"property": "clear_music", "default": true},
91 "background": {"property": "clear_background", "default": true},
92 "positions" : {"property": "clear_portrait_positions", "default": true},
93 "style" : {"property": "clear_style", "default": true},
97 ################################################################################
98 ## EDITOR REPRESENTATION
99 ################################################################################
101 func build_event_editor() -> void:
102 add_header_label('Clear')
104 add_body_edit('time', ValueType.NUMBER, {'left_text':'Time:'})
106 add_body_edit('step_by_step', ValueType.BOOL, {'left_text':'Step by Step:'}, 'time > 0')
107 add_body_line_break()
109 add_body_edit('clear_textbox', ValueType.BOOL_BUTTON, {'left_text':'Clear:', 'icon':load("res://addons/dialogic/Modules/Clear/clear_textbox.svg"), 'tooltip':'Clear Textbox'})
110 add_body_edit('clear_portraits', ValueType.BOOL_BUTTON, {'icon':load("res://addons/dialogic/Modules/Clear/clear_characters.svg"), 'tooltip':'Clear Portraits'})
111 add_body_edit('clear_background', ValueType.BOOL_BUTTON, {'icon':load("res://addons/dialogic/Modules/Clear/clear_background.svg"), 'tooltip':'Clear Background'})
112 add_body_edit('clear_music', ValueType.BOOL_BUTTON, {'icon':load("res://addons/dialogic/Modules/Clear/clear_music.svg"), 'tooltip':'Clear Music'})
113 add_body_edit('clear_style', ValueType.BOOL_BUTTON, {'icon':load("res://addons/dialogic/Modules/Clear/clear_style.svg"), 'tooltip':'Clear Style'})
114 add_body_edit('clear_portrait_positions', ValueType.BOOL_BUTTON, {'icon':load("res://addons/dialogic/Modules/Clear/clear_positions.svg"), 'tooltip':'Clear Portrait Positions'})