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
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'})
|