实现基本的背包功能

This commit is contained in:
cakipaul 2025-03-12 15:53:12 +08:00
parent 594cf599f9
commit 2e11908b57
27 changed files with 544 additions and 238 deletions

View File

@ -110,6 +110,7 @@ func to_data() -> Dictionary:
d.siblings = siblings
DMConstants.TYPE_RESPONSE:
# d.text = text.replace("<br>", "\n")
d.text = text
if not responses.is_empty():
@ -131,6 +132,7 @@ func to_data() -> Dictionary:
d.notes = notes
DMConstants.TYPE_DIALOGUE:
# d.text = text.replace("<br>", "\n")
d.text = text
if translation_key != text:

View File

@ -14,6 +14,7 @@ static func compile_string(text: String, path: String) -> DMCompilerResult:
result.titles = compilation.titles
result.first_title = compilation.first_title
result.errors = compilation.errors
# result.lines = compilation.lines
result.lines = compilation.data
result.raw_text = text

View File

@ -563,9 +563,9 @@ func generate_translations_keys() -> void:
# Add a translation file to the project settings
func add_path_to_project_translations(path: String) -> void:
var translations: PackedStringArray = ProjectSettings.get_setting("internationalization/locale/translations")
if not path in translations:
translations.append(path)
ProjectSettings.save()
# if not path in translations:
# translations.append(path)
# ProjectSettings.save()
# Export dialogue and responses to CSV
@ -615,11 +615,12 @@ func export_translations_to_csv(path: String) -> void:
notes_column = column_count
column_count += 1
existing_csv["keys"].append("_notes")
# include tags
if tags_coloumn == -1:
tags_coloumn = column_count
column_count += 1
existing_csv["keys"].append("_tags")
# include tags
if tags_coloumn == -1:
tags_coloumn = column_count
column_count += 1
existing_csv["keys"].append("_tags")
# Start a new file
file = FileAccess.open(path, FileAccess.WRITE)
@ -666,11 +667,12 @@ func export_translations_to_csv(path: String) -> void:
line_to_save[default_locale_column] = line.text
if character_column > -1:
line_to_save[character_column] = "(response)" if line.type == DMConstants.TYPE_RESPONSE else line.character
line_to_save[character_column] = "(response)" if line.type == DMConstants.TYPE_RESPONSE else line.get("character","")
if notes_column > -1:
line_to_save[notes_column] = line.notes
if tags_coloumn > -1 and line.tags.size() > 0:
line_to_save[tags_coloumn] = "[#" + "][#".join(line.tags) + "]"
line_to_save[notes_column] = line.get("notes","")
var tags = line.get("tags",[]) as Array
if tags_coloumn > -1 and tags.size() > 0:
line_to_save[tags_coloumn] = "[#" + "][#".join(tags) + "]"
lines_to_save.append(line_to_save)

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cpbtccuvtn1p2"
path="res://.godot/imported/信.png-3a73e49fce8c47ae21f0125e66711462.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/prop/c01/信.png"
dest_files=["res://.godot/imported/信.png-3a73e49fce8c47ae21f0125e66711462.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: 11 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://2bnmrhuxkuv3"
path="res://.godot/imported/信件右上.png-63cefdf75c230b34502b61da1f84e602.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/prop/c01/信件右上.png"
dest_files=["res://.godot/imported/信件右上.png-63cefdf75c230b34502b61da1f84e602.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: 9.3 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://d24q8r6yklf1w"
path="res://.godot/imported/信件左上.png-dfd85c03ddfdc23a6ddae9026ff8412e.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/prop/c01/信件左上.png"
dest_files=["res://.godot/imported/信件左上.png-dfd85c03ddfdc23a6ddae9026ff8412e.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: 42 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://oh4e48nxm4j6"
path="res://.godot/imported/信件碎片.png-148d8c76f1c905d18bd18b04343030cd.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/prop/c01/信件碎片.png"
dest_files=["res://.godot/imported/信件碎片.png-148d8c76f1c905d18bd18b04343030cd.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://dl214l7im21sf"
path="res://.godot/imported/院长的信.png-e512e10d022a04385e8eed120b757699.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/prop/c01/院长的信.png"
dest_files=["res://.godot/imported/院长的信.png-e512e10d022a04385e8eed120b757699.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

@ -2,8 +2,8 @@ keys,zh_CN,_character,_notes,_tags,en
t89c0f4a8de,x年,,,,
t356af5308e,下午一点,,,,
c01_信件全文,"小蝶:
信件正文内容...
落款",,,,
信件正文内容...
落款",,,,
t344c97cf2c,据闻奉贤县分水墩又有七人染受鼠疫,病状可怖,闻医官药治无用,免职。,,,,
tdb119a3714,有地方人称鼠疫为妖邪作祟,甚为惊骇,一时人心惶惶,竟有聚众滋闹之事,政府以防疫事宜关系紧要,拟赴分水墩一带调查防疫事宜云。,,,,
ta750647b12,《申报》,,,,

1 keys zh_CN _character _notes _tags en
2 t89c0f4a8de x年
3 t356af5308e 下午一点
4 c01_信件全文 小蝶: 【信件正文内容...】 【落款】 小蝶: 信件正文内容... 落款
5 t344c97cf2c 据闻奉贤县分水墩又有七人染受鼠疫,病状可怖,闻医官药治无用,免职。
6 tdb119a3714 有地方人称鼠疫为妖邪作祟,甚为惊骇,一时人心惶惶,竟有聚众滋闹之事,政府以防疫事宜关系紧要,拟赴分水墩一带调查防疫事宜云。
7 ta750647b12 《申报》
8 t736cca4563 民国五年一月十三日
9 公寓告示正文_1 公寓告示正文

View File

@ -1,137 +1,124 @@
keys,zh_CN,en,_character,_notes,_tags
c01_纸包钥匙,一张纸条包着钥匙,,,,
c02_寻人启事1,似乎是一张寻人启事,,,,
c02_寻人启事2,脸的部分被撕掉了,看不清,,,,
=>en,=>en,,,,
c01_获得令牌,令牌,,获得,,[#item]
c01_获得灵魂令牌,带有灵魂的令牌,,获得,,[#item]
c01_获得院长信件,院长的信件,,获得,,[#item]
c02_获得1012钥匙,1012钥匙,,获得,,[#item]
c02_获得老虎钳,老虎钳,,获得,,[#item]
c02_获得绳子,绳子,,获得,,[#item]
c02_获得小猫玩具脑袋,小猫玩具脑袋,,获得,,[#item]
c02_获得小猫玩具,小猫玩具,,获得,,[#item]
c02_获得钥匙,钥匙,,获得,,[#item]
c02_获得火柴,火柴,,获得,,[#item]
c02_1014钥匙,1014钥匙,,获得,,[#item]
c02_老鼠洞1,一个老鼠洞,,,,
c02_老鼠洞2,在这种楼里挺常见的,,,,
ui_新游戏,新游戏,,,,
ui_继续游戏,继续游戏,,,,
ui_退出游戏,退出游戏,,,,
c02_寻人启事,"似乎是一张寻人启事
脸的部分被撕掉了,看不清",,,,
prop_报纸,报纸,,,,[#texture=c01/信碎片1.png]
index_新游戏,新游戏,,,,
index_继续游戏,继续游戏,,,,
index_退出游戏,退出游戏,,,,
setting_总音量,总音量,,,,
setting_音效音量,音效音量,,,,
setting_对话音量,对话音量,,,,
setting_全屏游戏,全屏游戏,,,,
setting_窗口置顶,窗口置顶,,,,
setting_自动保存,自动保存,,,,
setting_主界面,回到主界面,,,,
setting_退出,保存并退出,,,,
setting_日志,打开日志,,,,
ui_秒,秒,,,,
ui_saved_all,已保存所有数据,,,,
ui_new_archive,已创建新存档,,,,
ui_auto_saved,自动保存成功,,,,
ui_press_e,按 E 与场景互动,,,,
ui_press_b,按 B 打开背包,,,,
ui_press_shift,按住 Shift 奔跑,,,,
input_拼凑信件,点击选择信件碎片,方向键移动,按 E 旋转,,,,
ui_获得,获得,,,,
ui_退出,退出,Exit,,,
ui_阅读,阅读,Read,,,
ui_检阅,检阅,,,,
ui_收起,收起,Hold,,,
ui_夜行船1,百岁光阴一梦蝶。,,,,
ui_夜行船2,重回⾸往事堪嗟。,,,,
ui_夜行船3,今⽇春来。明朝花谢。,,,,
ui_夜行船4,急罚盏夜阑灯灭。,,,,
ui_夜行船5,夜行船,,,,
prop_空手,空手,,,,
prop_信碎片1,信碎片(一),,,,[#texture=c01/信碎片1.png]
prop_信碎片2,信碎片(二),,,,[#texture=c01/信碎片1.png]
prop_院长的信,院长的信,,,,[#texture=c01/信碎片1.png]
prop_银元,银元,,,,[#texture=c01/银元.png]
prop_令牌,令牌,,,,[#texture=c01/令牌物品.png][#inspect=c01/令牌.png]
prop_装有灵魂的令牌,装有灵魂的令牌,,,,[#texture=c01/装有灵魂的令牌物品.png][#inspect=c01/装有灵魂的令牌.png]
prop_火柴,火柴,,,,[#texture=c02/火柴.png]
prop_小猫玩具的脑袋,小猫玩具的脑袋,Catty's Head,,,[#texture=c02/小猫玩具脑袋物品.png][#inspect=c02/小猫玩具脑袋.png]
prop_绳子,绳子,Rope,,,[#texture=c02/绳子物品.png][#inspect=c02/绳子.png]
prop_1012钥匙,1012钥匙,1012 Key,,,[#texture=c02/1012钥匙物品.png][#inspect=c02/1012钥匙.png]
prop_老虎钳,老虎钳,,,,[#texture=c02/老虎钳物品.png][#inspect=c02/老虎钳.png]
prop_3014旋转锁钥匙,3014旋转锁钥匙,,,,[#texture=c02/3014旋转锁钥匙物品.png][#inspect=c02/3014旋转锁钥匙.png]
prop_小猫玩具完整,小猫玩具,,,,[#texture=c02/小猫玩具完整物品.png][#inspect=c02/小猫玩具完整.png]
c01_s07_需要报纸,我想先在周围看看,,,,
c01_s08_书店工作,我还有工作要做,,,,
c01_s08_书店工钱,我还有⼯钱没拿,,,,
notes_纸条,纸条,,,,
notes_锁住了,锁住了,,,,
notes_打不开,打不开,,,,
notes_干掉的血迹,干掉的血迹,,,,
notes_有什么东西,有什么东西,,,,
notes_无法触碰,无法触碰,,,,
notes_挂画,挂画,,,,
notes_相框,相框,,,,
notes_寻人启事,寻人启事,,,,
c01_鸡毛掸子,这是鸡毛掸子吗?,,,,
c01_院长书桌,桌上放着纸笔,,,,
c01_院长床,这本书已经看过了,,,,
keys,zh_CN,_character,_notes,_tags
说明文本,说明文本,,,
ui_press_b,按 B 打开背包,,,
5,5,,,
index_新游戏,新游戏,,,
index_继续游戏,继续游戏,,,
index_退出游戏,退出游戏,,,
setting_总音量,总音量,,,
setting_音效音量,音效音量,,,
setting_对话音量,对话音量,,,
setting_全屏游戏,全屏游戏,,,
setting_窗口置顶,窗口置顶,,,
setting_自动保存,自动保存,,,
setting_主界面,回到主界面,,,
setting_退出,保存并退出,,,
setting_日志,打开日志,,,
ui_秒,秒,,,
ui_saved_all,已保存所有数据,,,
ui_new_archive,已创建新存档,,,
ui_auto_saved,自动保存成功,,,
ui_press_e,按 E 与场景互动,,,
ui_important_item_update,重要物品已更新(按 B 打开背包),,,
ui_press_shift,按住 Shift 奔跑,,,
input_拼凑信件,点击选择信件碎片,方向键移动,按 E 旋转,,,
ui_获得,获得,,,
ui_退出,退出,,,
ui_阅读,阅读,,,
ui_检阅,检阅,,,
ui_收起,收起,,,
ui_夜行船1,百岁光阴一梦蝶。,,,
ui_夜行船2,重回⾸往事堪嗟。,,,
ui_夜行船3,今⽇春来。明朝花谢。,,,
ui_夜行船4,急罚盏夜阑灯灭。,,,
ui_夜行船5,夜行船,,,
prop_空手,空手,,,
prop_信碎片1,信碎片(一),,,[#texture=c01/信件左上.png]
prop_信碎片2,信碎片(二),,,[#texture=c01/信件右上.png]
prop_银元,银元,,,[#texture=c01/银元.png]
prop_院长的信,院长的信,,,[#texture=c01/院长的信.png]
prop_重要物品示例,重要物品示例,,,[#texture=c01/银元.png]
prop_令牌,令牌,,,[#texture=c01/令牌物品.png][#inspect=c01/令牌.png]
prop_装有灵魂的令牌,装有灵魂的令牌,,,[#texture=c01/装有灵魂的令牌物品.png][#inspect=c01/装有灵魂的令牌.png]
prop_火柴,火柴,,,[#texture=c02/火柴.png]
prop_小猫玩具的脑袋,小猫玩具的脑袋,,,[#texture=c02/小猫玩具脑袋物品.png][#inspect=c02/小猫玩具脑袋.png]
prop_绳子,绳子,,,[#texture=c02/绳子物品.png][#inspect=c02/绳子.png]
prop_1012钥匙,1012钥匙,,,[#texture=c02/1012钥匙物品.png][#inspect=c02/1012钥匙.png]
prop_老虎钳,老虎钳,,,[#texture=c02/老虎钳物品.png][#inspect=c02/老虎钳.png]
prop_3014旋转锁钥匙,3014旋转锁钥匙,,,[#texture=c02/3014旋转锁钥匙物品.png][#inspect=c02/3014旋转锁钥匙.png]
prop_小猫玩具完整,小猫玩具,,,[#texture=c02/小猫玩具完整物品.png][#inspect=c02/小猫玩具完整.png]
院长的信...,院长的信...,,,
1,1,,,
2,2,,,
3,3,,,
重要物品示例,重要物品示例,,,
4,4,,,
c01_s07_需要报纸,我想先在周围看看,,,
c01_s08_书店工作,我还有工作要做,,,
c01_s08_书店工钱,我还有⼯钱没拿,,,
notes_纸条,纸条,,,
notes_锁住了,锁住了,,,
notes_打不开,打不开,,,
notes_干掉的血迹,干掉的血迹,,,
notes_有什么东西,有什么东西,,,
notes_无法触碰,无法触碰,,,
notes_挂画,挂画,,,
notes_相框,相框,,,
notes_寻人启事,寻人启事,,,
c01_鸡毛掸子,这是鸡毛掸子吗?,,,
c01_院长书桌,桌上放着纸笔,,,
c01_院长床,这本书已经看过了,,,
c01_院长座钟,"1917年10⽉28⽇...
时间停在16\:30",,,,
c01_倾斜的洋相片,洋相片,,,,
c01_摆正的洋相片,是院长的女儿吗,,,,
c01_s06_院长房间,这是院长的房间,,,,
c01_s06_小朋友房间,这是其他小朋友的房间,,,,
c01_s07_钱碗,碗⾥是铜钱,,,,
c01_s07_获得报纸,这是什么?,,,,
时间停在16\:30",,,
c01_倾斜的洋相片,洋相片,,,
c01_摆正的洋相片,是院长的女儿吗,,,
c01_s06_院长房间,这是院长的房间,,,
c01_s06_小朋友房间,这是其他小朋友的房间,,,
c01_s07_钱碗,碗⾥是铜钱,,,
c01_s07_获得报纸,这是什么?,,,
c01_s07_书店展柜,"好多书...
要是能在这里工作就好了",,,,
要是能在这里工作就好了",,,
c01_s08_书架游戏完成,"这些书怎么变成这样了?
好可惜...我可能需要离开了",,,,
好可惜...我可能需要离开了",,,
c02_小蝉寻人启事_脸部破碎,"似乎是一张寻人启事
脸的部分被撕掉了,看不清",,,,
c02_卫生宣传画,几张卫生宣传画,,,,
脸的部分被撕掉了,看不清",,,
c02_卫生宣传画,几张卫生宣传画,,,
c02_老鼠洞,"一个老鼠洞
在这种楼里挺常见的",,,,
c02_十几年前的报纸,十几年前的报纸,,,,
c02_绳子剪刀,绳子和剪刀,,,,
c02_玩具缺脑袋,这个玩具缺了个脑袋,,,,
c02_又是寻人启示,又是那张寻人启示,,,,
c02_墙上的海报被撕掉了,墙上的海报被撕掉了,,,,
c02_井臭,井里有一股臭味,,,,
c02_中药材,车上放了一些中药材,,,,
c02_排队,排队的人堵住了上楼的路,,,,
c02_不要出去,最好还是先不要出去,,,,
c02_太阳,太阳快落山了,,,,
c02_民国六年1015,民国六年十月十五日,,,,
c02_一个洞,一个洞,里面好像还有空间,,,,
c02_工具箱,工具箱,,,,
c02_找到有用的东西,应该能找到有用的东西,,,,
c02_公寓告示,公寓告示,,,,
c02_通往里间的门,通往里间的门,,,,
c02_花名册,花名册,,,,
c02_罪,罪,,,,
c02_门上有什么东西,门上有什么东西,,,,
c02_奠,奠,,,,
c02_寻夏小蝉,失踪的小孩名叫夏小蝉,,,,
c02_小猫干尸,小猫的尸体已经干了,,,,
c02_几块大洋,几块大洋,,,,
c02_死老鼠,死掉的老鼠,,,,
c02_石缝开花,石缝里开了几束花,,,,
c02_石壁空间,石壁另一头好像还有空间,,,,
c02_民国六年1221,民国六年十二月二十一日,,,,
c02_患者感谢信,一些患者的感谢信,,,,
c02_被撕掉的书,一本被撕掉的书,,,,
c02_里面有什么东西,里面有什么东西,,,,
c02_戏台上的诗,戏台上面刻了一首诗,,,,
c02_锁开了,锁开了,,,,
c02_口袋里有东西,口袋里有东西,,,,
c02_雾太大,雾太大了,看不清路,,,,
c02_八音盒,是个八音盒,,,,
c02_祝女儿早日康复,祝女儿早日康复,,,,
c02_图案一样,这图案和我手臂上的一摸一样,,,,
在这种楼里挺常见的",,,
c02_十几年前的报纸,十几年前的报纸,,,
c02_绳子剪刀,绳子和剪刀,,,
c02_玩具缺脑袋,这个玩具缺了个脑袋,,,
c02_又是寻人启示,又是那张寻人启示,,,
c02_墙上的海报被撕掉了,墙上的海报被撕掉了,,,
c02_井臭,井里有一股臭味,,,
c02_中药材,车上放了一些中药材,,,
c02_排队,排队的人堵住了上楼的路,,,
c02_不要出去,最好还是先不要出去,,,
c02_太阳,太阳快落山了,,,
c02_民国六年1015,民国六年十月十五日,,,
c02_一个洞,一个洞,里面好像还有空间,,,
c02_工具箱,工具箱,,,
c02_找到有用的东西,应该能找到有用的东西,,,
c02_公寓告示,公寓告示,,,
c02_通往里间的门,通往里间的门,,,
c02_花名册,花名册,,,
c02_罪,罪,,,
c02_门上有什么东西,门上有什么东西,,,
c02_奠,奠,,,
c02_寻夏小蝉,失踪的小孩名叫夏小蝉,,,
c02_小猫干尸,小猫的尸体已经干了,,,
c02_几块大洋,几块大洋,,,
c02_死老鼠,死掉的老鼠,,,
c02_石缝开花,石缝里开了几束花,,,
c02_石壁空间,石壁另一头好像还有空间,,,
c02_民国六年1221,民国六年十二月二十一日,,,
c02_患者感谢信,一些患者的感谢信,,,
c02_被撕掉的书,一本被撕掉的书,,,
c02_里面有什么东西,里面有什么东西,,,
c02_戏台上的诗,戏台上面刻了一首诗,,,
c02_锁开了,锁开了,,,
c02_口袋里有东西,口袋里有东西,,,
c02_雾太大,雾太大了,看不清路,,,
c02_八音盒,是个八音盒,,,
c02_祝女儿早日康复,祝女儿早日康复,,,
c02_图案一样,这图案和我手臂上的一摸一样,,,

1 keys zh_CN en _character _notes _tags
2 c01_纸包钥匙 说明文本 一张纸条包着钥匙 说明文本
3 c02_寻人启事1 ui_press_b 似乎是一张寻人启事 按 B 打开背包
4 c02_寻人启事2 5 脸的部分被撕掉了,看不清 5
5 =>en index_新游戏 =>en 新游戏
6 c01_获得令牌 index_继续游戏 令牌 继续游戏 获得 [#item]
7 c01_获得灵魂令牌 index_退出游戏 带有灵魂的令牌 退出游戏 获得 [#item]
8 c01_获得院长信件 setting_总音量 院长的信件 总音量 获得 [#item]
9 c02_获得1012钥匙 setting_音效音量 1012钥匙 音效音量 获得 [#item]
10 c02_获得老虎钳 setting_对话音量 老虎钳 对话音量 获得 [#item]
11 c02_获得绳子 setting_全屏游戏 绳子 全屏游戏 获得 [#item]
12 c02_获得小猫玩具脑袋 setting_窗口置顶 小猫玩具脑袋 窗口置顶 获得 [#item]
13 c02_获得小猫玩具 setting_自动保存 小猫玩具 自动保存 获得 [#item]
14 c02_获得钥匙 setting_主界面 钥匙 回到主界面 获得 [#item]
15 c02_获得火柴 setting_退出 火柴 保存并退出 获得 [#item]
16 c02_1014钥匙 setting_日志 1014钥匙 打开日志 获得 [#item]
17 c02_老鼠洞1 ui_秒 一个老鼠洞
18 c02_老鼠洞2 ui_saved_all 在这种楼里挺常见的 已保存所有数据
19 ui_新游戏 ui_new_archive 新游戏 已创建新存档
20 ui_继续游戏 ui_auto_saved 继续游戏 自动保存成功
21 ui_退出游戏 ui_press_e 退出游戏 按 E 与场景互动
22 c02_寻人启事 ui_important_item_update 似乎是一张寻人启事 脸的部分被撕掉了,看不清 重要物品已更新(按 B 打开背包)
23 prop_报纸 ui_press_shift 报纸 按住 Shift 奔跑 [#texture=c01/信碎片1.png]
24 index_新游戏 input_拼凑信件 新游戏 点击选择信件碎片,方向键移动,按 E 旋转
25 index_继续游戏 ui_获得 继续游戏 获得
26 index_退出游戏 ui_退出 退出游戏 退出
27 setting_总音量 ui_阅读 总音量 阅读
28 setting_音效音量 ui_检阅 音效音量 检阅
29 setting_对话音量 ui_收起 对话音量 收起
30 setting_全屏游戏 ui_夜行船1 全屏游戏 百岁光阴一梦蝶。
31 setting_窗口置顶 ui_夜行船2 窗口置顶 重回⾸往事堪嗟。
32 setting_自动保存 ui_夜行船3 自动保存 今⽇春来。明朝花谢。
33 setting_主界面 ui_夜行船4 回到主界面 急罚盏夜阑灯灭。
34 setting_退出 ui_夜行船5 保存并退出 夜行船
35 setting_日志 prop_空手 打开日志 空手
36 ui_秒 prop_信碎片1 信碎片(一) [#texture=c01/信件左上.png]
37 ui_saved_all prop_信碎片2 已保存所有数据 信碎片(二) [#texture=c01/信件右上.png]
38 ui_new_archive prop_银元 已创建新存档 银元 [#texture=c01/银元.png]
39 ui_auto_saved prop_院长的信 自动保存成功 院长的信 [#texture=c01/院长的信.png]
40 ui_press_e prop_重要物品示例 按 E 与场景互动 重要物品示例 [#texture=c01/银元.png]
41 ui_press_b prop_令牌 按 B 打开背包 令牌 [#texture=c01/令牌物品.png][#inspect=c01/令牌.png]
42 ui_press_shift prop_装有灵魂的令牌 按住 Shift 奔跑 装有灵魂的令牌 [#texture=c01/装有灵魂的令牌物品.png][#inspect=c01/装有灵魂的令牌.png]
43 input_拼凑信件 prop_火柴 点击选择信件碎片,方向键移动,按 E 旋转 火柴 [#texture=c02/火柴.png]
44 ui_获得 prop_小猫玩具的脑袋 获得 小猫玩具的脑袋 [#texture=c02/小猫玩具脑袋物品.png][#inspect=c02/小猫玩具脑袋.png]
45 ui_退出 prop_绳子 退出 绳子 Exit [#texture=c02/绳子物品.png][#inspect=c02/绳子.png]
46 ui_阅读 prop_1012钥匙 阅读 1012钥匙 Read [#texture=c02/1012钥匙物品.png][#inspect=c02/1012钥匙.png]
47 ui_检阅 prop_老虎钳 检阅 老虎钳 [#texture=c02/老虎钳物品.png][#inspect=c02/老虎钳.png]
48 ui_收起 prop_3014旋转锁钥匙 收起 3014旋转锁钥匙 Hold [#texture=c02/3014旋转锁钥匙物品.png][#inspect=c02/3014旋转锁钥匙.png]
49 ui_夜行船1 prop_小猫玩具完整 百岁光阴一梦蝶。 小猫玩具 [#texture=c02/小猫玩具完整物品.png][#inspect=c02/小猫玩具完整.png]
50 ui_夜行船2 院长的信... 重回⾸往事堪嗟。 院长的信...
51 ui_夜行船3 1 今⽇春来。明朝花谢。 1
52 ui_夜行船4 2 急罚盏夜阑灯灭。 2
53 ui_夜行船5 3 夜行船 3
54 prop_空手 重要物品示例 空手 重要物品示例
55 prop_信碎片1 4 信碎片(一) 4 [#texture=c01/信碎片1.png]
56 prop_信碎片2 c01_s07_需要报纸 信碎片(二) 我想先在周围看看 [#texture=c01/信碎片1.png]
57 prop_院长的信 c01_s08_书店工作 院长的信 我还有工作要做 [#texture=c01/信碎片1.png]
58 prop_银元 c01_s08_书店工钱 银元 我还有⼯钱没拿 [#texture=c01/银元.png]
59 prop_令牌 notes_纸条 令牌 纸条 [#texture=c01/令牌物品.png][#inspect=c01/令牌.png]
60 prop_装有灵魂的令牌 notes_锁住了 装有灵魂的令牌 锁住了 [#texture=c01/装有灵魂的令牌物品.png][#inspect=c01/装有灵魂的令牌.png]
61 prop_火柴 notes_打不开 火柴 打不开 [#texture=c02/火柴.png]
62 prop_小猫玩具的脑袋 notes_干掉的血迹 小猫玩具的脑袋 干掉的血迹 Catty's Head [#texture=c02/小猫玩具脑袋物品.png][#inspect=c02/小猫玩具脑袋.png]
63 prop_绳子 notes_有什么东西 绳子 有什么东西 Rope [#texture=c02/绳子物品.png][#inspect=c02/绳子.png]
64 prop_1012钥匙 notes_无法触碰 1012钥匙 无法触碰 1012 Key [#texture=c02/1012钥匙物品.png][#inspect=c02/1012钥匙.png]
65 prop_老虎钳 notes_挂画 老虎钳 挂画 [#texture=c02/老虎钳物品.png][#inspect=c02/老虎钳.png]
66 prop_3014旋转锁钥匙 notes_相框 3014旋转锁钥匙 相框 [#texture=c02/3014旋转锁钥匙物品.png][#inspect=c02/3014旋转锁钥匙.png]
67 prop_小猫玩具完整 notes_寻人启事 小猫玩具 寻人启事 [#texture=c02/小猫玩具完整物品.png][#inspect=c02/小猫玩具完整.png]
68 c01_s07_需要报纸 c01_鸡毛掸子 我想先在周围看看 这是鸡毛掸子吗?
69 c01_s08_书店工作 c01_院长书桌 我还有工作要做 桌上放着纸笔
70 c01_s08_书店工钱 c01_院长床 我还有⼯钱没拿 这本书已经看过了
notes_纸条 纸条
notes_锁住了 锁住了
notes_打不开 打不开
notes_干掉的血迹 干掉的血迹
notes_有什么东西 有什么东西
notes_无法触碰 无法触碰
notes_挂画 挂画
notes_相框 相框
notes_寻人启事 寻人启事
c01_鸡毛掸子 这是鸡毛掸子吗?
c01_院长书桌 桌上放着纸笔
c01_院长床 这本书已经看过了
c01_院长座钟 1917年10⽉28⽇... 时间停在16\:30
71 c01_倾斜的洋相片 c01_院长座钟 洋相片 1917年10⽉28⽇... 时间停在16\:30
72 c01_摆正的洋相片 c01_倾斜的洋相片 是院长的女儿吗 洋相片
73 c01_s06_院长房间 c01_摆正的洋相片 这是院长的房间 是院长的女儿吗
74 c01_s06_小朋友房间 c01_s06_院长房间 这是其他小朋友的房间 这是院长的房间
75 c01_s07_钱碗 c01_s06_小朋友房间 碗⾥是铜钱 这是其他小朋友的房间
76 c01_s07_获得报纸 c01_s07_钱碗 这是什么? 碗⾥是铜钱
77 c01_s07_书店展柜 c01_s07_获得报纸 好多书... 要是能在这里工作就好了 这是什么?
78 c01_s08_书架游戏完成 c01_s07_书店展柜 这些书怎么变成这样了? 好可惜...我可能需要离开了 好多书... 要是能在这里工作就好了
79 c02_小蝉寻人启事_脸部破碎 c01_s08_书架游戏完成 似乎是一张寻人启事 脸的部分被撕掉了,看不清 这些书怎么变成这样了? 好可惜...我可能需要离开了
80 c02_卫生宣传画 c02_小蝉寻人启事_脸部破碎 几张卫生宣传画 似乎是一张寻人启事 脸的部分被撕掉了,看不清
81 c02_老鼠洞 c02_卫生宣传画 一个老鼠洞 在这种楼里挺常见的 几张卫生宣传画
82 c02_十几年前的报纸 c02_老鼠洞 十几年前的报纸 一个老鼠洞 在这种楼里挺常见的
83 c02_绳子剪刀 c02_十几年前的报纸 绳子和剪刀 十几年前的报纸
84 c02_玩具缺脑袋 c02_绳子剪刀 这个玩具缺了个脑袋 绳子和剪刀
85 c02_又是寻人启示 c02_玩具缺脑袋 又是那张寻人启示 这个玩具缺了个脑袋
86 c02_墙上的海报被撕掉了 c02_又是寻人启示 墙上的海报被撕掉了 又是那张寻人启示
87 c02_井臭 c02_墙上的海报被撕掉了 井里有一股臭味 墙上的海报被撕掉了
88 c02_中药材 c02_井臭 车上放了一些中药材 井里有一股臭味
89 c02_排队 c02_中药材 排队的人堵住了上楼的路 车上放了一些中药材
90 c02_不要出去 c02_排队 最好还是先不要出去 排队的人堵住了上楼的路
91 c02_太阳 c02_不要出去 太阳快落山了 最好还是先不要出去
92 c02_民国六年1015 c02_太阳 民国六年十月十五日 太阳快落山了
93 c02_一个洞 c02_民国六年1015 一个洞,里面好像还有空间 民国六年十月十五日
94 c02_工具箱 c02_一个洞 工具箱 一个洞,里面好像还有空间
95 c02_找到有用的东西 c02_工具箱 应该能找到有用的东西 工具箱
96 c02_公寓告示 c02_找到有用的东西 公寓告示 应该能找到有用的东西
97 c02_通往里间的门 c02_公寓告示 通往里间的门 公寓告示
98 c02_花名册 c02_通往里间的门 花名册 通往里间的门
99 c02_罪 c02_花名册 花名册
100 c02_门上有什么东西 c02_罪 门上有什么东西
101 c02_奠 c02_门上有什么东西 门上有什么东西
102 c02_寻夏小蝉 c02_奠 失踪的小孩名叫夏小蝉
103 c02_小猫干尸 c02_寻夏小蝉 小猫的尸体已经干了 失踪的小孩名叫夏小蝉
104 c02_几块大洋 c02_小猫干尸 几块大洋 小猫的尸体已经干了
105 c02_死老鼠 c02_几块大洋 死掉的老鼠 几块大洋
106 c02_石缝开花 c02_死老鼠 石缝里开了几束花 死掉的老鼠
107 c02_石壁空间 c02_石缝开花 石壁另一头好像还有空间 石缝里开了几束花
108 c02_民国六年1221 c02_石壁空间 民国六年十二月二十一日 石壁另一头好像还有空间
109 c02_患者感谢信 c02_民国六年1221 一些患者的感谢信 民国六年十二月二十一日
110 c02_被撕掉的书 c02_患者感谢信 一本被撕掉的书 一些患者的感谢信
111 c02_里面有什么东西 c02_被撕掉的书 里面有什么东西 一本被撕掉的书
112 c02_戏台上的诗 c02_里面有什么东西 戏台上面刻了一首诗 里面有什么东西
113 c02_锁开了 c02_戏台上的诗 锁开了 戏台上面刻了一首诗
114 c02_口袋里有东西 c02_锁开了 口袋里有东西 锁开了
115 c02_雾太大 c02_口袋里有东西 雾太大了,看不清路 口袋里有东西
116 c02_八音盒 c02_雾太大 是个八音盒 雾太大了,看不清路
117 c02_祝女儿早日康复 c02_八音盒 祝女儿早日康复 是个八音盒
118 c02_图案一样 c02_祝女儿早日康复 这图案和我手臂上的一摸一样 祝女儿早日康复
119 c02_图案一样 这图案和我手臂上的一摸一样
120
121
122
123
124

View File

@ -2,14 +2,14 @@
importer="csv_translation"
type="Translation"
uid="uid://bd5qbimcnpkb5"
uid="uid://hx4e4wd1tfeg"
[deps]
files=["res://asset/dialogue/item_description.zh_CN.translation", "res://asset/dialogue/item_description.en.translation"]
files=["res://asset/dialogue/item_description.zh_CN.translation"]
source_file="res://asset/dialogue/item_description.csv"
dest_files=["res://asset/dialogue/item_description.zh_CN.translation", "res://asset/dialogue/item_description.en.translation"]
dest_files=["res://asset/dialogue/item_description.zh_CN.translation"]
[params]

View File

@ -20,7 +20,7 @@
自动保存成功 [ID:ui_auto_saved]
按 E 与场景互动 [ID:ui_press_e]
按 B 打开背包 [ID:ui_press_b]
重要物品已更新(按 B 打开背包) [ID:ui_important_item_update]
按住 Shift 奔跑 [ID:ui_press_shift]
点击选择信件碎片,方向键移动,按 E 旋转 [ID:input_拼凑信件]
@ -43,11 +43,13 @@
空手 [ID:prop_空手]
# texture 路径从 "res://asset/art/prop/" 之后算起
# c01
信碎片(一) [#texture=c01/信碎片1.png] [ID:prop_信碎片1]
#信碎片(一) [#texture=c01/信碎片1.png] [ID:prop_信碎片1]
信碎片(一) [#texture=c01/信件左上.png] [ID:prop_信碎片1]
信碎片(二) [#texture=c01/信件右上.png] [ID:prop_信碎片2]
银元 [#texture=c01/银元.png] [ID:prop_银元]
# TODO 美术资源更换
信碎片(二) [#texture=c01/信碎片1.png] [ID:prop_信碎片2]
院长的信 [#texture=c01/信碎片1.png] [ID:prop_院长的信]
院长的信 [#texture=c01/院长的信.png] [ID:prop_院长的信]
重要物品示例 [#texture=c01/银元.png] [ID:prop_重要物品示例]
令牌 [#texture=c01/令牌物品.png][#inspect=c01/令牌.png] [ID:prop_令牌]
装有灵魂的令牌 [#texture=c01/装有灵魂的令牌物品.png][#inspect=c01/装有灵魂的令牌.png] [ID:prop_装有灵魂的令牌]
# c02
@ -60,6 +62,21 @@
小猫玩具 [#texture=c02/小猫玩具完整物品.png][#inspect=c02/小猫玩具完整.png] [ID:prop_小猫玩具完整]
=> END
~ prop_院长的信
院长的信...
1
2
3
=> END
~ prop_重要物品示例
重要物品示例
1
2
3
4
=> END
~ HoldingReason
我想先在周围看看 [ID:c01_s07_需要报纸]
我还有工作要做 [ID:c01_s08_书店工作]

View File

@ -72,9 +72,7 @@ func unlock_player():
# action_freezed 对应 freeze 与 release 方法
# lock_time: the time to lock the player action. 0 means lock forever, thus the player will be locked until release_player is called.
func freeze_player(
lock_time: float, action := 3, auto_quit := false
) -> void:
func freeze_player(lock_time: float, action := 3, auto_quit := false) -> void:
var player = get_player()
if player:
player.freeze_player(lock_time, action, auto_quit)
@ -116,6 +114,7 @@ func set_player_boundary(rect: Rect2) -> void:
var balloon_node
func pop_debug_dialog_info(character: String, content: String):
if GlobalConfig.DEBUG:
if not is_instance_valid(balloon_node):
@ -157,6 +156,14 @@ func enable_prop_item(prop_key: String) -> void:
printerr("enable_prop_item PropHud node not found")
func enable_important_item(prop_key: String) -> void:
var prop_hud = get_prop_hud()
if prop_hud:
prop_hud.inventory.enable_important_item(prop_key)
else:
printerr("enable_important_item PropHud node not found")
func disable_prop_item(prop_key: String) -> void:
var prop_hud = get_prop_hud()
if prop_hud:
@ -260,9 +267,7 @@ var prop_bag = preload("res://scene/prop/prop_bag.tscn")
func show_bag():
pass
# 暂时不启用背包
# get_node("/root/Main").add_child(prop_bag.instantiate())
get_node("/root/Main").add_child(prop_bag.instantiate())
func quit_game():

View File

@ -101,12 +101,12 @@ func _on_paper_interacted():
right_door.enabled = true
SceneManager.pop_debug_dialog_info("音效", "开门声")
$"../sfx_door_open".play()
var inspector = SceneManager.get_inspector() as PropInspector
if inspector:
# 显示互动提示
inspector.quit_and_hidden.connect(
SceneManager.pop_center_notification.bind(tr("ui_press_b")), CONNECT_ONE_SHOT
)
# var inspector = SceneManager.get_inspector() as PropInspector
# if inspector:
# # 显示互动提示
# inspector.quit_and_hidden.connect(
# SceneManager.pop_center_notification.bind(tr("ui_prop_update")), CONNECT_ONE_SHOT
# )
# 钢琴音效,每次按下播放不同音符

View File

@ -107,6 +107,7 @@ height = -10.0
dialogue_title = "c01_s07_吉祥话2"
[node name="陆仁擦刀" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="6"]
visible = false
position = Vector2(199, 0)
sprite_frames = ExtResource("6_thm8f")
animation = &"陆仁擦刀"

View File

@ -177,11 +177,11 @@ func _on_envelope_game_exiting() -> void:
func _on_envelope_game_success() -> void:
SceneManager.release_player()
envolope_table.enabled = false
create_tween().tween_property(mask, "color:a", 0.0, 1.0).from(1.0)
ArchiveManager.archive.set_global_entry("envelope_game_success", true)
envelope_game_success = true
SceneManager.enable_prop_item("prop_院长的信")
_check_portal()

View File

@ -141,7 +141,7 @@ offset = Vector2(0, 40)
[node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"]
points = PackedVector2Array(30, 150, 545, 150)
[node name="参考" type="Sprite2D" parent="Ground"]
[node name="参考" type="Sprite2D" parent="."]
visible = false
modulate = Color(1, 1, 1, 0.580392)
position = Vector2(20, 0)

View File

@ -29,7 +29,7 @@ func _ready() -> void:
_display_selected()
content_rect.modulate.a = 0.0
content_rect.visible = true
%Label.text = tr("c01_信件全文")
# %Label.text = tr("c01_信件全文")
SceneManager.pop_center_notification(tr("input_拼凑信件"))
@ -132,8 +132,16 @@ func _check_answer() -> void:
func _post_success():
var tween = create_tween()
tween.tween_property(content_rect, "modulate:a", 1.0, 1.0)
# 不显示文本,让玩家在重要物品栏去看(提示)
# var tween = create_tween()
# tween.tween_property(content_rect, "modulate:a", 1.0, 1.0)
SceneManager.pop_center_notification(tr("ui_important_item_update"))
SceneManager.enable_important_item("prop_院长的信")
# 1s 后退出
await get_tree().create_timer(1.0).timeout
if get_parent() != null:
success.emit()
get_parent().remove_child(self)
func _unhandled_input(event: InputEvent) -> void:
@ -175,4 +183,4 @@ func _unhandled_input(event: InputEvent) -> void:
if handled:
$SfxMove.play()
_display_selected()
_check_answer()
_check_answer()

View File

@ -1,15 +1,61 @@
extends Panel
@onready var buttons_vbox = %ButtonsVBox as VBoxContainer
@onready var texture_rect = %TextureRect as TextureRect
@onready var content_text_edit = %Content as TextEdit
func _ready():
get_parent().layer = GlobalConfig.CANVAS_LAYER_BAG
_load_inventory()
SceneManager.lock_player()
# SceneManager.lock_player()
get_tree().paused = true
_load_item_buttons()
func _load_inventory():
pass
func _load_item_buttons() -> void:
# 移除 texture_rect 的纹理与 content_text_edit 的内容
texture_rect.texture = null
content_text_edit.text = ""
# 移除所有子节点
for child in buttons_vbox.get_children():
buttons_vbox.remove_child(child)
child.queue_free()
# 从 prop_hud 中读取
var hud = SceneManager.get_prop_hud()
if not hud:
printerr("PropHud node not found")
return
# prop keys
var inventory = hud.inventory
for prop_key in inventory.important_items:
var button = preload("res://scene/prop/prop_bag_button.tscn").instantiate()
button.text = tr(prop_key)
button.pressed.connect(_display_item.bind(prop_key, button))
buttons_vbox.add_child(button)
# 如果已读,消除 icon默认都有 icon
if not inventory.unviewed_important_items.has(prop_key):
button.icon = null
# # 选中第一个
# if buttons_vbox.get_child_count() > 0:
# (buttons_vbox.get_child(0) as Button).pres
# # _display_item(inventory.important_items[0])
func _display_item(prop_key, button):
var hud = SceneManager.get_prop_hud()
if not hud:
printerr("PropHud node not found")
return
# 标记为已读:消除 icon + 写入 inventory
if hud.inventory.unviewed_important_items.has(prop_key):
hud.inventory.unviewed_important_items.erase(prop_key)
button.icon = null
# prop keys
var item_data = hud.items_dict[prop_key]
var content = hud.important_items_dict[prop_key]
content_text_edit.text = content
texture_rect.texture = load(item_data.texture_path)
func _unhandled_input(event: InputEvent) -> void:
@ -20,5 +66,5 @@ func _unhandled_input(event: InputEvent) -> void:
):
get_viewport().set_input_as_handled()
get_tree().paused = false
SceneManager.unlock_player()
# SceneManager.unlock_player()
queue_free()

View File

@ -1,7 +1,14 @@
[gd_scene load_steps=3 format=3 uid="uid://b6gbolo1o7wdf"]
[gd_scene load_steps=7 format=3 uid="uid://b6gbolo1o7wdf"]
[ext_resource type="Script" uid="uid://cg7wdaw03bovq" path="res://scene/prop/prop_bag.gd" id="1_f3hpu"]
[ext_resource type="Texture2D" uid="uid://dsj3l0baqg1g7" path="res://asset/art/ui/小蝶笔记.png" id="2_3s314"]
[ext_resource type="PackedScene" uid="uid://wxd25ec3cqyy" path="res://scene/prop/prop_bag_button.tscn" id="3_wlvs1"]
[ext_resource type="Texture2D" uid="uid://dl214l7im21sf" path="res://asset/art/prop/c01/院长的信.png" id="4_wlvs1"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_mnmsg"]
bg_color = Color(0.6, 0.6, 0.6, 0)
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_wlvs1"]
[node name="PropBag" type="CanvasLayer"]
process_mode = 3
@ -28,82 +35,69 @@ texture = ExtResource("2_3s314")
expand_mode = 5
stretch_mode = 2
[node name="GridContainer" type="GridContainer" parent="Bag"]
custom_minimum_size = Vector2(270, 120)
[node name="ScrollContainer" type="ScrollContainer" parent="Bag"]
custom_minimum_size = Vector2(120, 160)
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -20.0
offset_top = -20.0
offset_right = 20.0
offset_bottom = 20.0
offset_left = -139.0
offset_top = -82.0
offset_right = -19.0
offset_bottom = 78.0
grow_horizontal = 2
grow_vertical = 2
columns = 9
horizontal_scroll_mode = 0
[node name="Panel" type="Panel" parent="Bag/GridContainer"]
custom_minimum_size = Vector2(30, 30)
[node name="ButtonsVBox" type="VBoxContainer" parent="Bag/ScrollContainer"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 0
[node name="Button" parent="Bag/ScrollContainer/ButtonsVBox" instance=ExtResource("3_wlvs1")]
layout_mode = 2
[node name="Panel2" type="Panel" parent="Bag/GridContainer"]
custom_minimum_size = Vector2(30, 30)
[node name="Button2" parent="Bag/ScrollContainer/ButtonsVBox" instance=ExtResource("3_wlvs1")]
layout_mode = 2
text = "示例按钮"
[node name="Panel3" type="Panel" parent="Bag/GridContainer"]
custom_minimum_size = Vector2(30, 30)
[node name="Button3" parent="Bag/ScrollContainer/ButtonsVBox" instance=ExtResource("3_wlvs1")]
layout_mode = 2
text = "示例按钮"
[node name="Panel4" type="Panel" parent="Bag/GridContainer"]
custom_minimum_size = Vector2(30, 30)
layout_mode = 2
[node name="DisplayVBox" type="VBoxContainer" parent="Bag"]
layout_mode = 0
offset_left = 300.0
offset_top = 64.0
offset_right = 440.0
offset_bottom = 248.0
[node name="Panel5" type="Panel" parent="Bag/GridContainer"]
custom_minimum_size = Vector2(30, 30)
[node name="TextureRect" type="TextureRect" parent="Bag/DisplayVBox"]
unique_name_in_owner = true
custom_minimum_size = Vector2(100, 100)
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 4
texture = ExtResource("4_wlvs1")
expand_mode = 3
[node name="Panel6" type="Panel" parent="Bag/GridContainer"]
custom_minimum_size = Vector2(30, 30)
layout_mode = 2
[node name="Panel7" type="Panel" parent="Bag/GridContainer"]
custom_minimum_size = Vector2(30, 30)
layout_mode = 2
[node name="Panel8" type="Panel" parent="Bag/GridContainer"]
custom_minimum_size = Vector2(30, 30)
layout_mode = 2
[node name="Panel9" type="Panel" parent="Bag/GridContainer"]
custom_minimum_size = Vector2(30, 30)
layout_mode = 2
[node name="Panel10" type="Panel" parent="Bag/GridContainer"]
custom_minimum_size = Vector2(30, 30)
layout_mode = 2
[node name="Panel11" type="Panel" parent="Bag/GridContainer"]
custom_minimum_size = Vector2(30, 30)
layout_mode = 2
[node name="Panel12" type="Panel" parent="Bag/GridContainer"]
custom_minimum_size = Vector2(30, 30)
layout_mode = 2
[node name="Panel13" type="Panel" parent="Bag/GridContainer"]
custom_minimum_size = Vector2(30, 30)
layout_mode = 2
[node name="Panel14" type="Panel" parent="Bag/GridContainer"]
custom_minimum_size = Vector2(30, 30)
layout_mode = 2
[node name="Panel15" type="Panel" parent="Bag/GridContainer"]
custom_minimum_size = Vector2(30, 30)
layout_mode = 2
[node name="Panel16" type="Panel" parent="Bag/GridContainer"]
custom_minimum_size = Vector2(30, 30)
[node name="Content" type="TextEdit" parent="Bag/DisplayVBox"]
unique_name_in_owner = true
custom_minimum_size = Vector2(140, 90)
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 0
theme_override_colors/font_readonly_color = Color(0.337438, 0.120804, 0.0401172, 1)
theme_override_font_sizes/font_size = 9
theme_override_styles/normal = SubResource("StyleBoxFlat_mnmsg")
theme_override_styles/read_only = SubResource("StyleBoxEmpty_wlvs1")
text = "1
2
3
4
5"
editable = false
scroll_smooth = true

View File

@ -0,0 +1,47 @@
[gd_scene load_steps=7 format=3 uid="uid://wxd25ec3cqyy"]
[ext_resource type="Texture2D" uid="uid://b343nvvbtpglb" path="res://asset/art/ui/互动提示符/ui 像素版_纯白.png" id="1_cj3ky"]
[ext_resource type="Texture2D" uid="uid://cehulj6qro08v" path="res://asset/art/ui/对话框.png" id="2_4yw4h"]
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_rvhvk"]
texture = ExtResource("2_4yw4h")
texture_margin_left = 4.0
texture_margin_top = 4.0
texture_margin_right = 4.0
texture_margin_bottom = 4.0
region_rect = Rect2(22, 38, 40, 30)
modulate_color = Color(0.877616, 0.877616, 0.877616, 1)
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_xo6jf"]
texture = ExtResource("2_4yw4h")
texture_margin_left = 4.0
texture_margin_top = 4.0
texture_margin_right = 4.0
texture_margin_bottom = 4.0
region_rect = Rect2(22, 38, 40, 30)
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_wlvs1"]
texture = ExtResource("2_4yw4h")
texture_margin_left = 4.0
texture_margin_top = 4.0
texture_margin_right = 4.0
texture_margin_bottom = 4.0
region_rect = Rect2(22, 38, 40, 30)
modulate_color = Color(0.585062, 0.585062, 0.585062, 1)
[sub_resource type="AtlasTexture" id="AtlasTexture_rvhvk"]
atlas = ExtResource("1_cj3ky")
region = Rect2(732, 546, 45, 48)
[node name="Button" type="Button"]
custom_minimum_size = Vector2(100, 15)
theme_override_colors/icon_hover_color = Color(1, 1, 1, 0.913725)
theme_override_colors/icon_pressed_color = Color(1, 1, 1, 1)
theme_override_colors/icon_focus_color = Color(1, 1, 1, 0.819608)
theme_override_colors/icon_normal_color = Color(1, 1, 1, 0.6)
theme_override_constants/icon_max_width = 8
theme_override_styles/focus = SubResource("StyleBoxTexture_rvhvk")
theme_override_styles/hover = SubResource("StyleBoxTexture_xo6jf")
theme_override_styles/normal = SubResource("StyleBoxTexture_wlvs1")
text = "院长的信"
icon = SubResource("AtlasTexture_rvhvk")

View File

@ -48,6 +48,7 @@ const PROP_CONTAINER_X = 130.0
const PROP_CONTROL_X = 110.0
var items_dict := {}
var important_items_dict = {}
# 从配置文件加载 prop items
var item_config_res = preload("res://asset/dialogue/item_description.dialogue")
var path_prefix = "res://asset/art/prop/"
@ -123,10 +124,27 @@ func _load_items():
if inspect_path:
item.inspect_path = path_prefix + inspect_path
items_dict[item.key] = item
# 检查是否是重要物品,如果是,则添加到 important_items_dict
if item_config_res.titles.has(item.key):
var important_item_line_id = item_config_res.titles[item.key]
important_items_dict[item.key] = get_import_item_content(important_item_line_id)
if not current_line.has("next_id") or current_line.next_id == "end":
break
current_line = item_config_res.lines[current_line.next_id]
func get_import_item_content(line_id) -> String:
var current_line = item_config_res.lines[line_id]
var content = ""
while current_line:
if current_line.has("text"):
if current_line.has("translation_key"):
content += tr(current_line.translation_key) + "\n"
else:
content += current_line.text + "\n"
if not current_line.has("next_id") or current_line.next_id == "end":
break
current_line = item_config_res.lines[current_line.next_id]
return content
func _load_from_archive() -> void:
if ArchiveManager.archive:

View File

@ -12,7 +12,15 @@ signal current_item_changed(prop_key: String)
current_item_changed.emit(enabled_items[current_index])
else:
current_item_changed.emit("")
# 重要物品,不可丢弃,在背包可见
@export var important_items := []
# 未查看的重要物品,红点效果
@export var unviewed_important_items := []
func enable_important_item(prop_key: String) -> void:
if not important_items.has(prop_key):
important_items.append(prop_key)
unviewed_important_items.append(prop_key)
func current_item_key() -> String:
if enabled_items.size() == 0: