Compare commits

..

10 Commits

202 changed files with 6673 additions and 382 deletions

View File

@@ -17,3 +17,16 @@ res://sounds/Door Hinge Creaking Door.wav
**************************************************************************************************** ****************************************************************************************************
3maze - res://sounds/owl_notification_005.wav 3maze - res://sounds/owl_notification_005.wav
SmartSoundFX - res://sounds/ORGANIC Paper Book Page Turn Short 02.wav SmartSoundFX - res://sounds/ORGANIC Paper Book Page Turn Short 02.wav
****************************************************************************************************
** Miotto Sounds **
****************************************************************************************************
res://sounds/Paper_Scraping_1.wav
****************************************************************************************************
** Deed? Check back **
****************************************************************************************************
res://sounds/Writing in paper 19.wav
res://sounds/Various Sounds 06.wav
res://sounds/Turning Books Pages 52.wav

View File

@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 25.4.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 16 16" style="enable-background:new 0 0 16 16;" xml:space="preserve">
<style type="text/css">
.st0{fill:#8EEF97;}
</style>
<g id="Layer_1_00000170236641221328944140000001063999480100881822_">
<path class="st0" d="M11.3,2.6c-0.7-0.7-1.8-0.7-2.5,0L2.6,8.8c-0.7,0.7-0.7,1.8,0,2.5l2.1,2.1c0.7,0.7,1.8,0.7,2.5,0l6.3-6.3
c0.7-0.7,0.7-1.8,0-2.5L11.3,2.6z M10.1,3.8l2.1,2.1l-1.3,1.3L8.8,5.1L10.1,3.8z M7.6,6.3l2.1,2.1L8.4,9.7L6.3,7.6L7.6,6.3z
M5.1,8.8l2.1,2.1l-1.3,1.3l-2.1-2.1L5.1,8.8z"/>
</g>
<g id="Layer_2_00000172438228171227073010000011096948942075396741_">
<path class="st0" d="M14.4,11.3c-0.3-0.1-0.6-0.3-0.6-0.6v-0.3l-4.5,4.5c-0.3,0.3-0.6,0.3-0.8,0.1c-0.3-0.3-0.3-0.6,0-0.9L13,9.6
h-0.3c-0.3-0.1-0.6-0.3-0.6-0.6c0.1-0.3,0.3-0.6,0.6-0.6l1.5,0c0.1,0,0.3,0,0.4,0.1c0.1,0.1,0.1,0.1,0.1,0.1
c0.1,0.1,0.1,0.3,0.1,0.4l0.1,1.6C15,11,14.8,11.3,14.4,11.3z"/>
</g>
<path class="st0" d="M1.4,4.9C1.7,5,2,5.3,2,5.5l0,0.3l4.5-4.5C6.8,1,7.1,1,7.3,1.2c0.3,0.3,0.3,0.6,0,0.9L2.8,6.6h0.3
c0.3,0.1,0.6,0.3,0.6,0.6C3.6,7.4,3.3,7.7,3.1,7.7l-1.5,0c-0.3,0-0.3-0.1-0.5-0.1C1,7.5,1,7.5,0.9,7.4C0.9,7.4,0.8,7.2,0.8,7.1
L0.7,5.5C0.8,5.2,1.1,4.9,1.4,4.9z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b4kg0ekxkw2lb"
path="res://.godot/imported/reorderable_container_icon.svg-b137036dec781405c9f5977df10d510b.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/ReorderableContainer/Icon/reorderable_container_icon.svg"
dest_files=["res://.godot/imported/reorderable_container_icon.svg-b137036dec781405c9f5977df10d510b.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

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 25.4.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 16 16" style="enable-background:new 0 0 16 16;" xml:space="preserve">
<style type="text/css">
.st0{fill:#8EEF97;}
</style>
<g id="Layer_1_00000170236641221328944140000001063999480100881822_">
<path class="st0" d="M15,6.3c0-1.1-0.9-2-2-2H3c-1.1,0-2,0.9-2,2v3.4c0,1.1,0.9,2,2,2h10c1.1,0,2-0.9,2-2V6.3z M13,6.3v3.4h-2V6.3
H13z M9,6.3v3.4H7V6.3H9z M5,6.3v3.4H3V6.3H5z"/>
</g>
<g id="Layer_2_00000172438228171227073010000011096948942075396741_">
<path class="st0" d="M10.5,15.7c-0.2-0.3-0.2-0.7,0-0.9l0.2-0.2H3.5c-0.4,0-0.7-0.3-0.7-0.6c0-0.4,0.3-0.7,0.7-0.7h7.2l-0.2-0.2
c-0.2-0.3-0.2-0.7,0-0.9c0.3-0.2,0.7-0.2,0.9,0l1.2,1.2c0.1,0.1,0.2,0.2,0.2,0.4c0,0.1,0,0.1,0,0.2c0,0.1-0.1,0.3-0.2,0.4l-1.2,1.3
C11.2,16,10.8,16,10.5,15.7z"/>
</g>
<path class="st0" d="M5.2,0.3c0.2,0.3,0.2,0.7,0,0.9L5,1.4h7.2c0.4,0,0.7,0.3,0.7,0.6c0,0.4-0.3,0.7-0.7,0.7H5l0.2,0.2
c0.2,0.3,0.2,0.7,0,0.9C4.9,4,4.5,4,4.3,3.8L3.1,2.6C2.9,2.4,2.9,2.3,2.8,2.1c0-0.1,0-0.1,0-0.2S2.9,1.6,3,1.5l1.2-1.3
C4.5,0,4.9,0,5.2,0.3z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bc35o8q35l74"
path="res://.godot/imported/reorderable_hbox_icon.svg-b8929c984930c1cf79a5dffb0a9bff85.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/ReorderableContainer/Icon/reorderable_hbox_icon.svg"
dest_files=["res://.godot/imported/reorderable_hbox_icon.svg-b8929c984930c1cf79a5dffb0a9bff85.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

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 25.4.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 16 16" style="enable-background:new 0 0 16 16;" xml:space="preserve">
<style type="text/css">
.st0{fill:#8EEF97;}
</style>
<g id="Layer_1_00000170236641221328944140000001063999480100881822_">
<path class="st0" d="M6.3,1c-1.1,0-2,0.9-2,2v10c0,1.1,0.9,2,2,2h3.4c1.1,0,2-0.9,2-2V3c0-1.1-0.9-2-2-2H6.3z M6.3,3h3.4v2H6.3V3z
M6.3,7h3.4v2H6.3V7z M6.3,11h3.4v2H6.3V11z"/>
</g>
<g id="Layer_2_00000172438228171227073010000011096948942075396741_">
<path class="st0" d="M15.7,5.5c-0.3,0.2-0.7,0.2-0.9,0l-0.2-0.2v7.2c0,0.4-0.3,0.7-0.6,0.7c-0.4,0-0.7-0.3-0.7-0.7V5.3l-0.2,0.2
c-0.3,0.2-0.7,0.2-0.9,0c-0.2-0.3-0.2-0.7,0-0.9l1.2-1.2c0.1-0.1,0.2-0.2,0.4-0.2c0.1,0,0.1,0,0.2,0c0.1,0,0.3,0.1,0.4,0.2l1.3,1.2
C16,4.8,16,5.2,15.7,5.5z"/>
</g>
<path class="st0" d="M0.3,10.8c0.3-0.2,0.7-0.2,0.9,0L1.4,11V3.8c0-0.4,0.3-0.7,0.6-0.7c0.4,0,0.7,0.3,0.7,0.7V11l0.2-0.2
c0.3-0.2,0.7-0.2,0.9,0c0.2,0.3,0.2,0.7,0,0.9l-1.2,1.2c-0.2,0.2-0.3,0.2-0.5,0.3c-0.1,0-0.1,0-0.2,0S1.6,13.1,1.5,13l-1.3-1.2
C0,11.5,0,11.1,0.3,10.8z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c1rxcwal2patu"
path="res://.godot/imported/reorderable_vbox_icon.svg-6c0163d38628f550aff9f4fbed5c8a1d.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/ReorderableContainer/Icon/reorderable_vbox_icon.svg"
dest_files=["res://.godot/imported/reorderable_vbox_icon.svg-6c0163d38628f550aff9f4fbed5c8a1d.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

View File

@@ -0,0 +1,7 @@
[plugin]
name="ReorderableContainer"
description="A container similar to BoxContainer but extended with drag-and-drop style reordering functionality, and auto-scroll functionality when placed under ScrollContainer."
author="FoolLin"
version="1.2.4"
script="plugin.gd"

View File

@@ -0,0 +1,14 @@
@tool
extends EditorPlugin
func _enter_tree():
add_custom_type("ReorderableContainer", "Container", preload("reorderable_container.gd"), preload("Icon/reorderable_container_icon.svg"))
add_custom_type("ReorderableVBox", "ReorderableContainer", preload("reorderable_vbox.gd"), preload("Icon/reorderable_vbox_icon.svg"))
add_custom_type("ReorderableHBox", "ReorderableContainer", preload("reorderable_hbox.gd"), preload("Icon/reorderable_hbox_icon.svg"))
func _exit_tree():
remove_custom_type("ReorderableContainer")
remove_custom_type("ReorderableVBox")
remove_custom_type("ReorderableHBox")

View File

@@ -0,0 +1 @@
uid://0uea0ywilkmu

View File

@@ -0,0 +1,357 @@
@tool
@icon("Icon/reorderable_container_icon.svg")
class_name ReorderableContainer
extends Container
## A container that allows its child to be reorder and arranges horizontally or vertically.
##
## A container similar to [BoxContainer] but extended with drag-and-drop style reordering functionality,
## and auto-scroll functionality when placed under [ScrollContainer].[br][br]
## [b]Note:[/b] This addon also works with SmoothScroll by SpyrexDE.
##
## @tutorial(SmoothScroll): https://github.com/SpyrexDE/SmoothScroll
## @tutorial(Using Containers): https://docs.godotengine.org/en/4.1/tutorials/ui/gui_containers.html
## Emitted when children have been reordered.
signal reordered(from: int, to: int)
signal dragging(pos: Vector2)
signal drag_started(node)
signal drag_stopped(node)
## Extend the drop zone length at the start and end of the container.
## This will ensure that drop input is recognized even outside the container itself.
const DROP_ZONE_EXTEND = 2000
## The hold duration time in seconds before the holded child will start being drag.
@export
var hold_duration := 0.5
## The overall speed of how fast children will move and arrange.
@export_range(3, 30, 0.01, "or_greater", "or_less")
var speed := 10.0
## The space between the container's elements, in pixels.
@export
var separation := 10: set = set_separation
func set_separation(value):
if value == separation or value < 0:
return
separation = value
_on_sort_children()
## if [code]true[/code] the container will arrange its children vertically, rather than horizontally.
@export var is_vertical := false: set = set_vertical
func set_vertical(value):
if value == is_vertical:
return
is_vertical = value
if is_vertical:
custom_minimum_size.x = 0
else:
custom_minimum_size.y = 0
_on_sort_children()
## (Optional) [ScrollContainer] refference. Normally, the addon will automatically check
## its parent node for [ScrollContainer]. If this is not the case, you can manually specify it here.
@export
var scroll_container: ScrollContainer
## The maximum speed of auto scroll.
@export
var auto_scroll_speed := 10.0
## The pacentage of how much space auto scroll will take in [ScrollContainer][br][br]
## [b]Example:[/b] If [code]auto_scroll_range[/code] is 30% (0.3) and [ScrollContainer] height is 100 px,
## upper part will be 0 to 30 px and lower part will be 70 to 100 px.
@export_range(0, 0.5)
var auto_scroll_range := 0.3
## The scrolling threshold in pixel. In a nutshell, user will have hard time trying to drag a child if it too low
## and user will accidentally drag a child when scrolling if it too high.
@export
var scroll_threshold := 30
## Uses when debugging
@export
var is_debugging := false
var _scroll_starting_point := 0
var _is_smooth_scroll := false
var _drop_zones: Array[Rect2] = []
var _drop_zone_index := -1
var _expect_child_rect: Array[Rect2] = []
var _focus_child: Control
var _is_press := false
var _is_hold := false
var _current_duration := 0.0
var _is_using_process := false
func _ready():
if scroll_container == null and get_parent() is ScrollContainer:
scroll_container = get_parent()
if scroll_container != null and scroll_container.has_method("handle_overdrag"):
_is_smooth_scroll = true
process_mode = Node.PROCESS_MODE_PAUSABLE
_adjust_expected_child_rect()
if not sort_children.is_connected(_on_sort_children):
sort_children.connect(_on_sort_children, CONNECT_PERSIST)
if not get_tree().node_added.is_connected(_on_node_added):
get_tree().node_added.connect(_on_node_added, CONNECT_PERSIST)
func _gui_input(event):
if event is InputEventMouseButton and event.button_index == MOUSE_BUTTON_LEFT:
for _child in get_children():
var child := _child as Control
if child.get_rect().has_point(get_local_mouse_position()) and event.is_pressed():
_focus_child = child
_is_press = true
elif not event.is_pressed():
_is_press = false
_is_hold = false
func _process(delta):
if Engine.is_editor_hint(): return
_handle_input(delta)
if _current_duration >= hold_duration != _is_hold:
_is_hold = _current_duration >= hold_duration
if _is_hold:
_on_start_dragging()
if _is_hold:
_handle_dragging_child_pos(delta)
if scroll_container != null:
_handle_auto_scroll(delta)
elif not _is_hold and _drop_zone_index != -1:
_on_stop_dragging()
if _is_using_process :
_on_sort_children(delta)
func _handle_input(delta):
if scroll_container != null and _is_press and not _is_hold:
var scroll_point = scroll_container.scroll_vertical if is_vertical else scroll_container.scroll_horizontal
if _current_duration == 0:
_scroll_starting_point = scroll_point
else:
# If user scroll more than scroll_threshold, press is abort.
_is_press = true if abs(scroll_point - _scroll_starting_point) <= scroll_threshold else false
_current_duration = _current_duration + delta if _is_press else 0.0
func _on_start_dragging():
# Force _on_sort_children to use process update for linear interpolation
_is_using_process = true
_focus_child.z_index = 1
# Workaround for SmoothScroll addon
if _is_smooth_scroll:
scroll_container.process_mode = Node.PROCESS_MODE_DISABLED
for child in _get_visible_children():
child.propagate_call("set_mouse_filter", [MOUSE_FILTER_IGNORE])
drag_started.emit(_focus_child)
func _on_stop_dragging():
_focus_child.z_index = 0
var focus_child_index := _focus_child.get_index()
move_child(_focus_child, _drop_zone_index)
reordered.emit(focus_child_index, _drop_zone_index)
drag_stopped.emit(_focus_child)
_focus_child = null
_drop_zone_index = -1
if _is_smooth_scroll:
scroll_container.pos = -Vector2(scroll_container.scroll_horizontal, scroll_container.scroll_vertical)
scroll_container.process_mode = Node.PROCESS_MODE_INHERIT
for child in _get_visible_children():
child.propagate_call("set_mouse_filter", [MOUSE_FILTER_PASS])
func _on_node_added(node):
if node is Control and not Engine.is_editor_hint():
node.mouse_filter = Control.MOUSE_FILTER_PASS
func _handle_dragging_child_pos(delta):
if is_vertical:
var target_pos = get_local_mouse_position().y - (_focus_child.size.y / 2.0)
_focus_child.position.y = lerp(_focus_child.position.y, target_pos, delta * speed)
else:
var target_pos = get_local_mouse_position().x - (_focus_child.size.x / 2.0)
_focus_child.position.x = lerp(_focus_child.position.x, target_pos, delta * speed)
# Update drop zone index
var child_center_pos: Vector2 = _focus_child.get_rect().get_center()
for i in range(_drop_zones.size()):
var drop_zone = _drop_zones[i]
if drop_zone.has_point(child_center_pos):
_drop_zone_index = i
break
elif i == _drop_zones.size() - 1:
_drop_zone_index = -1
dragging.emit(get_global_mouse_position())
func _handle_auto_scroll(delta):
var mouse_g_pos = get_global_mouse_position()
var scroll_g_rect = scroll_container.get_global_rect()
if is_vertical:
var upper = scroll_g_rect.position.y + (scroll_g_rect.size.y * auto_scroll_range)
var lower = scroll_g_rect.position.y + (scroll_g_rect.size.y * (1.0 - auto_scroll_range))
if upper > mouse_g_pos.y:
var factor = (upper - mouse_g_pos.y) / (upper - scroll_g_rect.position.y)
scroll_container.scroll_vertical -= delta * float(auto_scroll_speed) * 150.0 * factor
elif lower < mouse_g_pos.y:
var factor = (mouse_g_pos.y - lower) / (scroll_g_rect.end.y - lower)
scroll_container.scroll_vertical += delta * float(auto_scroll_speed) * 150.0 * factor
else:
scroll_container.scroll_vertical = scroll_container.scroll_vertical
else:
var left = scroll_g_rect.position.x + (scroll_g_rect.size.x * auto_scroll_range)
var right = scroll_g_rect.position.x + (scroll_g_rect.size.x * (1.0 - auto_scroll_range))
if left > mouse_g_pos.x:
var factor = (left - mouse_g_pos.x) / (left - scroll_g_rect.position.x)
scroll_container.scroll_horizontal -= delta * float(auto_scroll_speed) * 150.0 * factor
elif right < mouse_g_pos.x:
var factor = (mouse_g_pos.x - right) / (scroll_g_rect.end.x - right)
scroll_container.scroll_horizontal += delta * float(auto_scroll_speed) * 150.0 * factor
else:
scroll_container.scroll_horizontal = scroll_container.scroll_horizontal
func _on_sort_children(delta := -1.0):
if _is_using_process and delta == -1.0:
return
_adjust_expected_child_rect()
_adjust_child_rect(delta)
_adjust_drop_zone_rect()
func _adjust_expected_child_rect():
_expect_child_rect.clear()
var children := _get_visible_children()
var end_point = 0.0
for i in range(children.size()):
var child := children[i]
var min_size := child.get_combined_minimum_size()
if is_vertical:
if i == _drop_zone_index:
end_point += _focus_child.size.y + separation
_expect_child_rect.append(Rect2(Vector2(0, end_point), Vector2(size.x, min_size.y)))
end_point += min_size.y + separation
else:
if i == _drop_zone_index:
end_point += _focus_child.size.x + separation
_expect_child_rect.append(Rect2(Vector2(end_point, 0), Vector2(min_size.x, size.y)))
end_point += min_size.x + separation
func _adjust_child_rect(delta: float = -1.0):
var children := _get_visible_children()
if children.is_empty():
return
var is_animating := false
var end_point := 0.0
for i in range(children.size()):
var child := children[i]
if child.position == _expect_child_rect[i].position and child.size == _expect_child_rect[i].size:
continue
if _is_using_process:
is_animating = true
child.position = lerp(child.position, _expect_child_rect[i].position, delta * speed)
child.size = _expect_child_rect[i].size
if (child.position - _expect_child_rect[i].position).length() <= 1.0:
child.position = _expect_child_rect[i].position
else:
child.position = _expect_child_rect[i].position
child.size = _expect_child_rect[i].size
var last_child := children[-1]
if is_vertical:
if _is_using_process and _drop_zone_index == children.size():
custom_minimum_size.y = _expect_child_rect[-1].end.y + _focus_child.size.y + separation
elif not _is_using_process:
custom_minimum_size.y = last_child.get_rect().end.y
else:
if _is_using_process and _drop_zone_index == children.size():
custom_minimum_size.x = _expect_child_rect[-1].end.x + _focus_child.size.x + separation
elif not _is_using_process:
custom_minimum_size.x = last_child.get_rect().end.x
# Adjust rect every process frame until child is dropped and finished lerping
# ( return to adjust when sort_children signal is emitted)
if not is_animating and _focus_child == null:
_is_using_process = false
func _adjust_drop_zone_rect():
_drop_zones.clear()
var children = _get_visible_children()
for i in range(children.size()):
var drop_zone_rect: Rect2
var child := children[i] as Control
if is_vertical:
if i == 0:
# First child
drop_zone_rect.position = Vector2(child.position.x, child.position.y - DROP_ZONE_EXTEND)
drop_zone_rect.end = Vector2(child.size.x, child.get_rect().get_center().y)
_drop_zones.append(drop_zone_rect)
else:
# In between
var prev_child := children[i - 1] as Control
drop_zone_rect.position = Vector2(prev_child.position.x, prev_child.get_rect().get_center().y)
drop_zone_rect.end = Vector2(child.size.x, child.get_rect().get_center().y)
_drop_zones.append(drop_zone_rect)
if i == children.size() - 1:
# Is also last child
drop_zone_rect.position = Vector2(child.position.x, child.get_rect().get_center().y)
drop_zone_rect.end = Vector2(child.size.x, child.get_rect().end.y + DROP_ZONE_EXTEND)
_drop_zones.append(drop_zone_rect)
else:
if i == 0:
# First child
drop_zone_rect.position = Vector2(child.position.x - DROP_ZONE_EXTEND, child.position.y)
drop_zone_rect.end = Vector2(child.get_rect().get_center().x, child.size.y)
_drop_zones.append(drop_zone_rect)
else:
# In between
var prev_child := children[i - 1] as Control
drop_zone_rect.position = Vector2(prev_child.get_rect().get_center().x, prev_child.position.y)
drop_zone_rect.end = Vector2(child.get_rect().get_center().x, child.size.y)
_drop_zones.append(drop_zone_rect)
if i == children.size() - 1:
# Is also last child
drop_zone_rect.position = Vector2(child.get_rect().get_center().x, child.position.y)
drop_zone_rect.end = Vector2(child.get_rect().end.x + DROP_ZONE_EXTEND, child.size.y)
_drop_zones.append(drop_zone_rect)
func _get_visible_children() -> Array[Control]:
var visible_control: Array[Control]
for _child in get_children():
var child := _child as Control
if not child.visible:
continue
if child == _focus_child and _is_hold:
continue
visible_control.append(child)
return visible_control
func _print_debug(val):
if is_debugging:
print(val)

View File

@@ -0,0 +1 @@
uid://jwjxetmu7o2o

View File

@@ -0,0 +1,13 @@
@tool
@icon("Icon/reorderable_hbox_icon.svg")
class_name ReorderableHBox
extends ReorderableContainer
func set_vertical(value):
value = false
super.set_vertical(value)
func _ready():
is_vertical = false
super._ready()

View File

@@ -0,0 +1 @@
uid://gp5cpsm0gdkx

View File

@@ -0,0 +1,13 @@
@tool
@icon("Icon/reorderable_vbox_icon.svg")
class_name ReorderableVBox
extends ReorderableContainer
func set_vertical(value):
value = true
super.set_vertical(value)
func _ready():
is_vertical = true
super._ready()

View File

@@ -0,0 +1 @@
uid://d3mey1366662n

View File

Before

Width:  |  Height:  |  Size: 643 B

After

Width:  |  Height:  |  Size: 643 B

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bgw38ld52wu05"
path="res://.godot/imported/profile-popup.png-4f1104831ee3a5fc9edd8fb7c7f9b122.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_Glossary/profile-popup.png"
dest_files=["res://.godot/imported/profile-popup.png-4f1104831ee3a5fc9edd8fb7c7f9b122.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

View File

@@ -1,6 +1,7 @@
class_name Quest extends Resource class_name Quest extends Resource
#The list of available quests
static var list : Array[Quest]
enum Status{ enum Status{
@@ -31,10 +32,13 @@ class Event:
VICTORY, VICTORY,
DEFEAT DEFEAT
} }
var hidden : bool = false
var type : Type = Type.WAIT var type : Type = Type.WAIT
var enemies : Array[String] = [] var enemies : Array[String] = []
var progress_point : float = 0
var time : float = 1 var time : float = 1
var time_elapsed var time_elapsed
var complete : bool = false
signal completed() signal completed()
signal failed() signal failed()
@@ -43,6 +47,21 @@ class Event:
var busy_list : Array = [] var busy_list : Array = []
var combat_state var combat_state
var dex_speed : int var dex_speed : int
func setup() -> void:
pass
func save_dict() -> Dictionary:
var d : Dictionary = {}
d.hidden = hidden
d.type = type
d.enemies = enemies
d.progress_point = progress_point
d.time = time
d.time_elapsed = time_elapsed
d.complete = complete
return d
func start(quest : Quest) -> void: func start(quest : Quest) -> void:
match(type): match(type):
Type.WAIT: Type.WAIT:
@@ -54,8 +73,9 @@ class Event:
enemy_list.append(enemy_types[enemy_name].instantiate()) enemy_list.append(enemy_types[enemy_name].instantiate())
quest.questview.set_questor_animation("idle") quest.questview.set_questor_animation("idle")
for enemy in enemy_list: for enemy in enemy_list:
enemy.flip_h()
quest.questview.pause_setting() quest.questview.pause_setting()
quest.questview.place_enemy(enemy) quest.questview.place_enemy(enemy, true)
quest.questview.set_enemy_animation(enemy, "idle") quest.questview.set_enemy_animation(enemy, "idle")
start_combat([quest.questor.quest_sprite], enemy_list) start_combat([quest.questor.quest_sprite], enemy_list)
@@ -63,10 +83,12 @@ class Event:
participants = [] participants = []
participants.append_array(adventurers) participants.append_array(adventurers)
participants.append_array(enemies) participants.append_array(enemies)
time = 1.25
time_elapsed = 0
var c_order : Array = [] var c_order : Array = []
var dex_speed = 0 var dex_speed = 0
for p in participants: for p in participants:
p.show_lifebar(true)
c_order.append([p, p.stats.DEX]) c_order.append([p, p.stats.DEX])
if p.stats.DEX > dex_speed: if p.stats.DEX > dex_speed:
dex_speed = p.stats.DEX dex_speed = p.stats.DEX
@@ -91,7 +113,7 @@ class Event:
func add_to_turn_queue(combatant) -> void: func add_to_turn_queue(combatant) -> void:
#Calculate time #Calculate time
var time = dex_speed / combatant.stats.DEX var time = dex_speed / max(1, combatant.stats.DEX)
#Walk through list to find insertion point #Walk through list to find insertion point
var idx = -1 var idx = -1
for i in range(len(turn_queue)): for i in range(len(turn_queue)):
@@ -131,7 +153,8 @@ class Event:
for p : QuestorSprite in participants: for p : QuestorSprite in participants:
p.check_levelup() p.check_levelup()
#TODO: Notify player if level up occurs #TODO: Notify player if level up occurs
time = 5 time = 3
time_elapsed = 0
func defeat(): func defeat():
print("Questor lost!") print("Questor lost!")
@@ -150,6 +173,11 @@ class Event:
printerr("Tried to remove someone not in the turn queue") printerr("Tried to remove someone not in the turn queue")
func _on_combat_action_complete(requeue : bool, combatant : QuestSprite) -> void: func _on_combat_action_complete(requeue : bool, combatant : QuestSprite) -> void:
if combatant.position != combatant.reset_position:
combatant.position_reset()
combatant.arrived.connect(_on_combat_action_complete.bind(requeue, combatant), CONNECT_ONE_SHOT)
return
busy_list.erase(combatant) busy_list.erase(combatant)
if requeue: if requeue:
add_to_turn_queue(combatant) add_to_turn_queue(combatant)
@@ -159,7 +187,8 @@ class Event:
#TODO: Come up with other options than just swinging at each other #TODO: Come up with other options than just swinging at each other
var enemies : Array = get_enemy_list(combatant) var enemies : Array = get_enemy_list(combatant)
var target = enemies.pick_random() var target = enemies.pick_random()
execute_attack(combatant, target) combatant.approach(target, combatant.melee_range)
combatant.arrived.connect(execute_attack.bind(combatant, target), CONNECT_ONE_SHOT)
func get_enemy_list(combatant) -> Array: func get_enemy_list(combatant) -> Array:
var lst = [] var lst = []
@@ -169,12 +198,21 @@ class Event:
return lst return lst
func resolve_combat() -> void: func resolve_combat() -> void:
for p in participants:
p.show_lifebar(false)
pass pass
func process(delta : float) -> void: func process(delta : float) -> void:
#TODO: Make quest combat work #TODO: Make quest combat work
match(type): match(type):
Type.COMBAT: Type.COMBAT:
if time != 0:
time_elapsed += delta
if time_elapsed >= time:
time = 0
time_elapsed = 0
else:
return
match(combat_state): match(combat_state):
CombatState.FIGHTING: CombatState.FIGHTING:
if len(busy_list) < 1: if len(busy_list) < 1:
@@ -189,14 +227,16 @@ class Event:
else: else:
resolve_combat() resolve_combat()
CombatState.VICTORY: CombatState.VICTORY:
time_elapsed += delta resolve_combat()
if time_elapsed >= time: complete = true
completed.emit() completed.emit()
Type.WAIT: Type.WAIT:
time_elapsed += delta time_elapsed += delta
if time_elapsed >= time: if time_elapsed >= time:
complete = true
completed.emit() completed.emit()
var base_name : String = ""
var name : String = "A Basic Quest" var name : String = "A Basic Quest"
var desc : String = "The default quest, with no special anything." var desc : String = "The default quest, with no special anything."
var difficulty : int = 1 var difficulty : int = 1
@@ -233,6 +273,7 @@ func fail() -> void:
func complete() -> void: func complete() -> void:
status = Status.COMPLETED status = Status.COMPLETED
status_changed.emit(Status.COMPLETED) status_changed.emit(Status.COMPLETED)
questview.show_quest_complete()
for reward in rewards.keys(): for reward in rewards.keys():
if reward == "gold": if reward == "gold":
questor.gain_gold(rewards[reward]) questor.gain_gold(rewards[reward])
@@ -268,3 +309,46 @@ func difficulty_name() -> String:
4: return "Extreme" 4: return "Extreme"
5: return "Legendary" 5: return "Legendary"
_: return "Unknown" _: return "Unknown"
static func load_quest_list() -> void:
var path = ProjectSettings.get_setting_with_override("data/quests/directory")
var dir = DirAccess.open(path)
var quest : Quest
if dir:
dir.list_dir_begin()
var filename = dir.get_next()
while filename != "":
if not dir.current_is_dir() and filename.get_extension() == "gd":
var file = load(path + "/" + filename).new()
if file is Quest:
list.append(file)
filename = dir.get_next()
dir.list_dir_end()
static func generate(parameters : Dictionary) -> Quest:
return null
func save_dict() -> Dictionary:
var d : Dictionary = {}
d.name = name
d.base_name = base_name
d.desc = desc
d.difficulty = difficulty
d.location = location
d.steps = steps
#TODO: Convert these!
#d.rewards = rewards
#d.guild_rewards = guild_rewards
d.covenant_cost = covenant_cost
d.length = length
d.progress = progress
d.current_step = current_step
d.taken = taken
d.status = status
var lst : Array = []
for evt in events:
lst.append(evt.save_dict())
d.events = lst
return d

View File

@@ -1,17 +1,37 @@
extends Quest extends Quest
func _init() -> void: func setup() -> void:
name = "A Sticky Situation" name = "A Sticky Situation"
var event_weights = [1,1,1,1,1,1,1,1,2,2,2,2,3,3,3,4,4,5] var event_weights = [1,1,1,1,1,1,1,1,2,2,2,2,3,3,3,4,4,5]
var num_events = event_weights.pick_random() var num_events = 3 # event_weights.pick_random()
#The first event is guaranteed to be at the 50% mark.
var first : bool = true
var pranges : Array = []
var margin : float = 0.1
for i in range(num_events): for i in range(num_events):
var evt : Quest.Event = Quest.Event.new() var evt : Quest.Event = Quest.Event.new()
evt.type = Quest.Event.Type.COMBAT evt.type = Quest.Event.Type.COMBAT
evt.enemies = ["goo"] evt.enemies = ["goo"]
evt.time = 5 evt.time = 5
if first:
#Make invisible
evt.progress_point = .5
pranges.append([margin, evt.progress_point-margin])
pranges.append([evt.progress_point+margin, 1 - margin])
first = false
else:
evt.hidden = true
pranges.shuffle()
var range = pranges.pop_back()
evt.progress_point = randf_range(range[0], range[1])
if evt.progress_point - range[0] >= 2 * margin:
pranges.append([range[0], evt.progress_point - margin])
if range[1] - evt.progress_point >= 2 * margin:
pranges.append([evt.progress_point + margin, range[1]])
events.append(evt) events.append(evt)
events.sort_custom(func(a,b): return a.progress_point < b.progress_point)
desc = "Nestors Woods is facing a slime invasion and the farmers are getting nervous, send an adventurer to help squash that sticky situation!" desc = "Nestors Woods is facing a slime invasion and the farmers are getting nervous, send an adventurer to help squash that sticky situation!"
location = location = Quest.Locations.NESTORS_WOODS
rewards = {"exp":10, "gold":5} rewards = {"exp":10, "gold":5}
guild_rewards = {"glory":10, "gold":5} guild_rewards = {"glory":10, "gold":5}
covenant_cost = 5 covenant_cost = 5

View File

@@ -0,0 +1,3 @@
@tool
extends "res://addons/dialogic/Modules/LayeredPortrait/layered_portrait.gd"

View File

@@ -0,0 +1 @@
uid://0ah5wvuoqupd

View File

@@ -0,0 +1,14 @@
[gd_scene load_steps=2 format=3 ]
[ext_resource type="Script" path="res://dialogic/custom_layered_portrait.gd" id="1_uubi5"]
[node name="LayeredPortrait" type="CanvasGroup"]
script = ExtResource("1_uubi5")
[node name="Layer1" type="Sprite2D" parent="."]
[node name="Group1" type="Node2D" parent="."]
[node name="Layer1" type="Sprite2D" parent="Group1"]
[node name="Layer2" type="Sprite2D" parent="Group1"]

64
dialogic/test-style.tres Normal file
View File

@@ -0,0 +1,64 @@
[gd_resource type="Resource" script_class="DialogicStyle" load_steps=20 format=3 uid="uid://ds2tuiay4rabe"]
[ext_resource type="Script" uid="uid://1qacwh2qaoiq" path="res://addons/dialogic/Resources/dialogic_style_layer.gd" id="1_5yaxe"]
[ext_resource type="PackedScene" uid="uid://c1k5m0w3r40xf" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_FullBackground/full_background_layer.tscn" id="2_sw2mm"]
[ext_resource type="PackedScene" uid="uid://cy1y14inwkplb" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Portraits/vn_portrait_layer.tscn" id="3_mfkbk"]
[ext_resource type="PackedScene" uid="uid://cn674foxwedqu" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_Input/full_advance_input_layer.tscn" id="4_muaod"]
[ext_resource type="PackedScene" uid="uid://bquja8jyk8kbr" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/vn_textbox_layer.tscn" id="5_587fh"]
[ext_resource type="PackedScene" uid="uid://dsbwnp5hegnu3" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_Glossary/glossary_popup_layer.tscn" id="6_i5shp"]
[ext_resource type="PackedScene" uid="uid://dhk6j6eb6e3q" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/vn_choice_layer.tscn" id="7_yh6aj"]
[ext_resource type="PackedScene" uid="uid://cvgf4c6gg0tsy" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_TextInput/text_input_layer.tscn" id="8_dikk4"]
[ext_resource type="PackedScene" uid="uid://lx24i8fl6uo" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_History/history_layer.tscn" id="9_isvcv"]
[ext_resource type="Script" uid="uid://b5nqsdfdl0jjg" path="res://addons/dialogic/Resources/dialogic_style.gd" id="10_qi7p4"]
[sub_resource type="Resource" id="Resource_5nw0r"]
script = ExtResource("1_5yaxe")
[sub_resource type="Resource" id="Resource_bpwsm"]
script = ExtResource("1_5yaxe")
scene = ExtResource("2_sw2mm")
[sub_resource type="Resource" id="Resource_swupp"]
script = ExtResource("1_5yaxe")
scene = ExtResource("3_mfkbk")
[sub_resource type="Resource" id="Resource_w34dy"]
script = ExtResource("1_5yaxe")
scene = ExtResource("4_muaod")
[sub_resource type="Resource" id="Resource_7vels"]
script = ExtResource("1_5yaxe")
scene = ExtResource("5_587fh")
[sub_resource type="Resource" id="Resource_rtvk6"]
script = ExtResource("1_5yaxe")
scene = ExtResource("6_i5shp")
[sub_resource type="Resource" id="Resource_j7il2"]
script = ExtResource("1_5yaxe")
scene = ExtResource("7_yh6aj")
[sub_resource type="Resource" id="Resource_qx0md"]
script = ExtResource("1_5yaxe")
scene = ExtResource("8_dikk4")
[sub_resource type="Resource" id="Resource_dv5be"]
script = ExtResource("1_5yaxe")
scene = ExtResource("9_isvcv")
[resource]
script = ExtResource("10_qi7p4")
name = "test-style"
layer_list = Array[String](["10", "11", "12", "13", "14", "15", "16", "17"])
layer_info = {
"": SubResource("Resource_5nw0r"),
"10": SubResource("Resource_bpwsm"),
"11": SubResource("Resource_swupp"),
"12": SubResource("Resource_w34dy"),
"13": SubResource("Resource_7vels"),
"14": SubResource("Resource_rtvk6"),
"15": SubResource("Resource_j7il2"),
"16": SubResource("Resource_qx0md"),
"17": SubResource("Resource_dv5be")
}
metadata/_latest_layer = "13"

View File

@@ -0,0 +1,364 @@
[gd_scene load_steps=18 format=3 uid="uid://co4lvbcvc4n4r"]
[ext_resource type="Script" uid="uid://dh7v16o6p2byd" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/vn_textbox_layer.gd" id="1_8w2ny"]
[ext_resource type="Script" uid="uid://deyihsk5ygbhr" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/animations.gd" id="2_lm5q8"]
[ext_resource type="Texture2D" uid="uid://wjhyhe1jeli4" path="res://external/dialogue-box.png" id="3_8w2ny"]
[ext_resource type="Script" uid="uid://sv8obsrlo5h4" path="res://addons/dialogic/Modules/Text/node_dialog_text.gd" id="4_upo8v"]
[ext_resource type="Script" uid="uid://beqdjhq0e2wyc" path="res://addons/dialogic/Modules/Text/node_type_sound.gd" id="5_8i8x0"]
[ext_resource type="Script" uid="uid://ceitutnrgf6q4" path="res://addons/dialogic/Modules/Text/node_next_indicator.gd" id="6_wmx4e"]
[ext_resource type="Texture2D" uid="uid://b0rpqfg4fhebk" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/next.svg" id="7_otcnr"]
[ext_resource type="Script" uid="uid://c1vq61i7urva2" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/autoadvance_indicator.gd" id="8_oc1t2"]
[ext_resource type="StyleBox" uid="uid://m7gyepkysu83" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/vn_textbox_name_label_panel.tres" id="9_3ecl4"]
[ext_resource type="Script" uid="uid://qkdtvkpiquha" path="res://addons/dialogic/Modules/Text/node_name_label.gd" id="10_0m0vw"]
[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="StyleBoxTexture" id="StyleBoxTexture_lm5q8"]
texture = ExtResource("3_8w2ny")
texture_margin_left = 40.0
texture_margin_top = 40.0
texture_margin_right = 40.0
texture_margin_bottom = 40.0
[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_8w2ny")
box_panel = "res://addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/vn_textbox_default_panel.tres"
box_color_use_global = false
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_lm5q8")
[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 = -250.0
offset_top = -100.0
offset_right = 250.0
grow_horizontal = 2
grow_vertical = 0
mouse_filter = 2
[node name="DialogTextPanel" type="PanelContainer" parent="Anchor/AnimationParent/Sizer"]
unique_name_in_owner = true
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 = SubResource("StyleBoxTexture_lm5q8")
metadata/_edit_layout_mode = 1
[node name="HBoxContainer" type="HBoxContainer" parent="Anchor/AnimationParent/Sizer/DialogTextPanel"]
layout_mode = 2
[node name="VBoxContainer" type="VBoxContainer" parent="Anchor/AnimationParent/Sizer/DialogTextPanel/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
[node name="NameLabelHolder" type="Control" parent="Anchor/AnimationParent/Sizer/DialogTextPanel/HBoxContainer/VBoxContainer"]
layout_mode = 2
mouse_filter = 2
[node name="NameLabelPanel" type="PanelContainer" parent="Anchor/AnimationParent/Sizer/DialogTextPanel/HBoxContainer/VBoxContainer/NameLabelHolder"]
unique_name_in_owner = true
self_modulate = Color(0.00784314, 0.00784314, 0.00784314, 0.843137)
layout_mode = 1
offset_left = 26.0
offset_top = 17.0
offset_right = 55.0
offset_bottom = 49.0
mouse_filter = 2
theme_override_styles/panel = ExtResource("9_3ecl4")
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/HBoxContainer/VBoxContainer/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 = "Person"
script = ExtResource("10_0m0vw")
name_label_root = NodePath("..")
[node name="MarginContainer" type="MarginContainer" parent="Anchor/AnimationParent/Sizer/DialogTextPanel/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
[node name="DialogicNode_DialogText" type="RichTextLabel" parent="Anchor/AnimationParent/Sizer/DialogTextPanel/HBoxContainer/MarginContainer" 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/bold_italics_font_size = 15
theme_override_font_sizes/italics_font_size = 15
bbcode_enabled = true
text = "Some default text"
visible_characters_behavior = 1
script = ExtResource("4_upo8v")
textbox_root = NodePath("../../..")
[node name="DialogicNode_TypeSounds" type="AudioStreamPlayer" parent="Anchor/AnimationParent/Sizer/DialogTextPanel/HBoxContainer/MarginContainer/DialogicNode_DialogText"]
unique_name_in_owner = true
script = ExtResource("5_8i8x0")
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("6_wmx4e")
show_on_questions = true
texture = ExtResource("7_otcnr")
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("8_oc1t2")

View File

@@ -0,0 +1,16 @@
label Prespeech
I never imagined that one day I'd be in charge of a guild. To be honest, I never really imagined what my future would look like. I've never been very good at anything.
[background arg="res://graphics/spritesheet_characters.png" fade="0.4"]
I just lived every day working the best I could and hoping that somehow, someway, the world would show me what to do. And then grandma died and left me this letter.
do Game.switch_scenes("letter")
[end_timeline]
label Start Guildcard
Suddenly I had a purpose. I didn't know it then and I never asked for it, but filling out that card was the first step in becoming a better version of myself.
do Game.switch_scenes("guild_card")
Ugh, I hated paperwork and there sure was a lot of it.
[end_timeline]
label Start Schedule
And MORE paperwork. I was starting to understand why grandma thought risking death was better.
do Game.switch_scenes("set_shifts")
[end_timeline]
label First Portrait Open

View File

@@ -1,3 +1,6 @@
And after that, all that was left was to... just open the guild gate, I guess?
It took me a little while to find the thing in the middle of Nestor's Woods despite growing up there. I knew Guildhalls were hidden in another dimension, but I'd always pictured the Guild Gates would be more... magical looking?
do Game.switch_scenes("first_guildhall")
player: (Wow this is a mess... nobody's been here for a while. I should...) player: (Wow this is a mess... nobody's been here for a while. I should...)
- set up some lights. - set up some lights.
Hey, no touching! This isn't your home! Get out! Hey, no touching! This isn't your home! Get out!

View File

@@ -1,2 +0,0 @@
[style]
I never imagined that one day I'd be in charge of a guild. To be honest, I never really imagined what my future would look like. I've never been very good at anything. I just lived every day working the best I could and hoping that somehow, someway, the world would show me what to do. And then my grandma died.

View File

@@ -8,12 +8,22 @@
"sound_moods": {}, "sound_moods": {},
"style": "" "style": ""
}, },
&"default_portrait": "", &"default_portrait": "New portrait",
&"description": "", &"description": "",
&"display_name": "Player", &"display_name": "Player",
&"mirror": false, &"mirror": false,
&"nicknames": ["Guildmaster"], &"nicknames": ["Guildmaster"],
&"offset": Vector2(0, 0), &"offset": Vector2(0, 0),
&"portraits": {}, &"portraits": {
"New portrait": {
"export_overrides": {
"image": ""
},
"mirror": false,
"offset": Vector2(0, 0),
"scale": 1,
"scene": "res://dialogic/layered_portrait_player.tscn"
}
},
&"scale": 1.0 &"scale": 1.0
} }

BIN
external/Test Portrait/Penny.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

View File

@@ -2,16 +2,16 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://bgw38ld52wu05" uid="uid://dy01kbn6oq774"
path="res://.godot/imported/profile-popup.png-ac2c647ffb9a3ddb191e025f4c871f30.ctex" path="res://.godot/imported/Penny.png-eed612fd907e6c9792369a6b6c727880.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://graphics/profile-popup.png" source_file="res://external/test portrait/Penny.png"
dest_files=["res://.godot/imported/profile-popup.png-ac2c647ffb9a3ddb191e025f4c871f30.ctex"] dest_files=["res://.godot/imported/Penny.png-eed612fd907e6c9792369a6b6c727880.ctex"]
[params] [params]

View File

@@ -0,0 +1,8 @@
[gd_resource type="GradientTexture1D" load_steps=2 format=3 uid="uid://cxecub83q07gq"]
[sub_resource type="Gradient" id="Gradient_u7u0c"]
offsets = PackedFloat32Array(0, 0.49604222, 0.89973617, 1)
colors = PackedColorArray(0, 0, 0, 1, 0, 0, 0.68, 1, 0.86, 0.86, 1, 1, 0, 0, 1, 1)
[resource]
gradient = SubResource("Gradient_u7u0c")

View File

@@ -1,8 +1,8 @@
[gd_resource type="GradientTexture1D" load_steps=2 format=3 uid="uid://cd4jsivokd6sk"] [gd_resource type="GradientTexture1D" load_steps=2 format=3 uid="uid://cd4jsivokd6sk"]
[sub_resource type="Gradient" id="Gradient_u7u0c"] [sub_resource type="Gradient" id="Gradient_u7u0c"]
offsets = PackedFloat32Array(0, 0.49604222, 0.89973617, 1) offsets = PackedFloat32Array(0, 0.5252918, 0.8774319, 1)
colors = PackedColorArray(0, 0, 0, 1, 0, 0, 0.68, 1, 0.86, 0.86, 1, 1, 0, 0, 1, 1) colors = PackedColorArray(0, 0, 0, 1, 0.68, 0.13600004, 0, 1, 1, 0.6533333, 0.19999999, 1, 1, 0.6, 0, 1)
[resource] [resource]
gradient = SubResource("Gradient_u7u0c") gradient = SubResource("Gradient_u7u0c")

View File

@@ -0,0 +1,8 @@
[gd_resource type="GradientTexture1D" load_steps=2 format=3 uid="uid://bpiu6d7lbhyw"]
[sub_resource type="Gradient" id="Gradient_s3ye8"]
offsets = PackedFloat32Array(0, 0.8385214, 0.99416345)
colors = PackedColorArray(0, 0, 0, 1, 0.4313402, 0.43134028, 0.43134007, 1, 0.7, 0.7, 0.7, 1)
[resource]
gradient = SubResource("Gradient_s3ye8")

View File

@@ -0,0 +1,8 @@
[gd_resource type="GradientTexture1D" load_steps=2 format=3 uid="uid://khdd0qlqn4jy"]
[sub_resource type="Gradient" id="Gradient_qpr8j"]
offsets = PackedFloat32Array(0, 0.33333334, 0.7829978)
colors = PackedColorArray(0.36862746, 0, 1, 1, 0.66, 0.30359998, 0.30359998, 1, 0.6997569, 0.41199392, 0.19485885, 1)
[resource]
gradient = SubResource("Gradient_qpr8j")

View File

@@ -0,0 +1,8 @@
[gd_resource type="GradientTexture1D" load_steps=2 format=3 uid="uid://cjs6gcaqkblxv"]
[sub_resource type="Gradient" id="Gradient_qpr8j"]
offsets = PackedFloat32Array(0, 0.33333334, 0.7829978)
colors = PackedColorArray(0.36862746, 0, 1, 1, 0.66, 0.30359998, 0.30359998, 1, 0.6997569, 0.41199392, 0.19485885, 1)
[resource]
gradient = SubResource("Gradient_qpr8j")

View File

@@ -0,0 +1,8 @@
[gd_resource type="GradientTexture1D" load_steps=2 format=3 uid="uid://spgxsr4e3q7v"]
[sub_resource type="Gradient" id="Gradient_qpr8j"]
offsets = PackedFloat32Array(0, 0.33333334, 0.7829978)
colors = PackedColorArray(0.36862746, 0, 1, 1, 0.66, 0.30359998, 0.30359998, 1, 0.6997569, 0.41199392, 0.19485885, 1)
[resource]
gradient = SubResource("Gradient_qpr8j")

View File

@@ -0,0 +1,8 @@
[gd_resource type="GradientTexture1D" load_steps=2 format=3 uid="uid://cxe2e2cp44nke"]
[sub_resource type="Gradient" id="Gradient_qpr8j"]
offsets = PackedFloat32Array(0, 0.33333334, 0.7829978)
colors = PackedColorArray(0.36862746, 0, 1, 1, 0.66, 0.30359998, 0.30359998, 1, 0.6997569, 0.41199392, 0.19485885, 1)
[resource]
gradient = SubResource("Gradient_qpr8j")

View File

@@ -0,0 +1,8 @@
[gd_resource type="GradientTexture1D" load_steps=2 format=3 uid="uid://ulft7ngl80hw"]
[sub_resource type="Gradient" id="Gradient_qpr8j"]
offsets = PackedFloat32Array(0, 0.33333334, 0.7829978)
colors = PackedColorArray(0.36862746, 0, 1, 1, 0.66, 0.30359998, 0.30359998, 1, 0.6997569, 0.41199392, 0.19485885, 1)
[resource]
gradient = SubResource("Gradient_qpr8j")

View File

@@ -0,0 +1,8 @@
[gd_resource type="GradientTexture1D" load_steps=2 format=3 uid="uid://dan3oxihr3rfl"]
[sub_resource type="Gradient" id="Gradient_qpr8j"]
offsets = PackedFloat32Array(0, 0.33333334, 0.7829978)
colors = PackedColorArray(0.36862746, 0, 1, 1, 0.66, 0.30359998, 0.30359998, 1, 0.6997569, 0.41199392, 0.19485885, 1)
[resource]
gradient = SubResource("Gradient_qpr8j")

View File

@@ -0,0 +1,8 @@
[gd_resource type="GradientTexture1D" load_steps=2 format=3 uid="uid://cj6b262y57ouo"]
[sub_resource type="Gradient" id="Gradient_qpr8j"]
offsets = PackedFloat32Array(0, 0.33333334, 0.7829978)
colors = PackedColorArray(0.36862746, 0, 1, 1, 0.66, 0.30359998, 0.30359998, 1, 0.6997569, 0.41199392, 0.19485885, 1)
[resource]
gradient = SubResource("Gradient_qpr8j")

View File

@@ -0,0 +1,8 @@
[gd_resource type="GradientTexture1D" load_steps=2 format=3 uid="uid://c2q21glbldxao"]
[sub_resource type="Gradient" id="Gradient_qpr8j"]
offsets = PackedFloat32Array(0, 0.33333334, 0.7829978)
colors = PackedColorArray(0.36862746, 0, 1, 1, 0.66, 0.30359998, 0.30359998, 1, 0.6997569, 0.41199392, 0.19485885, 1)
[resource]
gradient = SubResource("Gradient_qpr8j")

View File

@@ -0,0 +1,8 @@
[gd_resource type="GradientTexture1D" load_steps=2 format=3 uid="uid://bq1mcdggw8ksg"]
[sub_resource type="Gradient" id="Gradient_bnujo"]
offsets = PackedFloat32Array(0, 0.21700224, 0.3914989, 0.57270694, 1)
colors = PackedColorArray(0, 0, 0, 1, 0, 0, 0, 1, 0.29954743, 0.29954746, 0.2995473, 1, 0.26657522, 0.2665752, 0.2665752, 1, 1, 1, 1, 1)
[resource]
gradient = SubResource("Gradient_bnujo")

BIN
external/Test Portrait/player/eye-a.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cygn0xfsayykd"
path="res://.godot/imported/eye-a.png-4ae928c135fabbb6dbe591d1f658a054.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://external/test portrait/player/eye-a.png"
dest_files=["res://.godot/imported/eye-a.png-4ae928c135fabbb6dbe591d1f658a054.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

BIN
external/Test Portrait/player/eye-b.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bg6lac6nl5k84"
path="res://.godot/imported/eye-b.png-8a340a04655f91a439de6b55293f607d.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://external/test portrait/player/eye-b.png"
dest_files=["res://.godot/imported/eye-b.png-8a340a04655f91a439de6b55293f607d.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

BIN
external/Test Portrait/player/eye-c.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bxdclvopvj75q"
path="res://.godot/imported/eye-c.png-b34d6d5c940d727416bc135e5e88a9ca.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://external/test portrait/player/eye-c.png"
dest_files=["res://.godot/imported/eye-c.png-b34d6d5c940d727416bc135e5e88a9ca.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

Binary file not shown.

BIN
external/Test Portrait/priestess.clip vendored Normal file

Binary file not shown.

View File

@@ -1,10 +1,7 @@
[gd_resource type="ShaderMaterial" load_steps=4 format=3 uid="uid://ca43sapn4p61w"] [gd_resource type="ShaderMaterial" load_steps=2 format=3 uid="uid://ca43sapn4p61w"]
[ext_resource type="Shader" uid="uid://dbcokq5fn2les" path="res://shaders/trigradient.tres" id="1_sifog"] [ext_resource type="Shader" uid="uid://dbcokq5fn2les" path="res://shaders/trigradient.tres" id="1_sifog"]
[ext_resource type="Texture2D" uid="uid://0dwdi7m62trg" path="res://external/test portrait/gradients/hair/(c)red.tres" id="2_2qy1r"]
[ext_resource type="Texture2D" uid="uid://s2ok31sncevx" path="res://external/test portrait/gradients/dark-hair.tres" id="3_5udns"]
[resource] [resource]
resource_local_to_scene = true
shader = ExtResource("1_sifog") shader = ExtResource("1_sifog")
shader_parameter/Color_Gradient = ExtResource("2_2qy1r")
shader_parameter/Luminosity_Gradient = ExtResource("3_5udns")

View File

@@ -3,4 +3,8 @@
[ext_resource type="Shader" uid="uid://cru1otvka0qn5" path="res://external/test portrait/variant_color.gdshader" id="1_n3xwv"] [ext_resource type="Shader" uid="uid://cru1otvka0qn5" path="res://external/test portrait/variant_color.gdshader" id="1_n3xwv"]
[resource] [resource]
resource_local_to_scene = true
shader = ExtResource("1_n3xwv") shader = ExtResource("1_n3xwv")
shader_parameter/flash = false
shader_parameter/flash_strength = 0.0
shader_parameter/highlight = Color(0, 0, 0, 0)

View File

@@ -3,7 +3,9 @@ render_mode blend_mix;
uniform sampler2D color_gradient; uniform sampler2D color_gradient;
uniform sampler2D luminosity_gradient; uniform sampler2D luminosity_gradient;
uniform bool flash;
uniform float flash_strength = 0.4;
uniform vec4 highlight : source_color = vec4(1,1,1,0);
void vertex() { void vertex() {
@@ -30,8 +32,11 @@ void fragment() {
K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
vec3 p2 = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); vec3 p2 = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
vec3 fin_rgb = c.z * mix(K.xxx, clamp(p2 - K.xxx, 0.0, 1.0), c.y); vec3 fin_rgb = c.z * mix(K.xxx, clamp(p2 - K.xxx, 0.0, 1.0), c.y);
vec4 h = highlight;
COLOR.rgb = fin_rgb; if(flash){
h.a = flash_strength * (sin(TIME * 10.0) + 1.0)/2.0;
}
COLOR.rgb = mix(fin_rgb, h.rgb, h.a);
COLOR.a = col.a; COLOR.a = col.a;

BIN
external/dialogue-box.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

40
external/dialogue-box.png.import vendored Normal file
View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://wjhyhe1jeli4"
path="res://.godot/imported/dialogue-box.png-0ceee6d4dcb665e8f8b014ee6968168b.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://external/dialogue-box.png"
dest_files=["res://.godot/imported/dialogue-box.png-0ceee6d4dcb665e8f8b014ee6968168b.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

BIN
external/dialogue.clip vendored Normal file

Binary file not shown.

BIN
external/goo.ase vendored Normal file

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c5hcva1k5qee0"
path="res://.godot/imported/guildcard-portrait-placeholder.png-c0bfec06bc2e891650a1650e78889916.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://external/guildcard-portrait-placeholder.png"
dest_files=["res://.godot/imported/guildcard-portrait-placeholder.png-c0bfec06bc2e891650a1650e78889916.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

BIN
external/lock-icon1.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 375 B

40
external/lock-icon1.png.import vendored Normal file
View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://6qi7xvvrlng3"
path="res://.godot/imported/lock-icon1.png-a5ad14bd088bcb5d0798e4260e205cca.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://external/lock-icon1.png"
dest_files=["res://.godot/imported/lock-icon1.png-a5ad14bd088bcb5d0798e4260e205cca.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

BIN
external/lock-icon2.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 371 B

40
external/lock-icon2.png.import vendored Normal file
View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cl4ff2juk3qmm"
path="res://.godot/imported/lock-icon2.png-6bdf747dfc894aa3d8731285a75b1353.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://external/lock-icon2.png"
dest_files=["res://.godot/imported/lock-icon2.png-6bdf747dfc894aa3d8731285a75b1353.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

BIN
external/mage.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 KiB

40
external/mage.png.import vendored Normal file
View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c25xtpn3k8s8d"
path="res://.godot/imported/mage.png-2f7cf9836d55d440949a539929eb6c3b.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://external/mage.png"
dest_files=["res://.godot/imported/mage.png-2f7cf9836d55d440949a539929eb6c3b.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

BIN
external/map-banner.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

40
external/map-banner.png.import vendored Normal file
View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://rifoabo58l1u"
path="res://.godot/imported/map-banner.png-016f440124dd5ae3534b42b36607ea77.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://external/map-banner.png"
dest_files=["res://.godot/imported/map-banner.png-016f440124dd5ae3534b42b36607ea77.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

BIN
external/map-gem.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

40
external/map-gem.png.import vendored Normal file
View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dj64ue73nrtbh"
path="res://.godot/imported/map-gem.png-00a9f5b9bcaa4ff470ebe15f690f936f.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://external/map-gem.png"
dest_files=["res://.godot/imported/map-gem.png-00a9f5b9bcaa4ff470ebe15f690f936f.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

BIN
external/map-lock.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

40
external/map-lock.png.import vendored Normal file
View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cdr07atycreik"
path="res://.godot/imported/map-lock.png-af2af5d737fbbc3a624750480bf72dea.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://external/map-lock.png"
dest_files=["res://.godot/imported/map-lock.png-af2af5d737fbbc3a624750480bf72dea.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

BIN
external/map-point.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

40
external/map-point.png.import vendored Normal file
View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://crhj72fvh8i5l"
path="res://.godot/imported/map-point.png-c2487ab3ab5821eb91b19fa9cb7a469a.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://external/map-point.png"
dest_files=["res://.godot/imported/map-point.png-c2487ab3ab5821eb91b19fa9cb7a469a.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

BIN
external/map-unknown.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

40
external/map-unknown.png.import vendored Normal file
View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://udg6wm101m5g"
path="res://.godot/imported/map-unknown.png-49d0383fec7380d38597ef70212ff98f.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://external/map-unknown.png"
dest_files=["res://.godot/imported/map-unknown.png-49d0383fec7380d38597ef70212ff98f.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

BIN
external/merchant-placeholder.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 543 B

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cdqu6oo8lo743"
path="res://.godot/imported/merchant-placeholder.png-13c0f9bee78f149eb3daefd00b88aa8d.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://external/merchant-placeholder.png"
dest_files=["res://.godot/imported/merchant-placeholder.png-13c0f9bee78f149eb3daefd00b88aa8d.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

BIN
external/move_marker.aseprite vendored Normal file

Binary file not shown.

BIN
external/name-banner.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

40
external/name-banner.png.import vendored Normal file
View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://en58nd1oju64"
path="res://.godot/imported/name-banner.png-469d81ea212fc04dcb4a650664d0eb10.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://external/name-banner.png"
dest_files=["res://.godot/imported/name-banner.png-469d81ea212fc04dcb4a650664d0eb10.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

BIN
external/outline-np.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 B

40
external/outline-np.png.import vendored Normal file
View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cnwcvebl0c1it"
path="res://.godot/imported/outline-np.png-0697bc1c71c69083200c70b4a3720757.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://external/outline-np.png"
dest_files=["res://.godot/imported/outline-np.png-0697bc1c71c69083200c70b4a3720757.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

BIN
external/pitchfork.ase vendored Normal file

Binary file not shown.

BIN
external/pom-intro.clip vendored Normal file

Binary file not shown.

BIN
external/pom-intro.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

40
external/pom-intro.png.import vendored Normal file
View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bdmixnd1mhgfu"
path="res://.godot/imported/pom-intro.png-7ef40172310857171d345738a7ffed65.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://external/pom-intro.png"
dest_files=["res://.godot/imported/pom-intro.png-7ef40172310857171d345738a7ffed65.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

BIN
external/portrait.clip vendored

Binary file not shown.

BIN
external/questor-shadow.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 345 B

40
external/questor-shadow.png.import vendored Normal file
View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://67wavev1pifc"
path="res://.godot/imported/questor-shadow.png-fc6ac833a5cd35215e2d6ed257e929bc.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://external/questor-shadow.png"
dest_files=["res://.godot/imported/questor-shadow.png-fc6ac833a5cd35215e2d6ed257e929bc.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

BIN
external/signature.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

40
external/signature.png.import vendored Normal file
View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://hdjte1ipyyio"
path="res://.godot/imported/signature.png-5527eb152408fafee8a4b656ff1507f9.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://external/signature.png"
dest_files=["res://.godot/imported/signature.png-5527eb152408fafee8a4b656ff1507f9.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

BIN
external/test-map.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 238 KiB

40
external/test-map.png.import vendored Normal file
View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://jhaiu4lbwswl"
path="res://.godot/imported/test-map.png-d85a8ebcae62f1d0eb90a60ff0af0fb2.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://external/test-map.png"
dest_files=["res://.godot/imported/test-map.png-d85a8ebcae62f1d0eb90a60ff0af0fb2.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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.9 KiB

After

Width:  |  Height:  |  Size: 13 KiB

BIN
external/test-qsvchar2.gif vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

BIN
external/testchar.ase vendored Normal file

Binary file not shown.

BIN
external/unknown-map-point.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Some files were not shown because too many files have changed in this diff Show More