优化 ux 下的 panel bag note mem;

This commit is contained in:
cakipaul 2025-06-27 22:52:46 +08:00
parent f59bc69c8e
commit a806265f24
266 changed files with 2339 additions and 1081 deletions

View File

@ -107,3 +107,17 @@ GroundLoader 加载/切换 Ground 时,分为上下两段转场:
每个场景都有一份 GroundArchive 存档,通过 ArchiveManager.archive.ground_archive() 可以获得。
current_scene 是通过 GroundLoader 加载的,在 ground loader 加载 ground 时,会先更新 archive 的 current scene然后加载 ground。
# 重大更新日志(功能)
- Sign 触发机制,图标位置管理
- GroundArchive场景内 namespace 隔离,内部需要保证节点名 unique
- 基础节点InspectableAmbushNoteInteractableCloseupNpc
- PropHud 切换与点击展示
- SignSnapper 拉动机制
- ReenterLock 机制
- Vibe Sfx & Manager
- 转场 process 机制优化:暂停 & sfx 等保持运行
- EventManager 控制事件,使用 Event2D 控制绑定关系
- Vibe Control 控制氛围情绪音乐

BIN
asset/art/scene/c01/s08_书店/l_打光.png Executable file → Normal file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 73 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

After

Width:  |  Height:  |  Size: 33 KiB

View File

Before

Width:  |  Height:  |  Size: 195 B

After

Width:  |  Height:  |  Size: 195 B

View File

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://c8gdny0iewwl2"
path="res://.godot/imported/UI显示相关-25.png-0ec1750b98ccd8275203986cc2d3256e.ctex"
path="res://.godot/imported/UI显示相关-25.png-83e4a3548aa8c6e221e5e10c325e6697.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/ui/prop_and_bag/重要物品/UI显示相关-25.png"
dest_files=["res://.godot/imported/UI显示相关-25.png-0ec1750b98ccd8275203986cc2d3256e.ctex"]
source_file="res://asset/art/ui/bag/UI显示相关-25.png"
dest_files=["res://.godot/imported/UI显示相关-25.png-83e4a3548aa8c6e221e5e10c325e6697.ctex"]
[params]

View File

Before

Width:  |  Height:  |  Size: 173 B

After

Width:  |  Height:  |  Size: 173 B

View File

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://b10njg374yi6n"
path="res://.godot/imported/UI显示相关-28.png-acb9b415b30745e1597105427c9cba78.ctex"
path="res://.godot/imported/UI显示相关-28.png-322ab301deb18fae3cef431753fd61c1.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/ui/prop_and_bag/重要物品/UI显示相关-28.png"
dest_files=["res://.godot/imported/UI显示相关-28.png-acb9b415b30745e1597105427c9cba78.ctex"]
source_file="res://asset/art/ui/bag/UI显示相关-28.png"
dest_files=["res://.godot/imported/UI显示相关-28.png-322ab301deb18fae3cef431753fd61c1.ctex"]
[params]

View File

Before

Width:  |  Height:  |  Size: 261 B

After

Width:  |  Height:  |  Size: 261 B

View File

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://1ky8heqxctnf"
path="res://.godot/imported/重要物品ui-25.png-407ffd8f3f56be214021fd258f380b89.ctex"
path="res://.godot/imported/重要物品ui-25.png-d0369d713aea68aa8dfbfe0167f247df.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/ui/prop_and_bag/重要物品/重要物品ui-25.png"
dest_files=["res://.godot/imported/重要物品ui-25.png-407ffd8f3f56be214021fd258f380b89.ctex"]
source_file="res://asset/art/ui/bag/重要物品ui-25.png"
dest_files=["res://.godot/imported/重要物品ui-25.png-d0369d713aea68aa8dfbfe0167f247df.ctex"]
[params]

View File

Before

Width:  |  Height:  |  Size: 239 B

After

Width:  |  Height:  |  Size: 239 B

View File

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://c8lmwf2at5g3u"
path="res://.godot/imported/重要物品ui-26.png-2fde379a811eae74a756263b14c24af0.ctex"
path="res://.godot/imported/重要物品ui-26.png-96c27bd0aac67d6ca8323a20cd22a4a3.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/ui/prop_and_bag/重要物品/重要物品ui-26.png"
dest_files=["res://.godot/imported/重要物品ui-26.png-2fde379a811eae74a756263b14c24af0.ctex"]
source_file="res://asset/art/ui/bag/重要物品ui-26.png"
dest_files=["res://.godot/imported/重要物品ui-26.png-96c27bd0aac67d6ca8323a20cd22a4a3.ctex"]
[params]

View File

Before

Width:  |  Height:  |  Size: 330 B

After

Width:  |  Height:  |  Size: 330 B

View File

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://c1l5royi6w0cm"
path="res://.godot/imported/重要物品ui-27.png-883293e09ea707222341de684f31a112.ctex"
path="res://.godot/imported/重要物品ui-27.png-6792f6d4b6de739866d869f9758ca28b.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/ui/prop_and_bag/重要物品/重要物品ui-27.png"
dest_files=["res://.godot/imported/重要物品ui-27.png-883293e09ea707222341de684f31a112.ctex"]
source_file="res://asset/art/ui/bag/重要物品ui-27.png"
dest_files=["res://.godot/imported/重要物品ui-27.png-6792f6d4b6de739866d869f9758ca28b.ctex"]
[params]

