]> Untitled Git - wolf-seeking-sheep.git/blob - addons/dialogic/Modules/Clear/event_clear.gd
Adding import files
[wolf-seeking-sheep.git] / addons / dialogic / Modules / Clear / event_clear.gd
1 @tool
2 class_name DialogicClearEvent
3 extends DialogicEvent
4
5 ## Event that clears audio & visuals (not variables).
6 ## Useful to make sure the scene is clear for a completely new thing.
7
8 var time := 1.0
9 var step_by_step := true
10
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
17
18 ################################################################################
19 ##                                              EXECUTE
20 ################################################################################
21
22 func _execute() -> void:
23         var final_time := time
24
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)
28
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
34
35         if clear_portraits and dialogic.has_subsystem('Portraits') and len(dialogic.Portraits.get_joined_characters()) != 0:
36                 if final_time == 0:
37                         dialogic.Portraits.leave_all_characters("Instant", final_time, step_by_step)
38                 else:
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
41
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
45
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
51
52         if clear_style and dialogic.has_subsystem('Styles'):
53                 dialogic.Styles.change_style()
54
55         if clear_portrait_positions and dialogic.has_subsystem('Portraits'):
56                 dialogic.PortraitContainers.reset_all_containers()
57
58         if not step_by_step:
59                 await dialogic.get_tree().create_timer(final_time).timeout
60
61         finish()
62
63
64 ################################################################################
65 ##                                              INITIALIZE
66 ################################################################################
67
68 func _init() -> void:
69         event_name = "Clear"
70         set_default_color('Color9')
71         event_category = "Other"
72         event_sorting_index = 2
73
74
75 ################################################################################
76 ##                                              SAVING/LOADING
77 ################################################################################
78
79 func get_shortcode() -> String:
80         return "clear"
81
82
83 func get_shortcode_parameters() -> Dictionary:
84         return {
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},
94         }
95
96
97 ################################################################################
98 ##                                              EDITOR REPRESENTATION
99 ################################################################################
100
101 func build_event_editor() -> void:
102         add_header_label('Clear')
103
104         add_body_edit('time', ValueType.NUMBER, {'left_text':'Time:'})
105
106         add_body_edit('step_by_step', ValueType.BOOL, {'left_text':'Step by Step:'}, 'time > 0')
107         add_body_line_break()
108
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'})