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.

110 lines
4.6 KiB

6 months ago
@tool
class_name DialogiClearEvent
extends DialogicEvent
## Event that clears audio & visuals (not variables).
## Useful to make sure the scene is clear for a completely new thing.
var time := 1.0
var step_by_step := true
var clear_textbox := true
var clear_portraits := true
var clear_style := true
var clear_music := true
var clear_portrait_positions := true
var clear_background := true
################################################################################
## EXECUTE
################################################################################
func _execute() -> void:
var final_time := time
if dialogic.Inputs.auto_skip.enabled:
var time_per_event: float = dialogic.Inputs.auto_skip.time_per_event
final_time = min(time, time_per_event)
if clear_textbox and dialogic.has_subsystem("Text"):
dialogic.Text.update_dialog_text('')
dialogic.Text.hide_textbox()
dialogic.current_state = dialogic.States.IDLE
if step_by_step: await dialogic.get_tree().create_timer(final_time).timeout
if clear_portraits and dialogic.has_subsystem('Portraits') and len(dialogic.Portraits.get_joined_characters()) != 0:
if final_time == 0:
dialogic.Portraits.leave_all_characters(DialogicResourceUtil.guess_special_resource("PortraitAnimation", 'Instant In Or Out'), final_time, step_by_step)
else:
dialogic.Portraits.leave_all_characters("", final_time, step_by_step)
if step_by_step: await dialogic.get_tree().create_timer(final_time).timeout
if clear_background and dialogic.has_subsystem('Backgrounds') and dialogic.Backgrounds.has_background():
dialogic.Backgrounds.update_background('', '', final_time)
if step_by_step: await dialogic.get_tree().create_timer(final_time).timeout
if clear_music and dialogic.has_subsystem('Audio') and dialogic.Audio.has_music():
dialogic.Audio.update_music('', 0.0, "", final_time)
if step_by_step: await dialogic.get_tree().create_timer(final_time).timeout
if clear_style and dialogic.has_subsystem('Styles'):
dialogic.Styles.load_style()
if clear_portrait_positions and dialogic.has_subsystem('Portraits'):
dialogic.Portraits.reset_all_portrait_positions()
finish()
################################################################################
## INITIALIZE
################################################################################
func _init() -> void:
event_name = "Clear"
set_default_color('Color9')
event_category = "Other"
event_sorting_index = 2
################################################################################
## SAVING/LOADING
################################################################################
func get_shortcode() -> String:
return "clear"
func get_shortcode_parameters() -> Dictionary:
return {
#param_name : property_info
"time" : {"property": "time", "default": ""},
"step" : {"property": "step_by_step", "default": true},
"text" : {"property": "clear_textbox", "default": true},
"portraits" : {"property": "clear_portraits", "default": true},
"music" : {"property": "clear_music", "default": true},
"background": {"property": "clear_background", "default": true},
"positions" : {"property": "clear_portrait_positions", "default": true},
"style" : {"property": "clear_style", "default": true},
}
################################################################################
## EDITOR REPRESENTATION
################################################################################
func build_event_editor():
add_header_label('Clear')
add_body_edit('time', ValueType.NUMBER, {'left_text':'Time:'})
add_body_edit('step_by_step', ValueType.BOOL, {'left_text':'Step by Step:'}, 'time > 0')
add_body_line_break()
add_body_edit('clear_textbox', ValueType.BOOL_BUTTON, {'left_text':'Clear:', 'icon':load("res://addons/dialogic/Modules/Clear/clear_textbox.svg"), 'tooltip':'Clear Textbox'})
add_body_edit('clear_portraits', ValueType.BOOL_BUTTON, {'icon':load("res://addons/dialogic/Modules/Clear/clear_characters.svg"), 'tooltip':'Clear Portraits'})
add_body_edit('clear_background', ValueType.BOOL_BUTTON, {'icon':load("res://addons/dialogic/Modules/Clear/clear_background.svg"), 'tooltip':'Clear Background'})
add_body_edit('clear_music', ValueType.BOOL_BUTTON, {'icon':load("res://addons/dialogic/Modules/Clear/clear_music.svg"), 'tooltip':'Clear Music'})
add_body_edit('clear_style', ValueType.BOOL_BUTTON, {'icon':load("res://addons/dialogic/Modules/Clear/clear_style.svg"), 'tooltip':'Clear Style'})
add_body_edit('clear_portrait_positions', ValueType.BOOL_BUTTON, {'icon':load("res://addons/dialogic/Modules/Clear/clear_positions.svg"), 'tooltip':'Clear Portrait Positions'})