Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,11 @@ const OPTIONAL_ANIMATION_FRAMES: Dictionary[StringName, int] = {
}

const DEFAULT_SPRITE_FRAME: SpriteFrames = preload("uid://vwf8e1v8brdp")
const DEFAULT_PLAYER_NAME := "Player Name"

## The character's name. This is used to highlight when the player's character
## is speaking during dialogue.
@export var player_name: String = "Player Name"
@export var player_name: String = DEFAULT_PLAYER_NAME

## The current player state.
@export var mode: Mode = Mode.USER_CONTROLLED:
Expand Down
15 changes: 11 additions & 4 deletions scenes/ui_elements/dialogue/components/balloon.gd
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,16 @@ const NPC_RIBBON_TYPE_VARIATION := &"NPCRibbon"
## Temporary game states
var temporary_game_states: Array = []:
set(new_value):
var player := get_tree().get_first_node_in_group("player") as Node2D
if player:
if "player_name" in player:
_player_name = player.player_name
new_value.append(player)
else:
# This ensures that the player_name variable is available in any dialogue.
# With this the dialogue file template can have {{ player_name }}.
new_value.append({"player_name": _player_name})
temporary_game_states = new_value
for state: Variant in new_value:
if state is Player:
locals["player_name"] = (state as Player).player_name

## See if we are waiting for the player
var is_waiting_for_input: bool = false
Expand All @@ -61,6 +67,7 @@ var dialogue_line: DialogueLine:
var mutation_cooldown: Timer = Timer.new()

var _locale: String = TranslationServer.get_locale()
var _player_name: String = Player.DEFAULT_PLAYER_NAME

## A sound player for voice lines (if they exist).
@onready var audio_stream_player: AudioStreamPlayer = %AudioStreamPlayer
Expand Down Expand Up @@ -163,7 +170,7 @@ func apply_dialogue_line() -> void:
character_panel.visible = not dialogue_line.character.is_empty()
character_panel.theme_type_variation = (
PLAYER_RIBBON_TYPE_VARIATION
if locals.get("player_name") == dialogue_line.character
if _player_name == dialogue_line.character
else NPC_RIBBON_TYPE_VARIATION
)
character_label.text = tr(dialogue_line.character, "dialogue")
Expand Down
Loading