View File

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://bhjynxasn03jv"
path="res://.godot/imported/重要物品ui-28.png-4ca35ed6f768d32ef4f0f4da9e61b1c0.ctex"
path="res://.godot/imported/重要物品ui-28.png-0a92db9e41967a3c3b13be0f16f066a2.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/ui/prop_and_bag/重要物品/重要物品ui-28.png"
dest_files=["res://.godot/imported/重要物品ui-28.png-4ca35ed6f768d32ef4f0f4da9e61b1c0.ctex"]
source_file="res://asset/art/ui/bag/重要物品ui-28.png"
dest_files=["res://.godot/imported/重要物品ui-28.png-0a92db9e41967a3c3b13be0f16f066a2.ctex"]
[params]

View File

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 36 KiB

View File

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://cbql1i4hblmt1"
path="res://.godot/imported/特写通用遮罩.png-2ddfd83815d8ba406d36dfa56db4c3bf.ctex"
path="res://.godot/imported/inspect特写通用遮罩.png-d71efbdf6a70d5f61869c92fccad6650.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/ui/prop_and_bag/特写通用遮罩.png"
dest_files=["res://.godot/imported/特写通用遮罩.png-2ddfd83815d8ba406d36dfa56db4c3bf.ctex"]
source_file="res://asset/art/ui/inspect/inspect特写通用遮罩.png"
dest_files=["res://.godot/imported/inspect特写通用遮罩.png-d71efbdf6a70d5f61869c92fccad6650.ctex"]
[params]

View File

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 38 KiB

