Dialogue styles

This commit is contained in:
Marco 2025-03-19 11:53:29 +01:00
commit e43f67c872
13 changed files with 408 additions and 19 deletions

View file

@ -6,24 +6,14 @@
&"custom_info": {
"sound_mood_default": "",
"sound_moods": {},
"style": ""
"style": "Terminal_Style"
},
&"default_portrait": "default",
&"default_portrait": "",
&"description": "",
&"display_name": "Computer",
&"display_name": "",
&"mirror": false,
&"nicknames": [""],
&"offset": Vector2(0, 0),
&"portraits": {
"default": {
"export_overrides": {
"image": "\"res://Sprites/Portraits/Computer.png\""
},
"mirror": false,
"offset": Vector2(0, 0),
"scale": 1,
"scene": ""
}
},
&"portraits": {},
&"scale": 1.0
}

View file

@ -0,0 +1,129 @@
[gd_scene load_steps=8 format=3 uid="uid://d3dusydsn1qjd"]
[ext_resource type="Script" uid="uid://cfcx0of1aekhk" path="res://addons/dialogic/Modules/Character/node_portrait_container.gd" id="1_4jxq7"]
[ext_resource type="Script" uid="uid://dmxeo7lm8ftsi" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_SpeakerPortraitTextbox/speaker_portrait_textbox_layer.gd" id="1_7jt4d"]
[ext_resource type="StyleBox" uid="uid://dprati3kf7gdg" path="res://Resources/Styles/Terminal_Style_Box.tres" id="2_of5aa"]
[ext_resource type="Script" uid="uid://be3h8wr0w68dx" path="res://addons/dialogic/Modules/Text/node_name_label.gd" id="2_y0h34"]
[ext_resource type="Script" uid="uid://ddkvkdb6nxtyi" path="res://addons/dialogic/Modules/Text/node_dialog_text.gd" id="3_11puy"]
[ext_resource type="Script" uid="uid://bkfrnlul8c6cv" path="res://addons/dialogic/Modules/Text/node_type_sound.gd" id="5_sr2qw"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_dmg1w"]
bg_color = Color(0.254902, 0.254902, 0.254902, 1)
skew = Vector2(0.073, 0)
corner_radius_top_left = 3
corner_radius_top_right = 3
corner_radius_bottom_right = 3
corner_radius_bottom_left = 3
[node name="TextboxWithSpeakerPortrait" type="Control"]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
script = ExtResource("1_7jt4d")
box_panel = "res://addons/dialogic/Modules/DefaultLayoutParts/Layer_SpeakerPortraitTextbox/default_stylebox.tres"
[node name="Anchor" type="Control" parent="."]
layout_mode = 1
anchors_preset = 7
anchor_left = 0.5
anchor_top = 1.0
anchor_right = 0.5
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 0
mouse_filter = 2
[node name="Panel" type="PanelContainer" parent="Anchor"]
unique_name_in_owner = true
self_modulate = Color(0.533333, 0.376471, 0.176471, 1)
layout_mode = 1
anchors_preset = 7
anchor_left = 0.5
anchor_top = 1.0
anchor_right = 0.5
anchor_bottom = 1.0
offset_left = -250.0
offset_top = -200.0
offset_right = 250.0
offset_bottom = -50.0
grow_horizontal = 2
grow_vertical = 0
mouse_filter = 2
theme_override_styles/panel = ExtResource("2_of5aa")
[node name="HBox" type="HBoxContainer" parent="Anchor/Panel"]
layout_mode = 2
mouse_filter = 2
theme_override_constants/separation = 15
[node name="PortraitPanel" type="Panel" parent="Anchor/Panel/HBox"]
unique_name_in_owner = true
visible = false
clip_children = 1
layout_mode = 2
size_flags_horizontal = 3
size_flags_stretch_ratio = 0.0
mouse_filter = 2
theme_override_styles/panel = SubResource("StyleBoxFlat_dmg1w")
[node name="PortraitBackgroundColor" type="ColorRect" parent="Anchor/Panel/HBox/PortraitPanel"]
unique_name_in_owner = true
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = -7.0
offset_top = -3.0
offset_right = 7.0
offset_bottom = 3.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
color = Color(0, 0, 0, 0.231373)
[node name="DialogicNode_PortraitContainer" type="Control" parent="Anchor/Panel/HBox/PortraitPanel/PortraitBackgroundColor"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_top = 4.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
script = ExtResource("1_4jxq7")
mode = 1
container_ids = PackedStringArray("1")
debug_character_portrait = "speaker"
[node name="VBoxContainer" type="VBoxContainer" parent="Anchor/Panel/HBox"]
layout_mode = 2
size_flags_horizontal = 3
mouse_filter = 2
[node name="DialogicNode_NameLabel" type="Label" parent="Anchor/Panel/HBox/VBoxContainer"]
unique_name_in_owner = true
visible = false
layout_mode = 2
theme_override_font_sizes/font_size = 8
text = "Name"
script = ExtResource("2_y0h34")
[node name="DialogicNode_DialogText" type="RichTextLabel" parent="Anchor/Panel/HBox/VBoxContainer" node_paths=PackedStringArray("textbox_root")]
unique_name_in_owner = true
layout_mode = 2
size_flags_vertical = 3
theme_override_constants/line_separation = -8
theme_override_font_sizes/normal_font_size = 6
bbcode_enabled = true
text = "Some text"
scroll_following = true
visible_characters_behavior = 1
script = ExtResource("3_11puy")
textbox_root = NodePath("../../..")
[node name="DialogicNode_TypeSounds" type="AudioStreamPlayer" parent="Anchor/Panel/HBox/VBoxContainer/DialogicNode_DialogText"]
script = ExtResource("5_sr2qw")

View file

@ -0,0 +1,129 @@
@tool
extends DialogicLayoutLayer
enum Alignments {LEFT, CENTER, RIGHT}
enum LimitedAlignments {LEFT=0, RIGHT=1}
@export_group('Text')
@export_subgroup("Text")
@export var text_alignment: Alignments = Alignments.LEFT
@export_subgroup('Size')
@export var text_use_global_size: bool = true
@export var text_custom_size: int = 15
@export_subgroup('Color')
@export var text_use_global_color: bool = true
@export var text_custom_color: Color = Color.WHITE
@export_subgroup('Fonts')
@export var use_global_fonts: bool = true
@export_file('*.ttf', '*.tres') var custom_normal_font: String = ""
@export_file('*.ttf', '*.tres') var custom_bold_font: String = ""
@export_file('*.ttf', '*.tres') var custom_italic_font: String = ""
@export_file('*.ttf', '*.tres') var custom_bold_italic_font: String = ""
@export_group('Name Label')
@export_subgroup("Color")
enum NameLabelColorModes {GLOBAL_COLOR, CHARACTER_COLOR, CUSTOM_COLOR}
@export var name_label_color_mode: NameLabelColorModes = NameLabelColorModes.GLOBAL_COLOR
@export var name_label_custom_color: Color = Color.WHITE
@export_subgroup("Behaviour")
@export var name_label_alignment: Alignments = Alignments.LEFT
@export var name_label_hide_when_no_character: bool = false
@export_subgroup("Font & Size")
@export var name_label_use_global_size: bool = true
@export var name_label_custom_size: int = 15
@export var name_label_use_global_font: bool = true
@export_file('*.ttf', '*.tres') var name_label_customfont: String = ""
@export_group('Box')
@export_subgroup("Box")
@export_file('*.tres') var box_panel: String = this_folder.path_join("default_stylebox.tres")
@export var box_modulate_global_color: bool = true
@export var box_modulate_custom_color: Color = Color(0.47247135639191, 0.31728461384773, 0.16592600941658)
@export var box_size: Vector2 = Vector2(600, 160)
@export var box_distance: int = 25
@export_group('Portrait')
@export_subgroup('Portrait')
@export var portrait_stretch_factor: float = 0.3
@export var portrait_position: LimitedAlignments = LimitedAlignments.LEFT
@export var portrait_bg_modulate: Color = Color(0, 0, 0, 0.5137255191803)
## Called by dialogic whenever export overrides might change
func _apply_export_overrides() -> void:
## FONT SETTINGS
var dialog_text: DialogicNode_DialogText = %DialogicNode_DialogText
dialog_text.alignment = text_alignment as DialogicNode_DialogText.Alignment
var text_size: int = text_custom_size
if text_use_global_size:
text_size = get_global_setting(&'font_size', text_custom_size)
dialog_text.add_theme_font_size_override(&"normal_font_size", text_size)
dialog_text.add_theme_font_size_override(&"bold_font_size", text_size)
dialog_text.add_theme_font_size_override(&"italics_font_size", text_size)
dialog_text.add_theme_font_size_override(&"bold_italics_font_size", text_size)
var text_color: Color = text_custom_color
if text_use_global_color:
text_color = get_global_setting(&'font_color', text_custom_color)
dialog_text.add_theme_color_override(&"default_color", text_color)
var normal_font: String = custom_normal_font
if use_global_fonts and ResourceLoader.exists(get_global_setting(&'font', '') as String):
normal_font = get_global_setting(&'font', '')
if !normal_font.is_empty():
dialog_text.add_theme_font_override(&"normal_font", load(normal_font) as Font)
if !custom_bold_font.is_empty():
dialog_text.add_theme_font_override(&"bold_font", load(custom_bold_font) as Font)
if !custom_italic_font.is_empty():
dialog_text.add_theme_font_override(&"italics_font", load(custom_italic_font) as Font)
if !custom_bold_italic_font.is_empty():
dialog_text.add_theme_font_override(&"bold_italics_font", load(custom_bold_italic_font) as Font)
## BOX SETTINGS
var panel: PanelContainer = %Panel
var portrait_panel: Panel = %PortraitPanel
if box_modulate_global_color:
panel.self_modulate = get_global_setting(&'bg_color', box_modulate_custom_color)
else:
panel.self_modulate = box_modulate_custom_color
panel.size = box_size
panel.position = Vector2(-box_size.x/2, -box_size.y-box_distance)
portrait_panel.size_flags_stretch_ratio = portrait_stretch_factor
var stylebox: StyleBox = load(box_panel)
panel.add_theme_stylebox_override(&'panel', stylebox)
## PORTRAIT SETTINGS
var portrait_background_color: ColorRect = %PortraitBackgroundColor
portrait_background_color.color = portrait_bg_modulate
portrait_panel.get_parent().move_child(portrait_panel, portrait_position)
## NAME LABEL SETTINGS
var name_label: DialogicNode_NameLabel = %DialogicNode_NameLabel
if name_label_use_global_size:
name_label.add_theme_font_size_override(&"font_size", get_global_setting(&'font_size', name_label_custom_size) as int)
else:
name_label.add_theme_font_size_override(&"font_size", name_label_custom_size)
var name_label_font: String = name_label_customfont
if name_label_use_global_font and ResourceLoader.exists(get_global_setting(&'font', '') as String):
name_label_font = get_global_setting(&'font', '')
if !name_label_font.is_empty():
name_label.add_theme_font_override(&'font', load(name_label_font) as Font)
name_label.use_character_color = false
match name_label_color_mode:
NameLabelColorModes.GLOBAL_COLOR:
name_label.add_theme_color_override(&"font_color", get_global_setting(&'font_color', name_label_custom_color) as Color)
NameLabelColorModes.CUSTOM_COLOR:
name_label.add_theme_color_override(&"font_color", name_label_custom_color)
NameLabelColorModes.CHARACTER_COLOR:
name_label.use_character_color = true
name_label.horizontal_alignment = name_label_alignment as HorizontalAlignment
name_label.hide_when_empty = name_label_hide_when_no_character

View file

@ -0,0 +1,82 @@
[gd_resource type="Resource" script_class="DialogicStyle" load_steps=18 format=3 uid="uid://dt3lvliuoovuh"]
[ext_resource type="Script" uid="uid://dh4po8pgey4yv" path="res://addons/dialogic/Resources/dialogic_style_layer.gd" id="1_01ap4"]
[ext_resource type="PackedScene" uid="uid://c1k5m0w3r40xf" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_FullBackground/full_background_layer.tscn" id="2_7kcue"]
[ext_resource type="PackedScene" uid="uid://cn674foxwedqu" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_Input/full_advance_input_layer.tscn" id="3_sjmr0"]
[ext_resource type="PackedScene" uid="uid://d3dusydsn1qjd" path="res://Dialogue/Styles/Layers/Terminal_Textbox/TextboxWithPortrait/custom_textbox_with_portrait_.tscn" id="4_01ap4"]
[ext_resource type="PackedScene" uid="uid://dsbwnp5hegnu3" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_Glossary/glossary_popup_layer.tscn" id="5_57bio"]
[ext_resource type="PackedScene" uid="uid://dhk6j6eb6e3q" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/vn_choice_layer.tscn" id="6_g4wyu"]
[ext_resource type="PackedScene" uid="uid://cvgf4c6gg0tsy" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_TextInput/text_input_layer.tscn" id="7_0tq0p"]
[ext_resource type="PackedScene" uid="uid://lx24i8fl6uo" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_History/history_layer.tscn" id="8_rq6rw"]
[ext_resource type="Script" uid="uid://dfja8ptqdlfix" path="res://addons/dialogic/Resources/dialogic_style.gd" id="9_bq3y2"]
[sub_resource type="Resource" id="Resource_egg03"]
script = ExtResource("1_01ap4")
overrides = {
"global_bg_color": "Color(0, 0, 0, 1)",
"global_font": "\"res://fonts/Silver.ttf\"",
"global_font_color": "Color(0.0652366, 0.704241, 0.254941, 1)",
"global_font_size": "19.0"
}
[sub_resource type="Resource" id="Resource_c8l3y"]
script = ExtResource("1_01ap4")
scene = ExtResource("2_7kcue")
overrides = {}
[sub_resource type="Resource" id="Resource_xa87i"]
script = ExtResource("1_01ap4")
scene = ExtResource("3_sjmr0")
overrides = {}
[sub_resource type="Resource" id="Resource_g4kwc"]
script = ExtResource("1_01ap4")
scene = ExtResource("4_01ap4")
overrides = {
"box_distance": "0.0",
"box_modulate_custom_color": "Color(1, 1, 1, 1)",
"box_modulate_global_color": "false",
"box_panel": "\"res://Resources/Styles/Terminal_Style_Box.tres\"",
"box_size": "Vector2(150, 150)",
"name_label_hide_when_no_character": "true",
"portrait_bg_modulate": "Color(0, 0, 0, 0)",
"portrait_stretch_factor": "0.0"
}
[sub_resource type="Resource" id="Resource_5oxfq"]
script = ExtResource("1_01ap4")
scene = ExtResource("5_57bio")
overrides = {}
[sub_resource type="Resource" id="Resource_8n5bm"]
script = ExtResource("1_01ap4")
scene = ExtResource("6_g4wyu")
overrides = {}
[sub_resource type="Resource" id="Resource_woagc"]
script = ExtResource("1_01ap4")
scene = ExtResource("7_0tq0p")
overrides = {}
[sub_resource type="Resource" id="Resource_8pdfk"]
script = ExtResource("1_01ap4")
scene = ExtResource("8_rq6rw")
overrides = {}
[resource]
script = ExtResource("9_bq3y2")
name = "Terminal_Style"
layer_list = Array[String](["10", "11", "12", "13", "14", "15", "16"])
layer_info = {
"": SubResource("Resource_egg03"),
"10": SubResource("Resource_c8l3y"),
"11": SubResource("Resource_xa87i"),
"12": SubResource("Resource_g4kwc"),
"13": SubResource("Resource_5oxfq"),
"14": SubResource("Resource_8n5bm"),
"15": SubResource("Resource_woagc"),
"16": SubResource("Resource_8pdfk")
}
base_overrides = {}
layers = Array[ExtResource("1_01ap4")]([])
metadata/_latest_layer = ""

View file

@ -34,6 +34,8 @@ script = ExtResource("1_5pbjb")
scene = ExtResource("6_kdmoh")
overrides = {
"box_distance": "0.0",
"box_modulate_custom_color": "Color(1, 1, 1, 1)",
"box_modulate_global_color": "false",
"box_panel": "\"res://Resources/Styles/PixelStyleBoxRed_SquareBackground.tres\"",
"box_size": "Vector2(300, 80)",
"name_label_color_mode": "1",
@ -77,4 +79,4 @@ layer_info = {
}
base_overrides = {}
layers = Array[ExtResource("1_5pbjb")]([])
metadata/_latest_layer = "12"
metadata/_latest_layer = ""

View file

@ -1,7 +1,8 @@
ICE: This is a computer terminal, they are usually left unsecured and may provide valuable information!
Cirno (Embarassed): I don't know how to read...
Cirno (Gomen Smile): I don't know how to read...
ICE: Don't worry, I'll read it aloud for you!
ICE: Here's what it says\:
[style name="Terminal_Style"]
computer: Research in the new refining method using the artifact is going according to schedule.
computer: All expectations have been exceeded, this artefact is truly miraculous, our production increased by 300%!
computer: The sludge toxicity also went way up but it's still within the parameters set by management, yet we still had a few fatal accidents last week due to unprotected walkways.

View file

@ -0,0 +1,13 @@
[gd_resource type="StyleBoxTexture" load_steps=2 format=3 uid="uid://dprati3kf7gdg"]
[ext_resource type="Texture2D" uid="uid://q0r8mofci0l8" path="res://Sprites/UI/Terminal_Slice.png" id="1_owepd"]
[resource]
texture = ExtResource("1_owepd")
texture_margin_left = 8.0
texture_margin_top = 8.0
texture_margin_right = 8.0
texture_margin_bottom = 8.0
axis_stretch_horizontal = 2
axis_stretch_vertical = 2
modulate_color = Color(1, 1, 1, 0.847059)

View file

@ -613,7 +613,7 @@ IsEnabled = true
Target = NodePath("../DebugTeleporter")
[node name="DebugTeleporter" parent="Parallax2D/Factory Tilemaps/LevelProps" instance=ExtResource("30_8fdby")]
position = Vector2(-1664, -140)
position = Vector2(-1087, -98)
Invisible = true
metadata/_edit_group_ = true
@ -1101,7 +1101,7 @@ position = Vector2(-2000, -736)
[node name="ControlPad8" parent="Parallax2D/Factory Tilemaps/LevelProps" node_paths=PackedStringArray("Targets") instance=ExtResource("12_hfkf1")]
position = Vector2(-2027, -735)
Targets = [NodePath("../HorizontalForceField")]
Requirements = Array[ExtResource("6_8tdlb")]([ExtResource("84_ma1ta")])
Requirements = [ExtResource("84_ma1ta")]
[node name="Ammo6" parent="Parallax2D/Factory Tilemaps/LevelProps" instance=ExtResource("34_17pjh")]
position = Vector2(-872, -220)

BIN
Sprites/UI/Terminal_Slice.aseprite (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Sprites/UI/Terminal_Slice.png (Stored with Git LFS) Normal file

Binary file not shown.

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://q0r8mofci0l8"
path="res://.godot/imported/Terminal_Slice.png-9aada730e34b074a11be4095d3e63b72.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Sprites/UI/Terminal_Slice.png"
dest_files=["res://.godot/imported/Terminal_Slice.png-9aada730e34b074a11be4095d3e63b72.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View file

@ -83,7 +83,7 @@ directories/dtl_directory={
"tutorial_teleporter_2": "res://Dialogue/Timelines/Tutorial/tutorial_teleporter_2.dtl"
}
glossary/default_case_sensitive=true
layout/style_list=["res://Dialogue/Styles/Textbox_style.tres", "res://Dialogue/Styles/VN.tres", "res://Dialogue/Styles/Intro_Syle.tres", "res://Dialogue/Styles/custom_test.tres", "res://Dialogue/Styles/speakerstyletest.tres"]
layout/style_list=["res://Dialogue/Styles/Textbox_style.tres", "res://Dialogue/Styles/VN.tres", "res://Dialogue/Styles/Intro_Syle.tres", "res://Dialogue/Styles/custom_test.tres", "res://Dialogue/Styles/speakerstyletest.tres", "res://Dialogue/Styles/Terminal_Style.tres"]
layout/default_style="res://Dialogue/Styles/Textbox_style.tres"
variables={}
extensions_folder="res://addons/dialogic_additions"
@ -106,6 +106,8 @@ choices/reveal_by_input=false
save/autosave_delay=60.0
save/encryption_on_exports_only=true
text/autopauses={}
animations/join_default="Instant In"
animations/leave_default="Instant Out"
[display]