First work on dialogic, resized guild, and started implementing portraits.
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
extends AnimationPlayer
|
||||
|
||||
## A custom script/node that adds some animations to the textbox.
|
||||
|
||||
# Careful: Sync these with the ones in the root script!
|
||||
enum AnimationsIn {NONE, POP_IN, FADE_UP}
|
||||
enum AnimationsOut {NONE, POP_OUT, FADE_DOWN}
|
||||
enum AnimationsNewText {NONE, WIGGLE}
|
||||
|
||||
var animation_in: AnimationsIn
|
||||
var animation_out: AnimationsOut
|
||||
var animation_new_text: AnimationsNewText
|
||||
|
||||
var full_clear := true
|
||||
|
||||
|
||||
func get_text_panel() -> PanelContainer:
|
||||
return %DialogTextPanel
|
||||
|
||||
|
||||
func get_dialog() -> DialogicNode_DialogText:
|
||||
return %DialogicNode_DialogText
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
var text_system: Node = DialogicUtil.autoload().get(&'Text')
|
||||
text_system.connect(&'animation_textbox_hide', _on_textbox_hide)
|
||||
text_system.connect(&'animation_textbox_show', _on_textbox_show)
|
||||
text_system.connect(&'animation_textbox_new_text', _on_textbox_new_text)
|
||||
text_system.connect(&'about_to_show_text', _on_about_to_show_text)
|
||||
var animation_system: Node = DialogicUtil.autoload().get(&'Animations')
|
||||
animation_system.connect(&'animation_interrupted', _on_animation_interrupted)
|
||||
|
||||
|
||||
func _on_textbox_show() -> void:
|
||||
if animation_in == AnimationsIn.NONE:
|
||||
return
|
||||
play('RESET')
|
||||
var animation_system: Node = DialogicUtil.autoload().get(&'Animations')
|
||||
animation_system.call(&'start_animating')
|
||||
get_text_panel().get_parent().get_parent().set(&'modulate', Color.TRANSPARENT)
|
||||
get_dialog().text = ""
|
||||
match animation_in:
|
||||
AnimationsIn.POP_IN:
|
||||
play("textbox_pop")
|
||||
AnimationsIn.FADE_UP:
|
||||
play("textbox_fade_up")
|
||||
if not animation_finished.is_connected(Callable(animation_system, &'animation_finished')):
|
||||
animation_finished.connect(Callable(animation_system, &'animation_finished'), CONNECT_ONE_SHOT)
|
||||
|
||||
|
||||
func _on_textbox_hide() -> void:
|
||||
if animation_out == AnimationsOut.NONE:
|
||||
return
|
||||
play('RESET')
|
||||
var animation_system: Node = DialogicUtil.autoload().get(&'Animations')
|
||||
animation_system.call(&'start_animating')
|
||||
match animation_out:
|
||||
AnimationsOut.POP_OUT:
|
||||
play_backwards("textbox_pop")
|
||||
AnimationsOut.FADE_DOWN:
|
||||
play_backwards("textbox_fade_up")
|
||||
|
||||
if not animation_finished.is_connected(Callable(animation_system, &'animation_finished')):
|
||||
animation_finished.connect(Callable(animation_system, &'animation_finished'), CONNECT_ONE_SHOT)
|
||||
|
||||
|
||||
func _on_about_to_show_text(info:Dictionary) -> void:
|
||||
full_clear = !info.append
|
||||
|
||||
|
||||
func _on_textbox_new_text() -> void:
|
||||
if DialogicUtil.autoload().Inputs.auto_skip.enabled:
|
||||
return
|
||||
|
||||
if animation_new_text == AnimationsNewText.NONE:
|
||||
return
|
||||
|
||||
var animation_system: Node = DialogicUtil.autoload().get(&'Animations')
|
||||
animation_system.call(&'start_animating')
|
||||
if full_clear:
|
||||
get_dialog().text = ""
|
||||
match animation_new_text:
|
||||
AnimationsNewText.WIGGLE:
|
||||
play("new_text")
|
||||
|
||||
if not animation_finished.is_connected(Callable(animation_system, &'animation_finished')):
|
||||
animation_finished.connect(Callable(animation_system, &'animation_finished'), CONNECT_ONE_SHOT)
|
||||
|
||||
|
||||
func _on_animation_interrupted() -> void:
|
||||
if is_playing():
|
||||
stop()
|
||||
@@ -0,0 +1 @@
|
||||
uid://deyihsk5ygbhr
|
||||
@@ -0,0 +1,13 @@
|
||||
extends Range
|
||||
|
||||
var enabled: bool = true
|
||||
|
||||
func _process(_delta : float) -> void:
|
||||
if !enabled:
|
||||
hide()
|
||||
return
|
||||
if DialogicUtil.autoload().Inputs.auto_advance.get_progress() < 0:
|
||||
hide()
|
||||
else:
|
||||
show()
|
||||
value = DialogicUtil.autoload().Inputs.auto_advance.get_progress()
|
||||
@@ -0,0 +1 @@
|
||||
uid://c1vq61i7urva2
|
||||
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg width="6.4715624mm" height="6.4715624mm" viewBox="0 0 6.4715624 6.4715622" version="1.1" id="svg5" inkscape:export-filename="next.svg" inkscape:export-xdpi="17.054285" inkscape:export-ydpi="17.054285" sodipodi:docname="next.svg" inkscape:version="1.2.2 (732a01da63, 2022-12-09)" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<sodipodi:namedview id="namedview7" pagecolor="#505050" bordercolor="#eeeeee" borderopacity="1" inkscape:showpageshadow="0" inkscape:pageopacity="0" inkscape:pagecheckerboard="0" inkscape:deskcolor="#505050" inkscape:document-units="mm" showgrid="true" inkscape:zoom="8.4359982" inkscape:cx="-7.0531072" inkscape:cy="10.312947" inkscape:window-width="1920" inkscape:window-height="1017" inkscape:window-x="-8" inkscape:window-y="-8" inkscape:window-maximized="1" inkscape:current-layer="layer1">
|
||||
<inkscape:grid type="xygrid" id="grid2291" originx="-1.8058334" originy="-1.8059061" />
|
||||
</sodipodi:namedview>
|
||||
<defs id="defs2" />
|
||||
<g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" transform="translate(-3.3788024,-4.701698)">
|
||||
<path style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.18;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:3.2;stroke-dasharray:none;stroke-dashoffset:0" d="M 4.4833857,5.2770419 6.6000523,10.568709 8.716719,5.2770419 c -2.6603643,0.2499583 -1.6020309,0.2499583 -4.2333333,0 z" id="path2289" sodipodi:nodetypes="cccc" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.7 KiB |
@@ -0,0 +1,43 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://b0rpqfg4fhebk"
|
||||
path="res://.godot/imported/next.svg-689f85597f487815b8ddefa23d22bf6f.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/next.svg"
|
||||
dest_files=["res://.godot/imported/next.svg-689f85597f487815b8ddefa23d22bf6f.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
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/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
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
|
||||
svg/scale=1.0
|
||||
editor/scale_with_editor_scale=false
|
||||
editor/convert_colors_with_editor_theme=false
|
||||
@@ -0,0 +1,7 @@
|
||||
[style]
|
||||
type = "Layer"
|
||||
name = "Visual Novel Textbox"
|
||||
author = "Dialogic"
|
||||
description = "A textbox in a VN style."
|
||||
scene = "vn_textbox_layer.tscn"
|
||||
icon = "textbox_layer_icon.svg"
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 3.3 KiB |
@@ -0,0 +1,40 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dd4pvssu5dlqf"
|
||||
path="res://.godot/imported/preview.png-38205c265cdc5033fdb5a79a6f5d3394.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/preview.png"
|
||||
dest_files=["res://.godot/imported/preview.png-38205c265cdc5033fdb5a79a6f5d3394.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
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/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
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
|
||||
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg width="100" height="100" viewBox="0 0 26.458333 26.458333" version="1.1" id="svg13076" inkscape:export-filename="bitmap.svg" inkscape:export-xdpi="96" inkscape:export-ydpi="96" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<sodipodi:namedview id="namedview13078" pagecolor="#505050" bordercolor="#eeeeee" borderopacity="1" inkscape:showpageshadow="0" inkscape:pageopacity="0" inkscape:pagecheckerboard="0" inkscape:deskcolor="#505050" inkscape:document-units="mm" showgrid="true">
|
||||
<inkscape:grid type="xygrid" id="grid14286" />
|
||||
</sodipodi:namedview>
|
||||
<defs id="defs13073" />
|
||||
<g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1">
|
||||
<path id="rect14391" style="fill:#ffffff;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.88;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:3.2" d="M 2.6966149,11.90625 H 23.761718 c 0.02813,0 0.05078,0.02265 0.05078,0.05078 v 10.481769 c 0,0.02813 -0.02265,0.05078 -0.05078,0.05078 H 2.6966149 c -0.028133,0 -0.050782,-0.02265 -0.050782,-0.05078 V 11.957032 c 0,-0.02813 0.022649,-0.05078 0.050782,-0.05078 z" />
|
||||
<rect style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.88;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:3.2;stroke-dasharray:none" id="rect14393" width="5.2916665" height="1.3229166" x="2.6458333" y="7.9375" ry="0.050781649" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.6 KiB |
@@ -0,0 +1,44 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cgx0ejya2mtmn"
|
||||
path="res://.godot/imported/textbox_layer_icon.svg-d6678fedd53dcb59cc32e1c443754ad5.ctex"
|
||||
metadata={
|
||||
"has_editor_variant": true,
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/textbox_layer_icon.svg"
|
||||
dest_files=["res://.godot/imported/textbox_layer_icon.svg-d6678fedd53dcb59cc32e1c443754ad5.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
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/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
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
|
||||
svg/scale=0.3
|
||||
editor/scale_with_editor_scale=true
|
||||
editor/convert_colors_with_editor_theme=true
|
||||
@@ -0,0 +1,12 @@
|
||||
[gd_resource type="StyleBoxFlat" format=3 uid="uid://dkv1pl1c1dq6"]
|
||||
|
||||
[resource]
|
||||
content_margin_left = 15.0
|
||||
content_margin_top = 15.0
|
||||
content_margin_right = 15.0
|
||||
content_margin_bottom = 15.0
|
||||
bg_color = Color(1, 1, 1, 1)
|
||||
corner_radius_top_left = 5
|
||||
corner_radius_top_right = 5
|
||||
corner_radius_bottom_right = 5
|
||||
corner_radius_bottom_left = 5
|
||||
@@ -0,0 +1,278 @@
|
||||
@tool
|
||||
extends DialogicLayoutLayer
|
||||
## This layer's scene file contains following nodes:
|
||||
## - a dialog_text node
|
||||
## - a name_label node
|
||||
## - a next_indicator node
|
||||
## - a type_sound node
|
||||
##
|
||||
## As well as custom:
|
||||
## - animations
|
||||
## - auto-advance progress indicator
|
||||
##
|
||||
## If you want to customize this layer, here is a little rundown of this layer:
|
||||
## The Layer Settings are divided into the `@export_group`s below.
|
||||
## They get applied in [method _apply_export_overrides].
|
||||
## Each `@export_group` has its own method to apply the settings to the scene.
|
||||
## If you want to change a specific part inside the scene, you can simply
|
||||
## remove or add # (commenting) to the method line.
|
||||
|
||||
|
||||
|
||||
enum Alignments {LEFT, CENTER, RIGHT}
|
||||
|
||||
enum AnimationsIn {NONE, POP_IN, FADE_UP}
|
||||
enum AnimationsOut {NONE, POP_OUT, FADE_DOWN}
|
||||
enum AnimationsNewText {NONE, WIGGLE}
|
||||
|
||||
@export_group("Text")
|
||||
|
||||
@export_subgroup("Alignment & Size")
|
||||
@export var text_alignment: Alignments= Alignments.LEFT
|
||||
@export var text_use_global_size: bool = true
|
||||
@export var text_size: int = 15
|
||||
|
||||
@export_subgroup("Color")
|
||||
@export var text_use_global_color: bool = true
|
||||
@export var text_custom_color: Color = Color.WHITE
|
||||
|
||||
@export_subgroup('Font')
|
||||
@export var text_use_global_font: bool = true
|
||||
@export_file('*.ttf', '*.tres') var normal_font: String = ""
|
||||
@export_file('*.ttf', '*.tres') var bold_font: String = ""
|
||||
@export_file('*.ttf', '*.tres') var italics_font: String = ""
|
||||
@export_file('*.ttf', '*.tres') var bold_italics_font: String = ""
|
||||
|
||||
|
||||
@export_group("Box")
|
||||
|
||||
@export_subgroup("Panel")
|
||||
@export_file("*.tres") var box_panel: String = this_folder.path_join("vn_textbox_default_panel.tres")
|
||||
|
||||
@export_subgroup("Color")
|
||||
@export var box_color_use_global: bool = true
|
||||
@export var box_color_custom: Color = Color.BLACK
|
||||
|
||||
@export_subgroup("Size & Position")
|
||||
@export var box_size: Vector2 = Vector2(550, 110)
|
||||
@export var box_margin_bottom: int = 15
|
||||
|
||||
@export_subgroup("Animation")
|
||||
@export var box_animation_in: AnimationsIn = AnimationsIn.FADE_UP
|
||||
@export var box_animation_out: AnimationsOut = AnimationsOut.FADE_DOWN
|
||||
@export var box_animation_new_text: AnimationsNewText = AnimationsNewText.NONE
|
||||
|
||||
|
||||
@export_group("Name Label")
|
||||
|
||||
@export_subgroup('Color')
|
||||
@export var name_label_use_global_color: bool= true
|
||||
@export var name_label_use_character_color: bool = true
|
||||
@export var name_label_custom_color: Color = Color.WHITE
|
||||
|
||||
@export_subgroup('Font')
|
||||
@export var name_label_use_global_font: bool = true
|
||||
@export_file('*.ttf', '*.tres') var name_label_font: String = ""
|
||||
@export var name_label_use_global_font_size: bool = true
|
||||
@export var name_label_custom_font_size: int = 15
|
||||
|
||||
@export_subgroup('Box')
|
||||
@export_file("*.tres") var name_label_box_panel: String = this_folder.path_join("vn_textbox_name_label_panel.tres")
|
||||
@export var name_label_box_use_global_color: bool = true
|
||||
@export var name_label_box_modulate: Color = box_color_custom
|
||||
|
||||
@export_subgroup('Alignment')
|
||||
@export var name_label_alignment: Alignments = Alignments.LEFT
|
||||
@export var name_label_box_offset: Vector2 = Vector2.ZERO
|
||||
|
||||
|
||||
@export_group("Indicators")
|
||||
|
||||
@export_subgroup("Next Indicator")
|
||||
@export var next_indicator_enabled: bool = true
|
||||
@export var next_indicator_show_on_questions: bool = true
|
||||
@export var next_indicator_show_on_autoadvance: bool = false
|
||||
@export_enum('bounce', 'blink', 'none') var next_indicator_animation: int = 0
|
||||
@export_file("*.png","*.svg","*.tres") var next_indicator_texture: String = ''
|
||||
@export var next_indicator_size: Vector2 = Vector2(25,25)
|
||||
|
||||
@export_subgroup("Autoadvance")
|
||||
@export var autoadvance_progressbar: bool = true
|
||||
|
||||
|
||||
@export_group('Sounds')
|
||||
|
||||
@export_subgroup('Typing Sounds')
|
||||
@export var typing_sounds_enabled: bool = true
|
||||
@export var typing_sounds_mode: DialogicNode_TypeSounds.Modes = DialogicNode_TypeSounds.Modes.INTERRUPT
|
||||
@export_dir var typing_sounds_sounds_folder: String = "res://addons/dialogic/Example Assets/sound-effects/"
|
||||
@export_file("*.wav", "*.ogg", "*.mp3") var typing_sounds_end_sound: String = ""
|
||||
@export_range(1, 999, 1) var typing_sounds_every_nths_character: int = 1
|
||||
@export_range(0.01, 4, 0.01) var typing_sounds_pitch: float = 1.0
|
||||
@export_range(0.0, 3.0) var typing_sounds_pitch_variance: float = 0.0
|
||||
@export_range(-80, 24, 0.01) var typing_sounds_volume: float = -10
|
||||
@export_range(0.0, 10) var typing_sounds_volume_variance: float = 0.0
|
||||
@export var typing_sounds_ignore_characters: String = " .,!?"
|
||||
|
||||
|
||||
func _apply_export_overrides() -> void:
|
||||
if !is_inside_tree():
|
||||
await ready
|
||||
|
||||
## FONT SETTINGS
|
||||
_apply_text_settings()
|
||||
|
||||
|
||||
## BOX SETTINGS
|
||||
_apply_box_settings()
|
||||
|
||||
## BOX ANIMATIONS
|
||||
_apply_box_animations_settings()
|
||||
|
||||
## NAME LABEL SETTINGS
|
||||
_apply_name_label_settings()
|
||||
|
||||
## NEXT INDICATOR SETTINGS
|
||||
_apply_indicator_settings()
|
||||
|
||||
## OTHER
|
||||
var progress_bar: ProgressBar = %AutoAdvanceProgressbar
|
||||
progress_bar.set(&'enabled', autoadvance_progressbar)
|
||||
|
||||
#### SOUNDS
|
||||
|
||||
## TYPING SOUNDS
|
||||
_apply_sounds_settings()
|
||||
|
||||
|
||||
## Applies all text box settings to the scene.
|
||||
## Except the box animations.
|
||||
func _apply_box_settings() -> void:
|
||||
var dialog_text_panel: PanelContainer = %DialogTextPanel
|
||||
if ResourceLoader.exists(box_panel):
|
||||
dialog_text_panel.add_theme_stylebox_override(&'panel', load(box_panel) as StyleBox)
|
||||
|
||||
if box_color_use_global:
|
||||
dialog_text_panel.self_modulate = get_global_setting(&'bg_color', box_color_custom)
|
||||
else:
|
||||
dialog_text_panel.self_modulate = box_color_custom
|
||||
|
||||
var sizer: Control = %Sizer
|
||||
sizer.size = box_size
|
||||
sizer.position = box_size * Vector2(-0.5, -1)+Vector2(0, -box_margin_bottom)
|
||||
|
||||
|
||||
## Applies box animations settings to the scene.
|
||||
func _apply_box_animations_settings() -> void:
|
||||
var animations: AnimationPlayer = %Animations
|
||||
animations.set(&'animation_in', box_animation_in)
|
||||
animations.set(&'animation_out', box_animation_out)
|
||||
animations.set(&'animation_new_text', box_animation_new_text)
|
||||
|
||||
|
||||
## Applies all name label settings to the scene.
|
||||
func _apply_name_label_settings() -> void:
|
||||
var name_label: DialogicNode_NameLabel = %DialogicNode_NameLabel
|
||||
|
||||
if name_label_use_global_font_size:
|
||||
name_label.add_theme_font_size_override(&"font_size", get_global_setting(&'font_size', name_label_custom_font_size) as int)
|
||||
else:
|
||||
name_label.add_theme_font_size_override(&"font_size", name_label_custom_font_size)
|
||||
|
||||
if name_label_use_global_font and get_global_setting(&'font', false):
|
||||
name_label.add_theme_font_override(&'font', load(get_global_setting(&'font', '') as String) as Font)
|
||||
elif not name_label_font.is_empty():
|
||||
name_label.add_theme_font_override(&'font', load(name_label_font) as Font)
|
||||
|
||||
if name_label_use_global_color:
|
||||
name_label.add_theme_color_override(&"font_color", get_global_setting(&'font_color', name_label_custom_color) as Color)
|
||||
else:
|
||||
name_label.add_theme_color_override(&"font_color", name_label_custom_color)
|
||||
|
||||
name_label.use_character_color = name_label_use_character_color
|
||||
|
||||
var name_label_panel: PanelContainer = %NameLabelPanel
|
||||
if ResourceLoader.exists(name_label_box_panel):
|
||||
name_label_panel.add_theme_stylebox_override(&'panel', load(name_label_box_panel) as StyleBox)
|
||||
else:
|
||||
name_label_panel.add_theme_stylebox_override(&'panel', load(this_folder.path_join("vn_textbox_name_label_panel.tres")) as StyleBox)
|
||||
|
||||
if name_label_box_use_global_color:
|
||||
name_label_panel.self_modulate = get_global_setting(&'bg_color', name_label_box_modulate)
|
||||
else:
|
||||
name_label_panel.self_modulate = name_label_box_modulate
|
||||
var dialog_text_panel: PanelContainer = %DialogTextPanel
|
||||
name_label_panel.position = name_label_box_offset+Vector2(0, -40)
|
||||
name_label_panel.position -= Vector2(
|
||||
dialog_text_panel.get_theme_stylebox(&'panel', &'PanelContainer').content_margin_left,
|
||||
dialog_text_panel.get_theme_stylebox(&'panel', &'PanelContainer').content_margin_top)
|
||||
name_label_panel.anchor_left = name_label_alignment/2.0
|
||||
name_label_panel.anchor_right = name_label_alignment/2.0
|
||||
name_label_panel.grow_horizontal = [1, 2, 0][name_label_alignment]
|
||||
|
||||
|
||||
## Applies all text settings to the scene.
|
||||
func _apply_text_settings() -> void:
|
||||
var dialog_text: DialogicNode_DialogText = %DialogicNode_DialogText
|
||||
dialog_text.alignment = text_alignment as DialogicNode_DialogText.Alignment
|
||||
|
||||
if text_use_global_size:
|
||||
text_size = get_global_setting(&'font_size', text_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)
|
||||
|
||||
if text_use_global_color:
|
||||
dialog_text.add_theme_color_override(&"default_color", get_global_setting(&'font_color', text_custom_color) as Color)
|
||||
else:
|
||||
dialog_text.add_theme_color_override(&"default_color", text_custom_color)
|
||||
|
||||
if text_use_global_font and get_global_setting(&'font', false):
|
||||
dialog_text.add_theme_font_override(&"normal_font", load(get_global_setting(&'font', '') as String) as Font)
|
||||
elif !normal_font.is_empty():
|
||||
dialog_text.add_theme_font_override(&"normal_font", load(normal_font) as Font)
|
||||
if !bold_font.is_empty():
|
||||
dialog_text.add_theme_font_override(&"bold_font", load(bold_font) as Font)
|
||||
if !italics_font.is_empty():
|
||||
dialog_text.add_theme_font_override(&"italics_font", load(italics_font) as Font)
|
||||
if !bold_italics_font.is_empty():
|
||||
dialog_text.add_theme_font_override(&"bold_italics_font", load(bold_italics_font) as Font)
|
||||
|
||||
|
||||
## Applies all indicator settings to the scene.
|
||||
func _apply_indicator_settings() -> void:
|
||||
var next_indicator: DialogicNode_NextIndicator = %NextIndicator
|
||||
next_indicator.enabled = next_indicator_enabled
|
||||
|
||||
if next_indicator_enabled:
|
||||
next_indicator.animation = next_indicator_animation as DialogicNode_NextIndicator.Animations
|
||||
if ResourceLoader.exists(next_indicator_texture):
|
||||
next_indicator.texture = load(next_indicator_texture)
|
||||
next_indicator.show_on_questions = next_indicator_show_on_questions
|
||||
next_indicator.show_on_autoadvance = next_indicator_show_on_autoadvance
|
||||
next_indicator.texture_size = next_indicator_size
|
||||
|
||||
|
||||
## Applies all sound settings to the scene.
|
||||
func _apply_sounds_settings() -> void:
|
||||
var type_sounds: DialogicNode_TypeSounds = %DialogicNode_TypeSounds
|
||||
type_sounds.enabled = typing_sounds_enabled
|
||||
type_sounds.mode = typing_sounds_mode
|
||||
|
||||
if not typing_sounds_sounds_folder.is_empty():
|
||||
type_sounds.sounds = DialogicNode_TypeSounds.load_sounds_from_path(typing_sounds_sounds_folder)
|
||||
else:
|
||||
type_sounds.sounds.clear()
|
||||
|
||||
if not typing_sounds_end_sound.is_empty():
|
||||
type_sounds.end_sound = load(typing_sounds_end_sound)
|
||||
else:
|
||||
type_sounds.end_sound = null
|
||||
|
||||
type_sounds.play_every_character = typing_sounds_every_nths_character
|
||||
type_sounds.base_pitch = typing_sounds_pitch
|
||||
type_sounds.base_volume = typing_sounds_volume
|
||||
type_sounds.pitch_variance = typing_sounds_pitch_variance
|
||||
type_sounds.volume_variance = typing_sounds_volume_variance
|
||||
type_sounds.ignore_characters = typing_sounds_ignore_characters
|
||||
@@ -0,0 +1 @@
|
||||
uid://dh7v16o6p2byd
|
||||
@@ -0,0 +1,345 @@
|
||||
[gd_scene load_steps=17 format=3 uid="uid://bquja8jyk8kbr"]
|
||||
|
||||
[ext_resource type="Script" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/vn_textbox_layer.gd" id="1_bpydr"]
|
||||
[ext_resource type="Script" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/animations.gd" id="2_xy7a2"]
|
||||
[ext_resource type="Script" path="res://addons/dialogic/Modules/Text/node_dialog_text.gd" id="3_4634k"]
|
||||
[ext_resource type="StyleBox" uid="uid://dkv1pl1c1dq6" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/vn_textbox_default_panel.tres" id="3_ssa84"]
|
||||
[ext_resource type="Script" path="res://addons/dialogic/Modules/Text/node_type_sound.gd" id="4_ma5mw"]
|
||||
[ext_resource type="Script" path="res://addons/dialogic/Modules/Text/node_next_indicator.gd" id="5_40a50"]
|
||||
[ext_resource type="Script" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/autoadvance_indicator.gd" id="6_07xym"]
|
||||
[ext_resource type="Texture2D" uid="uid://b0rpqfg4fhebk" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/next.svg" id="6_uch03"]
|
||||
[ext_resource type="Script" path="res://addons/dialogic/Modules/Text/node_name_label.gd" id="7_bi7sh"]
|
||||
[ext_resource type="StyleBox" uid="uid://m7gyepkysu83" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/vn_textbox_name_label_panel.tres" id="9_yg8ig"]
|
||||
|
||||
[sub_resource type="Animation" id="Animation_au0a2"]
|
||||
length = 0.001
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("Anchor/AnimationParent:position")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector2(0, 0)]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("Anchor/AnimationParent:rotation")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [0.0]
|
||||
}
|
||||
tracks/2/type = "value"
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath("Anchor/AnimationParent:scale")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector2(1, 1)]
|
||||
}
|
||||
tracks/3/type = "value"
|
||||
tracks/3/imported = false
|
||||
tracks/3/enabled = true
|
||||
tracks/3/path = NodePath("Anchor/AnimationParent:modulate")
|
||||
tracks/3/interp = 1
|
||||
tracks/3/loop_wrap = true
|
||||
tracks/3/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Color(1, 1, 1, 1)]
|
||||
}
|
||||
tracks/4/type = "bezier"
|
||||
tracks/4/imported = false
|
||||
tracks/4/enabled = true
|
||||
tracks/4/path = NodePath("Anchor/AnimationParent/Sizer/DialogTextPanel:rotation")
|
||||
tracks/4/interp = 1
|
||||
tracks/4/loop_wrap = true
|
||||
tracks/4/keys = {
|
||||
"handle_modes": PackedInt32Array(0),
|
||||
"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0),
|
||||
"times": PackedFloat32Array(0)
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_6kbwc"]
|
||||
resource_name = "new_text"
|
||||
length = 0.4
|
||||
tracks/0/type = "bezier"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("Anchor/AnimationParent/Sizer/DialogTextPanel:rotation")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"handle_modes": PackedInt32Array(3, 3, 3, 3, 3),
|
||||
"points": PackedFloat32Array(0, -0.025, 0, 0.025, 0, 0.005, -0.025, 0, 0.025, 0, -0.005, -0.025, 0, 0.025, 0, 0.005, -0.025, 0, 0.025, 0, 0, -0.025, 0, 0.025, 0),
|
||||
"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4)
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_g6k55"]
|
||||
resource_name = "textbox_fade_up"
|
||||
length = 0.7
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("Anchor/AnimationParent:position")
|
||||
tracks/0/interp = 2
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 0.3, 0.7),
|
||||
"transitions": PackedFloat32Array(1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector2(0, 50), Vector2(0, 19.6793), Vector2(0, 0)]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("Anchor/AnimationParent:modulate")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0.1, 0.6),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)]
|
||||
}
|
||||
tracks/2/type = "value"
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath("Anchor/AnimationParent:rotation")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [0.0]
|
||||
}
|
||||
tracks/3/type = "value"
|
||||
tracks/3/imported = false
|
||||
tracks/3/enabled = true
|
||||
tracks/3/path = NodePath("Anchor/AnimationParent:scale")
|
||||
tracks/3/interp = 1
|
||||
tracks/3/loop_wrap = true
|
||||
tracks/3/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector2(1, 1)]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_htbgc"]
|
||||
resource_name = "textbox_pop"
|
||||
length = 0.3
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("Anchor/AnimationParent:position")
|
||||
tracks/0/interp = 2
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector2(0, 0)]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("Anchor/AnimationParent:rotation")
|
||||
tracks/1/interp = 2
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0, 0.2, 0.3),
|
||||
"transitions": PackedFloat32Array(1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [-0.0899883, 0.0258223, 0.0]
|
||||
}
|
||||
tracks/2/type = "value"
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath("Anchor/AnimationParent:scale")
|
||||
tracks/2/interp = 2
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0, 0.2, 0.3),
|
||||
"transitions": PackedFloat32Array(1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector2(0.793957, 0.778082), Vector2(0.937299, 1.14248), Vector2(1, 1)]
|
||||
}
|
||||
tracks/3/type = "value"
|
||||
tracks/3/imported = false
|
||||
tracks/3/enabled = true
|
||||
tracks/3/path = NodePath("Anchor/AnimationParent:modulate")
|
||||
tracks/3/interp = 1
|
||||
tracks/3/loop_wrap = true
|
||||
tracks/3/keys = {
|
||||
"times": PackedFloat32Array(0, 0.3),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)]
|
||||
}
|
||||
|
||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_c14kh"]
|
||||
_data = {
|
||||
"RESET": SubResource("Animation_au0a2"),
|
||||
"new_text": SubResource("Animation_6kbwc"),
|
||||
"textbox_fade_up": SubResource("Animation_g6k55"),
|
||||
"textbox_pop": SubResource("Animation_htbgc")
|
||||
}
|
||||
|
||||
[sub_resource type="FontVariation" id="FontVariation_v8y64"]
|
||||
|
||||
[node name="VN_TextboxLayer" 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_bpydr")
|
||||
box_panel = "res://addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/vn_textbox_default_panel.tres"
|
||||
box_size = Vector2(550, 150)
|
||||
name_label_box_panel = "res://addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/vn_textbox_name_label_panel.tres"
|
||||
name_label_box_modulate = Color(0, 0, 0, 1)
|
||||
|
||||
[node name="Animations" type="AnimationPlayer" parent="."]
|
||||
unique_name_in_owner = true
|
||||
libraries = {
|
||||
"": SubResource("AnimationLibrary_c14kh")
|
||||
}
|
||||
autoplay = "RESET"
|
||||
script = ExtResource("2_xy7a2")
|
||||
|
||||
[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
|
||||
|
||||
[node name="AnimationParent" type="Control" parent="Anchor"]
|
||||
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="Sizer" type="Control" parent="Anchor/AnimationParent"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 1
|
||||
anchors_preset = 7
|
||||
anchor_left = 0.5
|
||||
anchor_top = 1.0
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 1.0
|
||||
offset_left = -150.0
|
||||
offset_top = -50.0
|
||||
offset_right = 150.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 0
|
||||
mouse_filter = 2
|
||||
|
||||
[node name="DialogTextPanel" type="PanelContainer" parent="Anchor/AnimationParent/Sizer"]
|
||||
unique_name_in_owner = true
|
||||
self_modulate = Color(0.00784314, 0.00784314, 0.00784314, 0.843137)
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
mouse_filter = 2
|
||||
theme_override_styles/panel = ExtResource("3_ssa84")
|
||||
metadata/_edit_layout_mode = 1
|
||||
|
||||
[node name="DialogicNode_DialogText" type="RichTextLabel" parent="Anchor/AnimationParent/Sizer/DialogTextPanel" node_paths=PackedStringArray("textbox_root")]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
mouse_filter = 1
|
||||
theme_override_colors/default_color = Color(1, 1, 1, 1)
|
||||
theme_override_font_sizes/normal_font_size = 15
|
||||
theme_override_font_sizes/bold_font_size = 15
|
||||
theme_override_font_sizes/italics_font_size = 15
|
||||
theme_override_font_sizes/bold_italics_font_size = 15
|
||||
bbcode_enabled = true
|
||||
text = "Some default text"
|
||||
visible_characters_behavior = 1
|
||||
script = ExtResource("3_4634k")
|
||||
textbox_root = NodePath("..")
|
||||
|
||||
[node name="DialogicNode_TypeSounds" type="AudioStreamPlayer" parent="Anchor/AnimationParent/Sizer/DialogTextPanel/DialogicNode_DialogText"]
|
||||
unique_name_in_owner = true
|
||||
script = ExtResource("4_ma5mw")
|
||||
play_every_character = 0
|
||||
|
||||
[node name="NextIndicator" type="Control" parent="Anchor/AnimationParent/Sizer/DialogTextPanel"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 8
|
||||
size_flags_vertical = 8
|
||||
mouse_filter = 2
|
||||
script = ExtResource("5_40a50")
|
||||
show_on_questions = true
|
||||
texture = ExtResource("6_uch03")
|
||||
metadata/_edit_layout_mode = 1
|
||||
|
||||
[node name="AutoAdvanceProgressbar" type="ProgressBar" parent="Anchor/AnimationParent/Sizer/DialogTextPanel"]
|
||||
unique_name_in_owner = true
|
||||
modulate = Color(1, 1, 1, 0.188235)
|
||||
custom_minimum_size = Vector2(0, 10)
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 8
|
||||
mouse_filter = 2
|
||||
max_value = 1.0
|
||||
step = 0.001
|
||||
value = 0.5
|
||||
show_percentage = false
|
||||
script = ExtResource("6_07xym")
|
||||
|
||||
[node name="NameLabelHolder" type="Control" parent="Anchor/AnimationParent/Sizer/DialogTextPanel"]
|
||||
layout_mode = 2
|
||||
mouse_filter = 2
|
||||
|
||||
[node name="NameLabelPanel" type="PanelContainer" parent="Anchor/AnimationParent/Sizer/DialogTextPanel/NameLabelHolder"]
|
||||
unique_name_in_owner = true
|
||||
self_modulate = Color(0.00784314, 0.00784314, 0.00784314, 0.843137)
|
||||
layout_mode = 1
|
||||
offset_top = -50.0
|
||||
offset_right = 9.0
|
||||
offset_bottom = -25.0
|
||||
mouse_filter = 2
|
||||
theme_override_styles/panel = ExtResource("9_yg8ig")
|
||||
metadata/_edit_layout_mode = 1
|
||||
metadata/_edit_use_custom_anchors = true
|
||||
metadata/_edit_group_ = true
|
||||
|
||||
[node name="DialogicNode_NameLabel" type="Label" parent="Anchor/AnimationParent/Sizer/DialogTextPanel/NameLabelHolder/NameLabelPanel" node_paths=PackedStringArray("name_label_root")]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
theme_override_colors/font_color = Color(1, 1, 1, 1)
|
||||
theme_override_fonts/font = SubResource("FontVariation_v8y64")
|
||||
theme_override_font_sizes/font_size = 15
|
||||
text = "S"
|
||||
script = ExtResource("7_bi7sh")
|
||||
name_label_root = NodePath("..")
|
||||
@@ -0,0 +1,12 @@
|
||||
[gd_resource type="StyleBoxFlat" format=3 uid="uid://m7gyepkysu83"]
|
||||
|
||||
[resource]
|
||||
content_margin_left = 10.0
|
||||
content_margin_top = 5.0
|
||||
content_margin_right = 10.0
|
||||
content_margin_bottom = 5.0
|
||||
bg_color = Color(1, 1, 1, 1)
|
||||
corner_radius_top_left = 5
|
||||
corner_radius_top_right = 5
|
||||
corner_radius_bottom_right = 5
|
||||
corner_radius_bottom_left = 5
|
||||
Reference in New Issue
Block a user