Compare commits
14 Commits
48e335f56a
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| f5d479f7ff | |||
| 4ed4ab95f3 | |||
| 379fa4bd70 | |||
| 8811c851f9 | |||
| 9a216d3285 | |||
| 7563e99059 | |||
| aa9b0720d8 | |||
| 9af5558668 | |||
| 00ef506689 | |||
| 023e88b84e | |||
| 82c630d668 | |||
| d64859cf35 | |||
| ef9e5c2664 | |||
| e525110b9d |
@@ -17,3 +17,16 @@ res://sounds/Door Hinge Creaking Door.wav
|
||||
****************************************************************************************************
|
||||
3maze - res://sounds/owl_notification_005.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
|
||||
|
||||
@@ -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 |
@@ -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
|
||||
20
addons/ReorderableContainer/Icon/reorderable_hbox_icon.svg
Normal 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 |
@@ -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
|
||||
20
addons/ReorderableContainer/Icon/reorderable_vbox_icon.svg
Normal 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 |
@@ -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
|
||||
7
addons/ReorderableContainer/plugin.cfg
Normal 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"
|
||||
14
addons/ReorderableContainer/plugin.gd
Normal 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")
|
||||
1
addons/ReorderableContainer/plugin.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://0uea0ywilkmu
|
||||
357
addons/ReorderableContainer/reorderable_container.gd
Normal 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)
|
||||
1
addons/ReorderableContainer/reorderable_container.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://jwjxetmu7o2o
|
||||
13
addons/ReorderableContainer/reorderable_hbox.gd
Normal 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()
|
||||
1
addons/ReorderableContainer/reorderable_hbox.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://gp5cpsm0gdkx
|
||||
13
addons/ReorderableContainer/reorderable_vbox.gd
Normal 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()
|
||||
1
addons/ReorderableContainer/reorderable_vbox.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://d3mey1366662n
|
||||
|
Before Width: | Height: | Size: 643 B After Width: | Height: | Size: 643 B |
@@ -3,15 +3,15 @@
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bgw38ld52wu05"
|
||||
path="res://.godot/imported/profile-popup.png-ac2c647ffb9a3ddb191e025f4c871f30.ctex"
|
||||
path="res://.godot/imported/profile-popup.png-4f1104831ee3a5fc9edd8fb7c7f9b122.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://graphics/profile-popup.png"
|
||||
dest_files=["res://.godot/imported/profile-popup.png-ac2c647ffb9a3ddb191e025f4c871f30.ctex"]
|
||||
source_file="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_Glossary/profile-popup.png"
|
||||
dest_files=["res://.godot/imported/profile-popup.png-4f1104831ee3a5fc9edd8fb7c7f9b122.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
@@ -6,6 +6,9 @@ enum Slots{
|
||||
ACCESSORY
|
||||
}
|
||||
|
||||
var last_id : int = 1
|
||||
|
||||
var id : int
|
||||
@export var image : Texture2D
|
||||
@export var name : StringName
|
||||
@export var brief : String
|
||||
@@ -15,6 +18,9 @@ enum Slots{
|
||||
@export var per : bool
|
||||
@export var grade : String = "F"
|
||||
|
||||
func _init() -> void:
|
||||
last_id += 1
|
||||
id = last_id
|
||||
|
||||
func item_type_name() -> String:
|
||||
return "Item"
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
class_name Quest extends Resource
|
||||
|
||||
|
||||
|
||||
#The list of available quests
|
||||
static var list : Array[Quest]
|
||||
static var last_id : int = 1
|
||||
|
||||
enum Status{
|
||||
OPEN,
|
||||
@@ -13,13 +14,11 @@ enum Status{
|
||||
}
|
||||
|
||||
enum Locations{
|
||||
VOID,
|
||||
NESTORS_WOODS
|
||||
}
|
||||
|
||||
class Event:
|
||||
var enemy_types: Dictionary[String, PackedScene] = {
|
||||
"goo": preload("res://templates/enemies/goo.tscn")
|
||||
}
|
||||
enum Type{
|
||||
WAIT,
|
||||
COMBAT,
|
||||
@@ -31,10 +30,14 @@ class Event:
|
||||
VICTORY,
|
||||
DEFEAT
|
||||
}
|
||||
|
||||
var hidden : bool = false
|
||||
var type : Type = Type.WAIT
|
||||
var enemies : Array[String] = []
|
||||
var progress_point : float = 0
|
||||
var time : float = 1
|
||||
var time_elapsed
|
||||
var complete : bool = false
|
||||
signal completed()
|
||||
signal failed()
|
||||
|
||||
@@ -43,6 +46,21 @@ class Event:
|
||||
var busy_list : Array = []
|
||||
var combat_state
|
||||
var dex_speed : int
|
||||
|
||||
func setup() -> void:
|
||||
pass
|
||||
|
||||
func save() -> 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:
|
||||
match(type):
|
||||
Type.WAIT:
|
||||
@@ -51,11 +69,12 @@ class Event:
|
||||
combat_state = CombatState.FIGHTING
|
||||
var enemy_list = []
|
||||
for enemy_name in enemies:
|
||||
enemy_list.append(enemy_types[enemy_name].instantiate())
|
||||
enemy_list.append(Enemy.list[enemy_name].instantiate())
|
||||
quest.questview.set_questor_animation("idle")
|
||||
for enemy in enemy_list:
|
||||
enemy.flip_h()
|
||||
quest.questview.pause_setting()
|
||||
quest.questview.place_enemy(enemy)
|
||||
quest.questview.place_enemy(enemy, true)
|
||||
quest.questview.set_enemy_animation(enemy, "idle")
|
||||
start_combat([quest.questor.quest_sprite], enemy_list)
|
||||
|
||||
@@ -63,10 +82,12 @@ class Event:
|
||||
participants = []
|
||||
participants.append_array(adventurers)
|
||||
participants.append_array(enemies)
|
||||
|
||||
time = 1.25
|
||||
time_elapsed = 0
|
||||
var c_order : Array = []
|
||||
var dex_speed = 0
|
||||
for p in participants:
|
||||
p.show_lifebar(true)
|
||||
c_order.append([p, p.stats.DEX])
|
||||
if p.stats.DEX > dex_speed:
|
||||
dex_speed = p.stats.DEX
|
||||
@@ -91,7 +112,7 @@ class Event:
|
||||
|
||||
func add_to_turn_queue(combatant) -> void:
|
||||
#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
|
||||
var idx = -1
|
||||
for i in range(len(turn_queue)):
|
||||
@@ -131,7 +152,8 @@ class Event:
|
||||
for p : QuestorSprite in participants:
|
||||
p.check_levelup()
|
||||
#TODO: Notify player if level up occurs
|
||||
time = 5
|
||||
time = 3
|
||||
time_elapsed = 0
|
||||
|
||||
func defeat():
|
||||
print("Questor lost!")
|
||||
@@ -150,6 +172,11 @@ class Event:
|
||||
printerr("Tried to remove someone not in the turn queue")
|
||||
|
||||
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)
|
||||
if requeue:
|
||||
add_to_turn_queue(combatant)
|
||||
@@ -159,7 +186,8 @@ class Event:
|
||||
#TODO: Come up with other options than just swinging at each other
|
||||
var enemies : Array = get_enemy_list(combatant)
|
||||
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:
|
||||
var lst = []
|
||||
@@ -169,12 +197,21 @@ class Event:
|
||||
return lst
|
||||
|
||||
func resolve_combat() -> void:
|
||||
for p in participants:
|
||||
p.show_lifebar(false)
|
||||
pass
|
||||
|
||||
func process(delta : float) -> void:
|
||||
#TODO: Make quest combat work
|
||||
match(type):
|
||||
Type.COMBAT:
|
||||
if time != 0:
|
||||
time_elapsed += delta
|
||||
if time_elapsed >= time:
|
||||
time = 0
|
||||
time_elapsed = 0
|
||||
else:
|
||||
return
|
||||
match(combat_state):
|
||||
CombatState.FIGHTING:
|
||||
if len(busy_list) < 1:
|
||||
@@ -189,14 +226,17 @@ class Event:
|
||||
else:
|
||||
resolve_combat()
|
||||
CombatState.VICTORY:
|
||||
time_elapsed += delta
|
||||
if time_elapsed >= time:
|
||||
resolve_combat()
|
||||
complete = true
|
||||
completed.emit()
|
||||
Type.WAIT:
|
||||
time_elapsed += delta
|
||||
if time_elapsed >= time:
|
||||
complete = true
|
||||
completed.emit()
|
||||
|
||||
var id : int
|
||||
var base_name : String = ""
|
||||
var name : String = "A Basic Quest"
|
||||
var desc : String = "The default quest, with no special anything."
|
||||
var difficulty : int = 1
|
||||
@@ -219,6 +259,8 @@ var questor : Adventurer = null
|
||||
signal status_changed(status : Status)
|
||||
|
||||
func _init() -> void:
|
||||
last_id += 1
|
||||
id = last_id
|
||||
pass
|
||||
|
||||
func initiate(member : Adventurer) -> void:
|
||||
@@ -233,6 +275,7 @@ func fail() -> void:
|
||||
func complete() -> void:
|
||||
status = Status.COMPLETED
|
||||
status_changed.emit(Status.COMPLETED)
|
||||
questview.show_quest_complete()
|
||||
for reward in rewards.keys():
|
||||
if reward == "gold":
|
||||
questor.gain_gold(rewards[reward])
|
||||
@@ -254,11 +297,15 @@ func is_eligible(member : Adventurer) -> bool:
|
||||
func is_taken() -> bool:
|
||||
return status == Status.TAKEN
|
||||
|
||||
func location_name() -> String:
|
||||
static func location_name(location : Locations) -> String:
|
||||
match(location):
|
||||
Locations.VOID: return "The Endless Void"
|
||||
Locations.NESTORS_WOODS: return "Nestor's Woods"
|
||||
return "ERROR"
|
||||
|
||||
func get_location_name() -> String:
|
||||
return Quest.location_name(location)
|
||||
|
||||
func difficulty_name() -> String:
|
||||
match(difficulty):
|
||||
0: return "None"
|
||||
@@ -268,3 +315,56 @@ func difficulty_name() -> String:
|
||||
4: return "Extreme"
|
||||
5: return "Legendary"
|
||||
_: 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:
|
||||
var candidates : Array[Quest] = []
|
||||
var l = list
|
||||
for q in list:
|
||||
if parameters.location != -1 and q.location != parameters.location:
|
||||
continue
|
||||
if q.difficulty < parameters.min_difficulty or q.difficulty > parameters.max_difficulty:
|
||||
continue
|
||||
candidates.append(q)
|
||||
var choice : Quest = candidates.pick_random()
|
||||
return choice.duplicate()
|
||||
|
||||
func save() -> Dictionary:
|
||||
var d : Dictionary = {}
|
||||
d.id = id
|
||||
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())
|
||||
d.events = lst
|
||||
return d
|
||||
42
data/quests/ann-marie-nestor2.gd
Normal file
@@ -0,0 +1,42 @@
|
||||
extends Quest
|
||||
|
||||
func _init() -> void:
|
||||
name = "[1] A Quest for Nestor's Woods that Ann Marie Promised Me"
|
||||
super._init()
|
||||
|
||||
func setup() -> void:
|
||||
|
||||
var event_weights = [1,1,1,1,1,1,1,1,2,2,2,2,3,3,3,4,4,5]
|
||||
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):
|
||||
var evt : Quest.Event = Quest.Event.new()
|
||||
evt.type = Quest.Event.Type.COMBAT
|
||||
evt.enemies = ["goo"]
|
||||
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.sort_custom(func(a,b): return a.progress_point < b.progress_point)
|
||||
desc = "One day Ann Marie will write me."
|
||||
location = Quest.Locations.NESTORS_WOODS
|
||||
rewards = {"exp":10, "gold":5}
|
||||
guild_rewards = {"glory":10, "gold":5}
|
||||
covenant_cost = 5
|
||||
|
||||
1
data/quests/ann-marie-nestor2.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://w6t0lkkxmbl2
|
||||
49
data/quests/feral_pigs.gd
Normal file
@@ -0,0 +1,49 @@
|
||||
extends Quest
|
||||
|
||||
func _init() -> void:
|
||||
name = "Fight of the Feral Pigs"
|
||||
location = Quest.Locations.NESTORS_WOODS
|
||||
difficulty = 1
|
||||
super._init()
|
||||
|
||||
func setup() -> void:
|
||||
|
||||
var event_weights = [1,1,1,1,1,1,1,1,2,2,2,2,3,3,3]
|
||||
var num_events = 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):
|
||||
var evt : Quest.Event = Quest.Event.new()
|
||||
evt.type = Quest.Event.Type.COMBAT
|
||||
evt.enemies = []
|
||||
for j in range(randi() %3 + 1):
|
||||
evt.enemies.append("feral pig")
|
||||
evt.time = 600
|
||||
evt.completed.connect(_on_combat_complete.bind(evt))
|
||||
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.sort_custom(func(a,b): return a.progress_point < b.progress_point)
|
||||
desc = "Pigs got out of Old John’s farm again. Poor fella don’t know up from down– at his age, he can’t help it. Trouble is, pigs are causing trouble in them there woods and John sure ain’t takin’ care of it. Handle 'em for us, would you?"
|
||||
location = Quest.Locations.NESTORS_WOODS
|
||||
rewards = {"exp":10, "gold":5}
|
||||
guild_rewards = {"glory":5, "gold":5}
|
||||
covenant_cost = 5
|
||||
|
||||
func _on_combat_complete(event : Quest.Event) -> void:
|
||||
rewards.gold += 2 * len(event.enemies)
|
||||
1
data/quests/feral_pigs.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://nnl5qvb3csr0
|
||||
@@ -2,16 +2,40 @@ extends Quest
|
||||
|
||||
func _init() -> void:
|
||||
name = "A Sticky Situation"
|
||||
location = Quest.Locations.VOID
|
||||
super._init()
|
||||
|
||||
func setup() -> void:
|
||||
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):
|
||||
var evt : Quest.Event = Quest.Event.new()
|
||||
evt.type = Quest.Event.Type.COMBAT
|
||||
evt.enemies = ["goo"]
|
||||
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.sort_custom(func(a,b): return a.progress_point < b.progress_point)
|
||||
desc = "Nestor’s 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}
|
||||
guild_rewards = {"glory":10, "gold":5}
|
||||
covenant_cost = 5
|
||||
|
||||
3
dialogic/custom_layered_portrait.gd
Normal file
@@ -0,0 +1,3 @@
|
||||
@tool
|
||||
extends "res://addons/dialogic/Modules/LayeredPortrait/layered_portrait.gd"
|
||||
|
||||
1
dialogic/custom_layered_portrait.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://0ah5wvuoqupd
|
||||
14
dialogic/layered_portrait_player.tscn
Normal 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
@@ -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 = ""
|
||||
364
dialogic/test_textbox_layer.tscn
Normal 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")
|
||||
16
dialogic/timelines/game_start.dtl
Normal 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
|
||||
@@ -1,4 +1,9 @@
|
||||
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...)
|
||||
- Stuff
|
||||
Stuff stuff.
|
||||
- set up some lights.
|
||||
Hey, no touching! This isn't your home! Get out!
|
||||
- clean it out.
|
||||
@@ -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.
|
||||
@@ -8,12 +8,22 @@
|
||||
"sound_moods": {},
|
||||
"style": ""
|
||||
},
|
||||
&"default_portrait": "",
|
||||
&"default_portrait": "New portrait",
|
||||
&"description": "",
|
||||
&"display_name": "Player",
|
||||
&"mirror": false,
|
||||
&"nicknames": ["Guildmaster"],
|
||||
&"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
|
||||
}
|
||||
BIN
external/Test Portrait/Penny.png
vendored
Normal file
|
After Width: | Height: | Size: 102 KiB |
40
external/Test Portrait/Penny.png.import
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dy01kbn6oq774"
|
||||
path="res://.godot/imported/Penny.png-eed612fd907e6c9792369a6b6c727880.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://external/test portrait/Penny.png"
|
||||
dest_files=["res://.godot/imported/Penny.png-eed612fd907e6c9792369a6b6c727880.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
|
||||
8
external/Test Portrait/gradients/hair/(c)blue.tres
vendored
Normal 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")
|
||||
@@ -1,8 +1,8 @@
|
||||
[gd_resource type="GradientTexture1D" load_steps=2 format=3 uid="uid://cd4jsivokd6sk"]
|
||||
|
||||
[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)
|
||||
offsets = PackedFloat32Array(0, 0.5252918, 0.8774319, 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]
|
||||
gradient = SubResource("Gradient_u7u0c")
|
||||
|
||||
8
external/Test Portrait/gradients/hair/(l)mid.tres
vendored
Normal 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")
|
||||
8
external/Test Portrait/gradients/skin/(c)blue.tres
vendored
Normal 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")
|
||||
8
external/Test Portrait/gradients/skin/(c)brown.tres
vendored
Normal 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")
|
||||
8
external/Test Portrait/gradients/skin/(c)dark.tres
vendored
Normal 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")
|
||||
8
external/Test Portrait/gradients/skin/(c)medium.tres
vendored
Normal 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")
|
||||
8
external/Test Portrait/gradients/skin/(c)olive.tres
vendored
Normal 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")
|
||||
8
external/Test Portrait/gradients/skin/(c)pale.tres
vendored
Normal 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")
|
||||
8
external/Test Portrait/gradients/skin/(c)red.tres
vendored
Normal 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")
|
||||
8
external/Test Portrait/gradients/skin/(c)white.tres
vendored
Normal 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")
|
||||
8
external/Test Portrait/gradients/skin/(l)dark.tres
vendored
Normal 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
|
After Width: | Height: | Size: 12 KiB |
40
external/Test Portrait/player/eye-a.png.import
vendored
Normal 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
|
After Width: | Height: | Size: 12 KiB |
40
external/Test Portrait/player/eye-b.png.import
vendored
Normal 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
|
After Width: | Height: | Size: 12 KiB |
40
external/Test Portrait/player/eye-c.png.import
vendored
Normal 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
|
||||
BIN
external/Test Portrait/portrait concepts.clip
vendored
Normal file
BIN
external/Test Portrait/priestess.clip
vendored
Normal file
7
external/Test Portrait/tri-hair.tres
vendored
@@ -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="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_local_to_scene = true
|
||||
shader = ExtResource("1_sifog")
|
||||
shader_parameter/Color_Gradient = ExtResource("2_2qy1r")
|
||||
shader_parameter/Luminosity_Gradient = ExtResource("3_5udns")
|
||||
|
||||
4
external/Test Portrait/tri-skin.tres
vendored
@@ -3,4 +3,8 @@
|
||||
[ext_resource type="Shader" uid="uid://cru1otvka0qn5" path="res://external/test portrait/variant_color.gdshader" id="1_n3xwv"]
|
||||
|
||||
[resource]
|
||||
resource_local_to_scene = true
|
||||
shader = ExtResource("1_n3xwv")
|
||||
shader_parameter/flash = false
|
||||
shader_parameter/flash_strength = 0.0
|
||||
shader_parameter/highlight = Color(0, 0, 0, 0)
|
||||
|
||||
11
external/Test Portrait/variant_color.gdshader
vendored
@@ -3,7 +3,9 @@ render_mode blend_mix;
|
||||
|
||||
uniform sampler2D color_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() {
|
||||
@@ -30,8 +32,11 @@ void fragment() {
|
||||
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 fin_rgb = c.z * mix(K.xxx, clamp(p2 - K.xxx, 0.0, 1.0), c.y);
|
||||
|
||||
COLOR.rgb = fin_rgb;
|
||||
vec4 h = highlight;
|
||||
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;
|
||||
|
||||
|
||||
|
||||
BIN
external/animated-flower.png
vendored
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
40
external/animated-flower.png.import
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bl05n76gr2dae"
|
||||
path="res://.godot/imported/animated-flower.png-97452da660b05abe194469bd94b63006.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://external/animated-flower.png"
|
||||
dest_files=["res://.godot/imported/animated-flower.png-97452da660b05abe194469bd94b63006.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/banner.clip
vendored
Normal file
BIN
external/boar.png
vendored
Normal file
|
After Width: | Height: | Size: 6.4 KiB |
@@ -2,16 +2,16 @@
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dxvwm21nupadm"
|
||||
path="res://.godot/imported/1.png-b132cb4bd58ce4915bfe3a2aad13b672.ctex"
|
||||
uid="uid://op4td4qm3tx5"
|
||||
path="res://.godot/imported/boar.png-0161cfc5f286f436bdc0954a6e815cd6.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://external/tc/1.png"
|
||||
dest_files=["res://.godot/imported/1.png-b132cb4bd58ce4915bfe3a2aad13b672.ctex"]
|
||||
source_file="res://external/boar.png"
|
||||
dest_files=["res://.godot/imported/boar.png-0161cfc5f286f436bdc0954a6e815cd6.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
BIN
external/dialogue-box.png
vendored
Normal file
|
After Width: | Height: | Size: 13 KiB |
40
external/dialogue-box.png.import
vendored
Normal 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
BIN
external/forest.clip
vendored
Normal file
BIN
external/glowing-line.png
vendored
Normal file
|
After Width: | Height: | Size: 820 B |
40
external/glowing-line.png.import
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dck0g2dl7vbcr"
|
||||
path="res://.godot/imported/glowing-line.png-71ab75e25179832dabf598a26bfa404d.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://external/glowing-line.png"
|
||||
dest_files=["res://.godot/imported/glowing-line.png-71ab75e25179832dabf598a26bfa404d.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/goo.ase
vendored
Normal file
BIN
external/guildcard-portrait-placeholder.png
vendored
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
40
external/guildcard-portrait-placeholder.png.import
vendored
Normal 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
|
After Width: | Height: | Size: 375 B |
40
external/lock-icon1.png.import
vendored
Normal 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
|
After Width: | Height: | Size: 371 B |
40
external/lock-icon2.png.import
vendored
Normal 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
|
After Width: | Height: | Size: 148 KiB |
@@ -2,16 +2,16 @@
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://80esel4mewm6"
|
||||
path="res://.godot/imported/3.png-b550413aa080c1c70e88acfeb4d322e4.ctex"
|
||||
uid="uid://c25xtpn3k8s8d"
|
||||
path="res://.godot/imported/mage.png-2f7cf9836d55d440949a539929eb6c3b.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://external/tc/3.png"
|
||||
dest_files=["res://.godot/imported/3.png-b550413aa080c1c70e88acfeb4d322e4.ctex"]
|
||||
source_file="res://external/mage.png"
|
||||
dest_files=["res://.godot/imported/mage.png-2f7cf9836d55d440949a539929eb6c3b.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
BIN
external/map-banner.png
vendored
Normal file
|
After Width: | Height: | Size: 9.4 KiB |
40
external/map-banner.png.import
vendored
Normal 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
|
After Width: | Height: | Size: 5.6 KiB |
@@ -2,16 +2,16 @@
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bngkacv3iag6e"
|
||||
path="res://.godot/imported/10.png-d7bac63bd3ed15459cfc452ed238de0d.ctex"
|
||||
uid="uid://dj64ue73nrtbh"
|
||||
path="res://.godot/imported/map-gem.png-00a9f5b9bcaa4ff470ebe15f690f936f.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://external/tc/10.png"
|
||||
dest_files=["res://.godot/imported/10.png-d7bac63bd3ed15459cfc452ed238de0d.ctex"]
|
||||
source_file="res://external/map-gem.png"
|
||||
dest_files=["res://.godot/imported/map-gem.png-00a9f5b9bcaa4ff470ebe15f690f936f.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
BIN
external/map-lock.png
vendored
Normal file
|
After Width: | Height: | Size: 4.8 KiB |
40
external/map-lock.png.import
vendored
Normal 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
|
After Width: | Height: | Size: 12 KiB |
40
external/map-point.png.import
vendored
Normal 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-region-ninepatch.aseprite
vendored
Normal file
BIN
external/map-region-ninepatch.png
vendored
Normal file
|
After Width: | Height: | Size: 101 B |
40
external/map-region-ninepatch.png.import
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dy3o1xtqg03at"
|
||||
path="res://.godot/imported/map-region-ninepatch.png-0bd1376157ab4c11204e39e912041887.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://external/map-region-ninepatch.png"
|
||||
dest_files=["res://.godot/imported/map-region-ninepatch.png-0bd1376157ab4c11204e39e912041887.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
|
After Width: | Height: | Size: 4.5 KiB |
40
external/map-unknown.png.import
vendored
Normal 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
|
After Width: | Height: | Size: 543 B |
40
external/merchant-placeholder.png.import
vendored
Normal 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
BIN
external/name-banner.png
vendored
Normal file
|
After Width: | Height: | Size: 16 KiB |
40
external/name-banner.png.import
vendored
Normal 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
|
||||