View File

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://f186lvt5y2ql"
path="res://.godot/imported/inspect背景遮罩.png-12d01888bf81d435dd86406a8439f755.ctex"
path="res://.godot/imported/inspect背景遮罩.png-6487c5cc89abd54d3577e6cfd1f5c07e.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/ui/prop_and_bag/inspect背景遮罩.png"
dest_files=["res://.godot/imported/inspect背景遮罩.png-12d01888bf81d435dd86406a8439f755.ctex"]
source_file="res://asset/art/ui/inspect/inspect背景遮罩.png"
dest_files=["res://.godot/imported/inspect背景遮罩.png-6487c5cc89abd54d3577e6cfd1f5c07e.ctex"]
[params]

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 B

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://di3sb0mvertwu"
path="res://.godot/imported/书签mask.png-bc2c5c5e2ba8cb9a6ae77d50bef909c7.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/ui/integrated_view/书签mask.png"
dest_files=["res://.godot/imported/书签mask.png-bc2c5c5e2ba8cb9a6ae77d50bef909c7.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View File

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://bv57eyqs03k4y"
path="res://.godot/imported/线索笔记内容-29.png-3126a7d0a4da9080aebb9dfade55bf16.ctex"
path="res://.godot/imported/线索笔记内容-29.png-95fd43b7ca9099c75bffffa603ae6aa5.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/ui/prop_and_bag/线索笔记内容/线索笔记内容-29.png"
dest_files=["res://.godot/imported/线索笔记内容-29.png-3126a7d0a4da9080aebb9dfade55bf16.ctex"]
source_file="res://asset/art/ui/note/线索笔记内容-29.png"
dest_files=["res://.godot/imported/线索笔记内容-29.png-95fd43b7ca9099c75bffffa603ae6aa5.ctex"]
[params]

View File

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://blub5hsn6iqit"
path="res://.godot/imported/线索笔记内容-30.png-74e04710cf5e7e59f2b1dc2475b441a9.ctex"
path="res://.godot/imported/线索笔记内容-30.png-ef097285280ae7bdb089673a8192d47f.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/ui/prop_and_bag/线索笔记内容/线索笔记内容-30.png"
dest_files=["res://.godot/imported/线索笔记内容-30.png-74e04710cf5e7e59f2b1dc2475b441a9.ctex"]
source_file="res://asset/art/ui/note/线索笔记内容-30.png"
dest_files=["res://.godot/imported/线索笔记内容-30.png-ef097285280ae7bdb089673a8192d47f.ctex"]
[params]

View File

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

View File

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://beltvxcu7pumi"
path="res://.godot/imported/线索笔记内容-31.png-c1b46d1bdf1c06dec7883c73002e812a.ctex"
path="res://.godot/imported/线索笔记内容-31.png-38ff27035789ae736b9130cb69e87171.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/ui/prop_and_bag/线索笔记内容/线索笔记内容-31.png"
dest_files=["res://.godot/imported/线索笔记内容-31.png-c1b46d1bdf1c06dec7883c73002e812a.ctex"]
source_file="res://asset/art/ui/note/线索笔记内容-31.png"
dest_files=["res://.godot/imported/线索笔记内容-31.png-38ff27035789ae736b9130cb69e87171.ctex"]
[params]

View File

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

View File

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://db1k1t1lc34ut"
path="res://.godot/imported/线索笔记内容-32.png-90bd9eaa335210cd65e0ad4ab01a6d77.ctex"
path="res://.godot/imported/线索笔记内容-32.png-374901b769b8a2ab0cdbb847132d8b84.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/ui/prop_and_bag/线索笔记内容/线索笔记内容-32.png"
dest_files=["res://.godot/imported/线索笔记内容-32.png-90bd9eaa335210cd65e0ad4ab01a6d77.ctex"]
source_file="res://asset/art/ui/note/线索笔记内容-32.png"
dest_files=["res://.godot/imported/线索笔记内容-32.png-374901b769b8a2ab0cdbb847132d8b84.ctex"]
[params]

View File

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 38 KiB

View File

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://ldh387gluo1t"
path="res://.godot/imported/线索笔记内容-34.png-04a726a3a1a0051f7a21104308cf2fcd.ctex"
path="res://.godot/imported/线索笔记内容-34.png-20678480317ddc66546336dad2cc741c.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/ui/prop_and_bag/线索笔记内容/线索笔记内容-34.png"
dest_files=["res://.godot/imported/线索笔记内容-34.png-04a726a3a1a0051f7a21104308cf2fcd.ctex"]
source_file="res://asset/art/ui/note/线索笔记内容-34.png"
dest_files=["res://.godot/imported/线索笔记内容-34.png-20678480317ddc66546336dad2cc741c.ctex"]
[params]

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

View File

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dwgxa5j6602vv"
path="res://.godot/imported/inspect文本衬底蒙版.png-1da8974099d619e860c7c3eea08bc047.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/ui/prop_and_bag/inspect文本衬底蒙版.png"
dest_files=["res://.godot/imported/inspect文本衬底蒙版.png-1da8974099d619e860c7c3eea08bc047.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

Before

Width:  |  Height:  |  Size: 129 KiB

View File

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://d11ljcou6mnhj"
path="res://.godot/imported/UI显示相关-26.png-bcc92c79f06762a2003be721672da3ea.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/ui/prop_and_bag/重要物品/UI显示相关-26.png"
dest_files=["res://.godot/imported/UI显示相关-26.png-bcc92c79f06762a2003be721672da3ea.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View File

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dqepyp4248e38"
path="res://.godot/imported/UI显示相关-27.png-d3721a15a619ca69729ac58200e4c4af.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/ui/prop_and_bag/重要物品/UI显示相关-27.png"
dest_files=["res://.godot/imported/UI显示相关-27.png-d3721a15a619ca69729ac58200e4c4af.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View File

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://0qrjkar4mwb2"
path="res://.godot/imported/UI显示相关-29.png-32ab066335997ec9fc38a4ae99d5c617.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/ui/prop_and_bag/重要物品/UI显示相关-29.png"
dest_files=["res://.godot/imported/UI显示相关-29.png-32ab066335997ec9fc38a4ae99d5c617.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://bcwffsdtv8vq8"
path="res://.godot/imported/ui_gallery_item.png-45c2c6ede02b01fad4850965d9c07c65.ctex"
path="res://.godot/imported/ui_memory_item.png-10bd2acfa3f979a6013060432df1579c.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/ui/style_box/ui_gallery_item.png"
dest_files=["res://.godot/imported/ui_gallery_item.png-45c2c6ede02b01fad4850965d9c07c65.ctex"]
source_file="res://asset/art/ui/style_box/ui_memory_item.png"
dest_files=["res://.godot/imported/ui_memory_item.png-10bd2acfa3f979a6013060432df1579c.ctex"]
[params]

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bypfs3nrknkuo"
path="res://.godot/imported/书签 1.png-4fd69b4dc8997e761cfaad1870d8f56a.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/ui/ux_panel/书签 1.png"
dest_files=["res://.godot/imported/书签 1.png-4fd69b4dc8997e761cfaad1870d8f56a.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 854 B

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cdt7v108hlkqw"
path="res://.godot/imported/书签 2.png-96a2eed597c4c905f0ca625e6944438b.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/ui/ux_panel/书签 2.png"
dest_files=["res://.godot/imported/书签 2.png-96a2eed597c4c905f0ca625e6944438b.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 627 B

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://demhcu581v80o"
path="res://.godot/imported/书签 3.png-37dec8f827f7c72b1b95c59d261e47a0.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/ui/ux_panel/书签 3.png"
dest_files=["res://.godot/imported/书签 3.png-37dec8f827f7c72b1b95c59d261e47a0.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b7b13hgknyh1a"
path="res://.godot/imported/书签.png-24c724214900c1a8ab023cc7fdcc35e9.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/ui/ux_panel/书签.png"
dest_files=["res://.godot/imported/书签.png-24c724214900c1a8ab023cc7fdcc35e9.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 128 B

View File

@ -0,0 +1,16 @@
[remap]
importer="bitmap"
type="BitMap"
uid="uid://dmt14und7wyh6"
path="res://.godot/imported/书签mask.png-e67dcea64ffaed84aeb461ad3b017365.res"
[deps]
source_file="res://asset/art/ui/ux_panel/书签mask.png"
dest_files=["res://.godot/imported/书签mask.png-e67dcea64ffaed84aeb461ad3b017365.res"]
[params]
create_from=1
threshold=0.5

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://daq8qp6klyy11"
path="res://.godot/imported/信封.png-832ce9308bf98818cccbfd4d757ca169.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/ui/ux_panel/信封.png"
dest_files=["res://.godot/imported/信封.png-832ce9308bf98818cccbfd4d757ca169.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bi7l47cit2xs"
path="res://.godot/imported/完整背景.png-7c1679f362fdb252c978fa502ccb4112.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/ui/ux_panel/完整背景.png"
dest_files=["res://.godot/imported/完整背景.png-7c1679f362fdb252c978fa502ccb4112.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

View File

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://dsj3l0baqg1g7"
path="res://.godot/imported/小蝶笔记.png-693accd9e1df896b5877648cbebf165b.ctex"
path="res://.godot/imported/小蝶笔记.png-436826d495a1aa0c78ac1cf26efeb454.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/ui/prop_and_bag/小蝶笔记.png"
dest_files=["res://.godot/imported/小蝶笔记.png-693accd9e1df896b5877648cbebf165b.ctex"]
source_file="res://asset/art/ui/ux_panel/小蝶笔记.png"
dest_files=["res://.godot/imported/小蝶笔记.png-436826d495a1aa0c78ac1cf26efeb454.ctex"]
[params]

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://2bqxg280f1jm"
path="res://.godot/imported/手.png-4ad20a102db0d1f7a60b1370a600074b.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/ui/ux_panel/手.png"
dest_files=["res://.godot/imported/手.png-4ad20a102db0d1f7a60b1370a600074b.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cubodis41ijdu"
path="res://.godot/imported/报纸.png-7b435ea6f4d5fbdac46b27ddf8c592d5.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/ui/ux_panel/报纸.png"
dest_files=["res://.godot/imported/报纸.png-7b435ea6f4d5fbdac46b27ddf8c592d5.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b7a032nvoh7nq"
path="res://.godot/imported/有投影的包.png-4bc3d94f8fdb837ca65e55b61f2157b5.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/ui/ux_panel/有投影的包.png"
dest_files=["res://.godot/imported/有投影的包.png-4bc3d94f8fdb837ca65e55b61f2157b5.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dctpodedndcuk"
path="res://.godot/imported/眼镜盒.png-b803dde1ba91ac3c6a1d04ab0954cc45.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/ui/ux_panel/眼镜盒.png"
dest_files=["res://.godot/imported/眼镜盒.png-b803dde1ba91ac3c6a1d04ab0954cc45.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://1gilnschwbdg"
path="res://.godot/imported/笔记本.png-28a9f40c8ba1ecc613ac22de1e030803.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/ui/ux_panel/笔记本.png"
dest_files=["res://.godot/imported/笔记本.png-28a9f40c8ba1ecc613ac22de1e030803.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b5t6ttoeq6hu8"
path="res://.godot/imported/背景眼镜.png-95568eca6fc2a7c19721617573138277.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/ui/ux_panel/背景眼镜.png"
dest_files=["res://.godot/imported/背景眼镜.png-95568eca6fc2a7c19721617573138277.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://5lhknod5posb"
path="res://.godot/imported/船票.png-cda7ea76be6f8cbdeb8314a12d85caeb.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/ui/ux_panel/船票.png"
dest_files=["res://.godot/imported/船票.png-cda7ea76be6f8cbdeb8314a12d85caeb.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

View File

@ -0,0 +1,19 @@
[remap]
importer="oggvorbisstr"
type="AudioStreamOggVorbis"
uid="uid://bhaws2ungqaf5"
path="res://.godot/imported/sfx_哼歌.ogg-96ef73fb9fbe448c092025e1c0d413ed.oggvorbisstr"
[deps]
source_file="res://asset/audio/sfx/交互/角色/sfx_哼歌.ogg"
dest_files=["res://.godot/imported/sfx_哼歌.ogg-96ef73fb9fbe448c092025e1c0d413ed.oggvorbisstr"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

View File

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://b3b4a6nm8557i"
path="res://.godot/imported/衔蝶_主菜单music剪辑人声版.wav-fde4ebb8341918b52f6eead5d36926b1.sample"
[deps]
source_file="res://asset/audio/专用/衔蝶_主菜单music剪辑人声版.wav"
dest_files=["res://.godot/imported/衔蝶_主菜单music剪辑人声版.wav-fde4ebb8341918b52f6eead5d36926b1.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

View File

@ -25,5 +25,5 @@ c02_保卫科花名册3,二零一二 张文开,,,
c02_保卫科花名册4,二零一三 方启钊 方小蝉,,,
c02_保卫科花名册5,三零一二(看不清),,,
c02_保卫科花名册6,三零一三(看不清),,,
c02_保卫科花名册7,墙里有脏东西!,,,
c02_保卫科花名册8,把我的鞋子拿给老鼠,引开那个疯男人,,,
c02_保卫科花名册7,把我的鞋子拿给老鼠,老鼠会引开那个疯男人,,,
c02_保卫科花名册8,不要相信墙里的东西,,,

1 keys zh_CN _character _notes _tags
25 c02_保卫科花名册4 二零一三 方启钊 方小蝉
26 c02_保卫科花名册5 三零一二(看不清)
27 c02_保卫科花名册6 三零一三(看不清)
28 c02_保卫科花名册7 墙里有脏东西! 把我的鞋子拿给老鼠,老鼠会引开那个疯男人
29 c02_保卫科花名册8 把我的鞋子拿给老鼠,引开那个疯男人! 不要相信墙里的东西!

View File

@ -39,7 +39,8 @@
三零一二(看不清) [ID:c02_保卫科花名册5]
三零一三(看不清) [ID:c02_保卫科花名册6]
墙里有脏东西! [ID:c02_保卫科花名册7]
把我的鞋子拿给老鼠,引开那个疯男人 [ID:c02_保卫科花名册8]
把我的鞋子拿给老鼠,老鼠会引开那个疯男人 [ID:c02_保卫科花名册7]
不要相信墙里的东西 [ID:c02_保卫科花名册8]
=> END

View File

@ -12,9 +12,15 @@ setting_画册,画册G,,,,,
notes_干掉的血迹,干掉的血迹,,,,,
c02_瞎子卧室_血脚印,这画上的脚印和刚刚看到的一样。,,,,,
prop_奇怪的肉_说明,,,,,,
bag_tab_日志,笔记,,,,,
index_新游戏,新游戏,,,,,New Game
index_继续游戏,继续游戏,,,,,Resume
index_退出游戏,退出游戏,,,,,Exit
ux_panel_继续,继续,,,,,
ux_panel_笔记,笔记,,,,,
ux_panel_设置,设置,,,,,
ux_panel_返回主菜单,返回主菜单,,,,,
ux_panel_退出,退出,,,,,
setting_总音量,总音量,,,,,Main Volume
setting_音效音量,音效音量,,,,,SFX Volume
setting_对话音量,对话音量,,,,,Dialogue Volume
@ -27,7 +33,8 @@ setting_退出,保存并退出,,,,,Save & Exit
setting_日志,笔记B,,,,,Open the Log
setting_记忆,记忆G,,,,,
ui_秒,秒,,,,,S
bag_tab_日志,笔记,,,,,
bag_tab_笔记,线索,,,,,
bag_tab_物品,物件,,,,,
bag_tab_记忆,记忆,,,,,
ui_saved_all,已保存所有数据,,,,,All the data have been saved
ui_new_archive,已创建新存档,,,,,A new archive has been created

1 keys zh_CN _character _notes _tags zh_SH en
12 notes_干掉的血迹 干掉的血迹
13 c02_瞎子卧室_血脚印 这画上的脚印和刚刚看到的一样。
14 prop_奇怪的肉_说明
15 bag_tab_日志 笔记
16 index_新游戏 新游戏 New Game
17 index_继续游戏 继续游戏 Resume
18 index_退出游戏 退出游戏 Exit
19 ux_panel_继续 继续
20 ux_panel_笔记 笔记
21 ux_panel_设置 设置
22 ux_panel_返回主菜单 返回主菜单
23 ux_panel_退出 退出
24 setting_总音量 总音量 Main Volume
25 setting_音效音量 音效音量 SFX Volume
26 setting_对话音量 对话音量 Dialogue Volume
33 setting_日志 笔记(B) Open the Log
34 setting_记忆 记忆(G)
35 ui_秒 S
36 bag_tab_日志 bag_tab_笔记 笔记 线索
37 bag_tab_物品 物件
38 bag_tab_记忆 记忆
39 ui_saved_all 已保存所有数据 All the data have been saved
40 ui_new_archive 已创建新存档 A new archive has been created

View File

@ -4,6 +4,12 @@
继续游戏[ID:index_继续游戏]
退出游戏[ID:index_退出游戏]
继续 [ID:ux_panel_继续]
笔记 [ID:ux_panel_笔记]
设置 [ID:ux_panel_设置]
返回主菜单 [ID:ux_panel_返回主菜单]
退出 [ID:ux_panel_退出]
总音量[ID:setting_总音量]
音效音量[ID:setting_音效音量]
对话音量[ID:setting_对话音量]
@ -17,7 +23,9 @@
记忆G[ID:setting_记忆]
秒 [ID:ui_秒]
笔记[ID:bag_tab_日志]
线索[ID:bag_tab_笔记]
物件[ID:bag_tab_物品]
记忆[ID:bag_tab_记忆]
已保存所有数据 [ID:ui_saved_all]
@ -221,7 +229,7 @@
没时间浪费了!想想办法救出小蝉... [ID:c02_点火前阻止右移]
=> END
~ Gallery
~ Memory
偷听对话[ID:g_偷听对话]
疯子看井[ID:g_疯子看井]
=> END

View File

@ -1433,7 +1433,7 @@ animations = [{
"duration": 1.0,
"texture": ExtResource("24_ri043")
}],
"loop": true,
"loop": false,
"name": &"c00_吕萍_记笔记_right",
"speed": 8.0
}, {

View File

@ -130,12 +130,7 @@ Button/styles/pressed = SubResource("StyleBoxFlat_d5rks")
OptionButton/font_sizes/font_size = 10
PanelContainer/styles/panel = SubResource("StyleBoxTexture_5sc16")
PopupMenu/font_sizes/font_size = 16
bag_button/base_type = &"Button"
bag_button/styles/diabled = null
bag_button/styles/focus = null
bag_button/styles/hover = null
bag_button/styles/normal = null
bag_button/styles/pressed = null
bag_tab_btn/base_type = &"TextureButton"
empty_panel_container/base_type = &"PanelContainer"
empty_panel_container/styles/panel = SubResource("StyleBoxEmpty_ujvfm")
main_menu_button/base_type = &"Button"

View File

@ -1,20 +0,0 @@
class_name GameEvent extends Resource
# * 事件&剧情管理器: player / release / debug 事件,触发者:玩家/系统(系统触发意味着进入 CG
# * 事件定义:「通变之谓事」
# * 事件发送机制:玩家进行特定操作后,发送事件进度(开始(注意到),尝试&进度完成成功or失败
# * 发送内容
# * 时间点:玩家现实时间(系统时间),游戏时长(时间戳),章节剧情时间点(事件编号)
# * 地点:场景编号,位置坐标
# * 实体:道具/NPC/部署点
# * 激发器类型:地图区域(手动部署) / 玩家特定操作(自动发送)/ 实体信号(监听玩家特定操作/状态变化)
# * 事件订阅机制:订阅开始/进度/成功/失败,触发特定响应
# * 消费器能力:执行 CG锁定/无锁定,剧本/特效) / 执行实体变化脚本(赠送/消耗/状态变化)
# * 保存与加载
@export var packed_time: PackedTime
@export var ground: String
@export var ground_position: Vector2
@export var entity: String
@export var entity_action: String
@export var need_to_save := false
@export var extra_data = {}

View File

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

View File

@ -1,40 +0,0 @@
class_name GameEventMatcher extends Resource
# match event under certain conditions
# regex matcher, "[chapter]_[section]", * means any
# e.g. 3_* means any section in chapter 3
# empty means any ground
@export var grounds: Array[String]
# can't be empty
@export var entity: String
# empty means any action
@export var entity_actions: Array[String]
# check if the event matches the conditions
func match(event: GameEvent) -> bool:
if !entity or entity != event.entity:
return false
if entity_actions.size() > 0 and !entity_actions.has(event.entity_action):
return false
if grounds.size() > 0:
var chapter := str(event.packed_time.chapter)
var section := str(event.packed_time.section)
var matched := false
for ground_matcher in grounds:
# regex match
var parts = ground_matcher.split("_")
if parts.size() != 2:
continue
var chapter_matcher = parts[0].strip_edges()
var section_matcher = parts[1].strip_edges()
if (
(chapter_matcher == "*" or chapter_matcher == chapter)
and (section_matcher == "*" or section_matcher == section)
):
matched = true
break
if !matched:
return false
return true

View File

@ -1,58 +0,0 @@
[gd_resource type="Theme" load_steps=14 format=3 uid="uid://ro8r1wa1bvua"]
[ext_resource type="Texture2D" uid="uid://bcwffsdtv8vq8" path="res://asset/art/ui/style_box/ui_gallery_item.png" id="1_yv50c"]
[ext_resource type="FontFile" uid="uid://dr8bp6p7byb37" path="res://asset/font/字体/方正楷体简体.TTF" id="2_i3fde"]
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_f06v1"]
texture = ExtResource("1_yv50c")
modulate_color = Color(0.892756, 0.892756, 0.892756, 1)
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_r77y1"]
texture = ExtResource("1_yv50c")
modulate_color = Color(0.783523, 0.783523, 0.783523, 1)
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_508w1"]
texture = ExtResource("1_yv50c")
modulate_color = Color(0, 0, 0, 1)
[sub_resource type="CompressedTexture2D" id="CompressedTexture2D_adjiu"]
load_path = "res://.godot/imported/ui_gallery_item.png-45c2c6ede02b01fad4850965d9c07c65.ctex"
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_vsh8q"]
texture = SubResource("CompressedTexture2D_adjiu")
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_aypwd"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_yv50c"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_i3fde"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_drjmf"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_8mlms"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_ai6wi"]
[resource]
default_font = ExtResource("2_i3fde")
default_font_size = 9
Button/colors/font_color = Color(0, 0, 0, 1)
Button/styles/focus = SubResource("StyleBoxTexture_f06v1")
Button/styles/hover = SubResource("StyleBoxTexture_r77y1")
Button/styles/normal = SubResource("StyleBoxTexture_508w1")
Button/styles/pressed = SubResource("StyleBoxTexture_vsh8q")
Label/colors/font_color = Color(0, 0, 0, 1)
Label/constants/line_spacing = 1
Label/font_sizes/font_size = 8
PanelContainer/styles/panel = SubResource("StyleBoxEmpty_aypwd")
tab_btn/base_type = &"Button"
tab_btn/colors/font_color = Color(0, 0, 0, 1)
tab_btn/colors/font_disabled_color = Color(0, 0, 0, 1)
tab_btn/colors/font_focus_color = Color(0, 0, 0, 1)
tab_btn/colors/font_hover_color = Color(0, 0, 0, 1)
tab_btn/colors/font_pressed_color = Color(0, 0, 0, 1)
tab_btn/styles/disabled = SubResource("StyleBoxEmpty_yv50c")
tab_btn/styles/focus = SubResource("StyleBoxEmpty_i3fde")
tab_btn/styles/hover = SubResource("StyleBoxEmpty_drjmf")
tab_btn/styles/normal = SubResource("StyleBoxEmpty_8mlms")
tab_btn/styles/pressed = SubResource("StyleBoxEmpty_ai6wi")

View File

@ -0,0 +1,34 @@
[gd_resource type="Theme" load_steps=8 format=3 uid="uid://ro8r1wa1bvua"]
[ext_resource type="Texture2D" uid="uid://bcwffsdtv8vq8" path="res://asset/art/ui/style_box/ui_memory_item.png" id="1_chall"]
[ext_resource type="FontFile" uid="uid://dr8bp6p7byb37" path="res://asset/font/字体/方正楷体简体.TTF" id="2_kwgh2"]
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_f06v1"]
texture = ExtResource("1_chall")
modulate_color = Color(0.892756, 0.892756, 0.892756, 1)
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_r77y1"]
texture = ExtResource("1_chall")
modulate_color = Color(0.783523, 0.783523, 0.783523, 1)
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_508w1"]
texture = ExtResource("1_chall")
modulate_color = Color(0, 0, 0, 1)
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_vsh8q"]
texture = ExtResource("1_chall")
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_aypwd"]
[resource]
default_font = ExtResource("2_kwgh2")
default_font_size = 9
Button/colors/font_color = Color(0, 0, 0, 1)
Button/styles/focus = SubResource("StyleBoxTexture_f06v1")
Button/styles/hover = SubResource("StyleBoxTexture_r77y1")
Button/styles/normal = SubResource("StyleBoxTexture_508w1")
Button/styles/pressed = SubResource("StyleBoxTexture_vsh8q")
Label/colors/font_color = Color(0, 0, 0, 1)
Label/constants/line_spacing = 1
Label/font_sizes/font_size = 8
PanelContainer/styles/panel = SubResource("StyleBoxEmpty_aypwd")

View File

@ -14,7 +14,7 @@ static var user_root_dir := "user://data/" # must end with "/"
static var archive_dir := "user://data/archives/"
static var archive_prefix := "save"
const CURRENT_VERSION = 2
const CURRENT_VERSION = 3
var archives := {}
var autosave_timer := Timer.new()

View File

@ -3,8 +3,8 @@ class_name AssembledArchive extends Resource
@export var version: int #存档版本
@export var archive_id := 0
# TODO: 注意设置游戏起点
@export var entrance_portal := "left"
@export var current_scene := "c01_s05":
@export var entrance_portal := &"left"
@export var current_scene := &"c01_s05":
set(val):
current_scene = val
if val and val.length() != 7:
@ -32,11 +32,13 @@ class_name AssembledArchive extends Resource
@export var created_time := "2024-12-24 00:00:00"
# 全局参数
@export var global_data_dict := {}
@export var global_data_dict := {} as Dictionary[StringName, Variant]
# 不同场景的地面物品状态存档
@export var ground_archives = {}
@export var ground_archives := {} as Dictionary[StringName, GroundArchive]
# # true 为匿名false 非匿名
# @export var npc_anonymous_states = {}
@export var npc_anonymous_states := {} as Dictionary[StringName, bool]
# event 发生状态
@export var event_stage := {} as Dictionary[StringName, int]
# 玩家跑步锁定状态,默认为 true
@export var player_running_locked := true
# prop hud 显示道具

View File

@ -3,4 +3,5 @@
[ext_resource type="Script" uid="uid://dwae8qisko2qp" path="res://manager/audio_manager/audio_manager.gd" id="1_8y63p"]
[node name="AudioManager" type="Node"]
process_mode = 3
script = ExtResource("1_8y63p")

View File

@ -9,13 +9,11 @@ const RES_FILE_FORMAT = ".tres"
## layers
# 设置
const CANVAS_LAYER_SETTINGS = 30
# bag
const CANVAS_LAYER_BAG = 25
# note
const CANVAS_LAYER_NOTE = 25
# dialog
const CANVAS_LAYER_DIALOG = 24
# gallery
const CANVAS_LAYER_GALLERY_CARD = 23
const CANVAS_LAYER_GALLERY = 22
const CANVAS_LAYER_UX_PANEL = 22
# main 场景的 UI 层prop hud、上下mask、notification
const CANVAS_LAYER_UI = 21
# 道具 inspectorprop/local

View File

@ -0,0 +1,41 @@
extends Node2D
class_name Event2D
# 前置依赖事件,为空时意味着无前置事件
@export var pre_event: String
# 当前事件
@export var event: String
var prev_stage := 0
var stage := 0
func _ready() -> void:
stage = EventManager.get_stage(event)
if pre_event:
prev_stage = EventManager.get_stage(pre_event)
SceneManager.ground_ready.connect(_on_ground_ready)
EventManager.stage_updated.connect(_on_global_stage_updated)
func _on_global_stage_updated(e: StringName, s: int):
if e == pre_event:
prev_stage = s
print("[Event2D] Pre-event stage updated: %s, stage: %s" % [pre_event, prev_stage])
_on_pre_stage_updated()
elif e == event:
stage = s
print("[Event2D] Event stage updated: %s, stage: %s" % [event, stage])
_on_stage_updated()
func _on_ground_ready(ground: Ground2D):
pass
func _on_pre_stage_updated():
pass
func _on_stage_updated():
pass

View File

@ -1,45 +1,45 @@
extends Node
# # 事件注册表
# # { entity: [MatcherConsumer] }
# var _event_registry: Dictionary = {}
signal stage_updated(event_name: StringName, stage: int)
# class MatcherConsumer:
# extends RefCounted
# var matcher: GameEventMatcher
# var consumer: Callable
# func _init(m: GameEventMatcher, c: Callable) -> void:
# self.matcher = m
# self.consumer = c
func get_stage(event_name: StringName) -> int:
if not ArchiveManager.archive or ArchiveManager.archive.event_stage == null:
printerr("[EventManager] Archive or event_stage is null.")
return 0
var val = ArchiveManager.archive.event_stage.get(event_name, 0)
return val
# # 注册事件
# func register_event_matcher(event_matcher: GameEventMatcher, consumer: Callable) -> void:
# if !event_matcher.entity:
# return
# var matcher_consumer = MatcherConsumer.new(event_matcher, consumer)
# if event_matcher.entity not in _event_registry:
# _event_registry[event_matcher.entity] = []
# _event_registry[event_matcher.entity].append(matcher_consumer)
# default 为 0首次更新为 1
func set_stage(event_name: StringName, stage := 1) -> void:
if not ArchiveManager.archive or ArchiveManager.archive.event_stage == null:
printerr("[EventManager] Archive or event_stage is null.")
return
ArchiveManager.archive.event_stage[event_name] = stage
# print before emit
print("[EventManager] Stage updated: %s, stage: %s" % [event_name, stage])
stage_updated.emit(event_name, stage)
# 如果是 handnote_stage玩家进行记笔记动作
if event_name == "handnote_stage" and SceneManager.get_player().character.begins_with("吕萍"):
SceneManager.freeze_player(1.0, 16, true)
# # 触发事件
# func trigger_event(event: GameEvent) -> void:
# if event.entity not in _event_registry:
# return
# for matcher_consumer in _event_registry[event.entity]:
# # matcher_consumer = matcher_consumer as MatcherConsumer
# if matcher_consumer._matcher.match(event):
# matcher_consumer._consumer.call(event)
# if event.need_to_save:
# _save_event(event)
# 仅在设置的 stage > 当前 stage 时更新,相等或小于时不更新
func set_stage_if_greater(event_name: StringName, stage := 1) -> void:
var current_stage = get_stage(event_name)
if stage > current_stage:
set_stage(event_name, stage)
# func _save_event(event) -> void:
# # 保存事件
# pass
# stage 最大 99999
func next_staged(event_name: StringName, stage_max := 99999) -> void:
var current_stage = get_stage(event_name)
if current_stage < stage_max:
set_stage(event_name, current_stage + 1)
##### 其他事件 #####
func prop_interacted(e_name, prop_key, interacted_times) -> void:

View File

@ -7,7 +7,11 @@ enum VIBE {
TOUCHING,
}
@export var first_entered = true
# 从 ground loader 控制该信号
signal ground_ready(ground: Ground2D)
signal ground_start(ground: Ground2D)
var first_entered = true
func _ready():
@ -79,7 +83,7 @@ func get_lock() -> PlayerReenterLock:
func lock_player(duration := 0.0, action := 3, auto_quit := false):
get_lock().lock_all(duration)
if action != 3:
# 先 freeze 再 action否则会重置 action
# 先 freeze 再 action否则会重置 action
player_action(action, auto_quit)
@ -325,18 +329,34 @@ func enter_main_scene():
get_tree().paused = false
var prop_bag_scene = preload("res://scene/prop/prop_bag.tscn")
#### UX: settings; panel: note, bag, memory ####
var panel_scene = preload("uid://ddlwnsccsmr8u")
func show_panel():
get_tree().current_scene.add_child(panel_scene.instantiate())
var note_scene = preload("uid://cy7wrrsm8e04f")
func show_note():
get_tree().current_scene.add_child(note_scene.instantiate())
var bag_scene = preload("uid://b6gbolo1o7wdf")
func show_bag():
get_tree().current_scene.add_child(prop_bag_scene.instantiate())
get_tree().current_scene.add_child(bag_scene.instantiate())
var gallery_scene = preload("uid://gfkdh8pqhixn")
var memory_scene = preload("uid://gfkdh8pqhixn")
func show_gallery():
get_tree().current_scene.add_child(gallery_scene.instantiate())
func show_memory():
get_tree().current_scene.add_child(memory_scene.instantiate())
var settings_scene = preload("uid://beok2r6fgburn")
@ -346,12 +366,13 @@ func show_settings():
get_tree().current_scene.add_child(settings_scene.instantiate())
#### 游戏场景树暂停计数器,设置、gallery、bag 等菜单都会导致 pause
#### 游戏场景树暂停计数器,设置、memory、bag 等菜单都会导致 pause
var pause_counter := 0
func toggle_pause_counter(plus := true):
pause_counter += 1 if plus else -1
print("SceneTree pause_counter: ", pause_counter)
get_tree().paused = pause_counter > 0

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