@@ -74,10 +74,10 @@ var _autopauses := {}
74
74
## ##################################################################################################
75
75
76
76
func clear_game_state (_clear_flag := DialogicGameHandler .ClearFlags .FULL_CLEAR ) -> void :
77
- update_dialog_text ('' , true )
77
+ update_dialog_text ("" , true )
78
78
update_name_label (null )
79
- dialogic .current_state_info [' speaker' ] = ""
80
- dialogic .current_state_info [' text' ] = ''
79
+ dialogic .current_state_info [" speaker" ] = ""
80
+ dialogic .current_state_info [" text" ] = ""
81
81
82
82
set_text_reveal_skippable (ProjectSettings .get_setting ('dialogic/text/initial_text_reveal_skippable' , true ))
83
83
@@ -90,9 +90,7 @@ func clear_game_state(_clear_flag:=DialogicGameHandler.ClearFlags.FULL_CLEAR) ->
90
90
func load_game_state (_load_flag := LoadFlags .FULL_LOAD ) -> void :
91
91
update_textbox (dialogic .current_state_info .get ('text' , '' ), true )
92
92
update_dialog_text (dialogic .current_state_info .get ('text' , '' ), true )
93
- var character : DialogicCharacter = null
94
- if dialogic .current_state_info .get ('speaker' , "" ):
95
- character = load (dialogic .current_state_info .get ('speaker' , "" ))
93
+ var character : DialogicCharacter = get_current_speaker ()
96
94
97
95
if character :
98
96
update_name_label (character )
@@ -190,18 +188,18 @@ func update_dialog_text(text: String, instant := false, additional := false) ->
190
188
191
189
192
190
func _on_dialog_text_finished () -> void :
193
- text_finished .emit ({' text' :dialogic .current_state_info [' text' ], ' character' :dialogic .current_state_info [' speaker' ]})
191
+ text_finished .emit ({" text" :dialogic .current_state_info [" text" ], " character" :dialogic .current_state_info [" speaker" ]})
194
192
195
193
196
194
## Updates the visible name on all name labels nodes.
197
195
## If a name changes, the [signal speaker_updated] signal is emitted.
198
196
func update_name_label (character :DialogicCharacter ):
199
- var character_path := character .resource_path if character else ""
200
- var current_character_path : String = dialogic .current_state_info .get ("speaker" , "" )
197
+ var character_id := character .get_identifier () if character else ""
198
+ var current_character_id : String = dialogic .current_state_info .get ("speaker" , "" )
201
199
202
- if character_path != current_character_path :
203
- dialogic .current_state_info ['speaker' ] = character_path
200
+ if character_id != current_character_id :
204
201
speaker_updated .emit (character )
202
+ dialogic .current_state_info ["speaker" ] = character_id
205
203
206
204
var name_label_text := get_character_name_parsed (character )
207
205
@@ -214,8 +212,19 @@ func update_name_label(character:DialogicCharacter):
214
212
name_label .self_modulate = Color (1 ,1 ,1 ,1 )
215
213
216
214
215
+ func update_typing_sound_mood_from_character (character :DialogicCharacter , mood :String ) -> void :
216
+ if character .custom_info .get ("sound_moods" , {}).is_empty ():
217
+ update_typing_sound_mood ()
218
+ elif mood in character .custom_info .get ("sound_moods" , {}):
219
+ update_typing_sound_mood (character .custom_info .get ("sound_moods" , {})[mood ])
220
+ else :
221
+ var default_mood := character .custom_info .get ("sound_mood_default" )
222
+ update_typing_sound_mood (character .custom_info .get ("sound_moods" , {}).get (default_mood , {}))
223
+
224
+
225
+
217
226
func update_typing_sound_mood (mood :Dictionary = {}) -> void :
218
- for typing_sound in get_tree ().get_nodes_in_group (' dialogic_type_sounds' ):
227
+ for typing_sound in get_tree ().get_nodes_in_group (" dialogic_type_sounds" ):
219
228
typing_sound .load_overwrite (mood )
220
229
221
230
@@ -447,19 +456,12 @@ func get_character_name_parsed(character:DialogicCharacter) -> String:
447
456
## Returns the [class DialogicCharacter] of the current speaker.
448
457
## If there is no current speaker or the speaker is not found, returns null.
449
458
func get_current_speaker () -> DialogicCharacter :
450
- var speaker_path : String = dialogic .current_state_info .get ("speaker" , "" )
459
+ var speaker_id : String = dialogic .current_state_info .get ("speaker" , "" )
451
460
452
- if speaker_path .is_empty ():
461
+ if speaker_id .is_empty ():
453
462
return null
454
463
455
- var speaker_resource := load (speaker_path )
456
-
457
- if speaker_resource == null :
458
- return null
459
-
460
- var speaker_character := speaker_resource as DialogicCharacter
461
-
462
- return speaker_character
464
+ return DialogicResourceUtil .get_character_resource (speaker_id )
463
465
464
466
465
467
func _update_user_speed (_user_speed :float ) -> void :
@@ -596,9 +598,9 @@ func effect_signal(_text_node:Control, _skipped:bool, argument:String) -> void:
596
598
597
599
func effect_mood (_text_node :Control , _skipped :bool , argument :String ) -> void :
598
600
if argument .is_empty (): return
599
- if dialogic . current_state_info . get ( 'speaker' , "" ):
601
+ if get_current_speaker ( ):
600
602
update_typing_sound_mood (
601
- load ( dialogic . current_state_info . speaker ).custom_info .get ('sound_moods' , {}).get (argument , {}))
603
+ get_current_speaker ( ).custom_info .get ('sound_moods' , {}).get (argument , {}))
602
604
603
605
604
606
var modifier_select_regex := RegEx .create_from_string (r "(?<!\\ )\< [^\> ]+(\/ [^\> ]*)\> " )
0 commit comments