完善抓药游戏
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 18 KiB |
BIN
asset/art/little_game/c03_药车游戏/底图.png
Normal file
After Width: | Height: | Size: 44 KiB |
34
asset/art/little_game/c03_药车游戏/底图.png.import
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://2i5cqfwnabc"
|
||||||
|
path="res://.godot/imported/底图.png-85914ea1b842b552fc8a23ae13dbd8af.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://asset/art/little_game/c03_药车游戏/底图.png"
|
||||||
|
dest_files=["res://.godot/imported/底图.png-85914ea1b842b552fc8a23ae13dbd8af.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
|
Before Width: | Height: | Size: 5.5 KiB After Width: | Height: | Size: 5.5 KiB |
Before Width: | Height: | Size: 2.9 KiB |
BIN
asset/art/little_game/c03_药车游戏/标签_中文.png
Normal file
After Width: | Height: | Size: 2.9 KiB |
@ -3,15 +3,15 @@
|
|||||||
importer="texture"
|
importer="texture"
|
||||||
type="CompressedTexture2D"
|
type="CompressedTexture2D"
|
||||||
uid="uid://b02vrycgotcfe"
|
uid="uid://b02vrycgotcfe"
|
||||||
path="res://.godot/imported/标签.png-79240f7e8af69a09f7e264f3ed9dc32e.ctex"
|
path="res://.godot/imported/标签_中文.png-6e1725f7c13216a151a40a194ab9928d.ctex"
|
||||||
metadata={
|
metadata={
|
||||||
"vram_texture": false
|
"vram_texture": false
|
||||||
}
|
}
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
|
|
||||||
source_file="res://asset/art/little_game/c03_药车游戏/标签.png"
|
source_file="res://asset/art/little_game/c03_药车游戏/标签_中文.png"
|
||||||
dest_files=["res://.godot/imported/标签.png-79240f7e8af69a09f7e264f3ed9dc32e.ctex"]
|
dest_files=["res://.godot/imported/标签_中文.png-6e1725f7c13216a151a40a194ab9928d.ctex"]
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
|
|
BIN
asset/art/little_game/c03_药车游戏/标签_英文.png
Normal file
After Width: | Height: | Size: 2.0 KiB |
34
asset/art/little_game/c03_药车游戏/标签_英文.png.import
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://bknyukxevd2lw"
|
||||||
|
path="res://.godot/imported/标签_英文.png-d8e5b3330b7185c6fc3934d361427627.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://asset/art/little_game/c03_药车游戏/标签_英文.png"
|
||||||
|
dest_files=["res://.godot/imported/标签_英文.png-d8e5b3330b7185c6fc3934d361427627.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
|
BIN
asset/art/little_game/c03_药车游戏/石臼前侧.png
Normal file
After Width: | Height: | Size: 8.5 KiB |
34
asset/art/little_game/c03_药车游戏/石臼前侧.png.import
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://5qrlqm1moo3s"
|
||||||
|
path="res://.godot/imported/石臼前侧.png-c5c3e94bd89da7e16b00c1ecb2572f5d.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://asset/art/little_game/c03_药车游戏/石臼前侧.png"
|
||||||
|
dest_files=["res://.godot/imported/石臼前侧.png-c5c3e94bd89da7e16b00c1ecb2572f5d.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
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.0 KiB |
BIN
asset/audio/sfx/环境音/第二章/amb_第二章结尾.ogg
Normal file
19
asset/audio/sfx/环境音/第二章/amb_第二章结尾.ogg.import
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="oggvorbisstr"
|
||||||
|
type="AudioStreamOggVorbis"
|
||||||
|
uid="uid://dlvxxvcx7ga3w"
|
||||||
|
path="res://.godot/imported/amb_第二章结尾.ogg-5b3e4bbb5af26683d4c49855c1c00d2d.oggvorbisstr"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://asset/audio/sfx/环境音/第二章/amb_第二章结尾.ogg"
|
||||||
|
dest_files=["res://.godot/imported/amb_第二章结尾.ogg-5b3e4bbb5af26683d4c49855c1c00d2d.oggvorbisstr"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
loop=false
|
||||||
|
loop_offset=0
|
||||||
|
bpm=0
|
||||||
|
beat_count=0
|
||||||
|
bar_beats=4
|
@ -17,6 +17,7 @@ c03_f2_madman_runaway: 0:初始化 1:跑开_纸人挡路 2:消除纸人
|
|||||||
c03_invite_xchan_supper=3 -> c03_f2_madman_runaway=2
|
c03_invite_xchan_supper=3 -> c03_f2_madman_runaway=2
|
||||||
c03_before_mahjong_game: 0:初始化 1:粘舌头和刀把 2:给药 4:准备好进入游戏
|
c03_before_mahjong_game: 0:初始化 1:粘舌头和刀把 2:给药 4:准备好进入游戏
|
||||||
c03_mahjong_game: 0:麻将理牌 1:麻将出千 2:麻将结束
|
c03_mahjong_game: 0:麻将理牌 1:麻将出千 2:麻将结束
|
||||||
|
c03_durg_game: 0:初始化 1:获得药方 2:获得药包
|
||||||
c03_li_paperwoman: 0:初始化隐藏 1:显示纸人 2:纸舌头完成 3:给药完成
|
c03_li_paperwoman: 0:初始化隐藏 1:显示纸人 2:纸舌头完成 3:给药完成
|
||||||
=> END
|
=> END
|
||||||
|
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
keys,zh_CN,_character,_notes,_tags,zh_SH,en
|
keys,zh_CN,_character,_notes,_tags,zh_SH,en
|
||||||
prop_下半部的舌头,下半部的舌头,,,[#texture=c03/ux_下半部的舌头.png],,
|
prop_下半部的舌头,下半部的舌头,,,[#texture=c03/ux_下半部的舌头.png],,
|
||||||
|
prop_2013钥匙,2013钥匙,,,[#texture=c03/2013钥匙.png],,
|
||||||
|
prop_2013钥匙_说明,看起来较新的钥匙,标着「2013」的房间号码,,,,,
|
||||||
index_新游戏,新游戏,,,,,New Game
|
index_新游戏,新游戏,,,,,New Game
|
||||||
index_继续游戏,继续游戏,,,,,Continue
|
index_继续游戏,继续游戏,,,,,Continue
|
||||||
index_退出游戏,退出游戏,,,,,Exit Game
|
index_退出游戏,退出游戏,,,,,Exit Game
|
||||||
@ -47,6 +49,11 @@ input_拼凑信件,点击选择信件碎片,方向键移动,E 旋碎片转
|
|||||||
input_书架游戏,点击书本可选中或交换,Q 退出,,,,,"Click books to select or swap, Q to exit"
|
input_书架游戏,点击书本可选中或交换,Q 退出,,,,,"Click books to select or swap, Q to exit"
|
||||||
input_麻将游戏_麻将不足,还缺一块麻将,,,,,
|
input_麻将游戏_麻将不足,还缺一块麻将,,,,,
|
||||||
input_麻将游戏_操作规则,依次点击两块麻将可进行交换,,,,,
|
input_麻将游戏_操作规则,依次点击两块麻将可进行交换,,,,,
|
||||||
|
ui_center_notify_c03药车缺少物品,缺少药引,,,,,
|
||||||
|
ui_center_notify_c03药车不能再取药材,同种药材只能取出一份,,,,,
|
||||||
|
ui_center_notify_c03放到碗中或原处,药材只能放到碗中或原处,,,,,
|
||||||
|
ui_center_notify_c03碗口放入药材,从碗口处放入药材,,,,,
|
||||||
|
ui_center_notify_c03准备研磨,已准备好研磨,,,,,
|
||||||
ui_获得道具,获得道具,,,,,Item Obtained
|
ui_获得道具,获得道具,,,,,Item Obtained
|
||||||
ui_获得重要物品,重要物品,,,,,Important Item
|
ui_获得重要物品,重要物品,,,,,Important Item
|
||||||
ui_退出,退出,,,,,Exit
|
ui_退出,退出,,,,,Exit
|
||||||
@ -97,7 +104,7 @@ prop_粘鼠板_说明,自制的捕鼠工具,纸上面有黏黏的浆糊,,,,,Ho
|
|||||||
prop_一把香,一把香,,,[#texture=c03/一把香.png][#inspect=c03/一把香.png],,Bundle of Incense
|
prop_一把香,一把香,,,[#texture=c03/一把香.png][#inspect=c03/一把香.png],,Bundle of Incense
|
||||||
prop_一把香_说明,三炷细香捆成一束,香头微微发黑,散发着淡淡的檀木气息,,,,,
|
prop_一把香_说明,三炷细香捆成一束,香头微微发黑,散发着淡淡的檀木气息,,,,,
|
||||||
prop_麻将2,麻将(二),,,[#texture=c03/麻将2.png][#inspect=c03/ux_麻将2.png],,
|
prop_麻将2,麻将(二),,,[#texture=c03/麻将2.png][#inspect=c03/ux_麻将2.png],,
|
||||||
prop_麻将2_说明,这块麻将上刻着幺鸡,边角已被摸得光滑,,,,,
|
prop_麻将2_说明,上面的幺鸡图是鸟和鸡的组合,幺字在南方的方言中有一的意思,,,,,
|
||||||
prop_一碗浆糊,一碗浆糊,,,[#texture=c03/一碗浆糊.png][#inspect=c03/ux_一碗浆糊.png],,
|
prop_一碗浆糊,一碗浆糊,,,[#texture=c03/一碗浆糊.png][#inspect=c03/ux_一碗浆糊.png],,
|
||||||
prop_一碗浆糊_说明,用面粉调制的黏糊糊的浆液,表面已经结了一层薄膜,,,,,
|
prop_一碗浆糊_说明,用面粉调制的黏糊糊的浆液,表面已经结了一层薄膜,,,,,
|
||||||
prop_纸舌头,纸舌头,,,[#texture=c03/下半部的舌头.png][#inspect=c03/ux_下半部的舌头.png],,
|
prop_纸舌头,纸舌头,,,[#texture=c03/下半部的舌头.png][#inspect=c03/ux_下半部的舌头.png],,
|
||||||
@ -105,7 +112,7 @@ prop_纸舌头_说明,用红纸剪成的舌头形状,边缘参差不齐,像
|
|||||||
prop_刀把,刀把,,,[#texture=c03/刀把.png][#inspect=c03/ux_刀把.png],,
|
prop_刀把,刀把,,,[#texture=c03/刀把.png][#inspect=c03/ux_刀把.png],,
|
||||||
prop_刀把_说明,木质刀柄,表面磨得发亮,刀身不知去向,,,,,
|
prop_刀把_说明,木质刀柄,表面磨得发亮,刀身不知去向,,,,,
|
||||||
prop_剪下的辫子,剪下的辫子,,,[#texture=c03/剪下的辫子.png][#inspect=c03/ux_剪下的辫子.png],,
|
prop_剪下的辫子,剪下的辫子,,,[#texture=c03/剪下的辫子.png][#inspect=c03/ux_剪下的辫子.png],,
|
||||||
prop_剪下的辫子_说明,一束乌黑的长辫,发丝柔顺,似乎刚被剪下不久,,,,,
|
prop_剪下的辫子_说明,王守义的辫子,是他极其宝贝之物,油亮浓密,没生虱子,,,,,
|
||||||
prop_沾血的纸条,沾血的纸条,,,[#texture=c03/沾血的纸条.png][#inspect=c03/ux_沾血的纸条.png],,
|
prop_沾血的纸条,沾血的纸条,,,[#texture=c03/沾血的纸条.png][#inspect=c03/ux_沾血的纸条.png],,
|
||||||
prop_沾血的纸条_说明,薄薄的纸片上有暗红色的斑点,字迹已经模糊不清,,,,,
|
prop_沾血的纸条_说明,薄薄的纸片上有暗红色的斑点,字迹已经模糊不清,,,,,
|
||||||
prop_纸铜钱1,纸铜钱,,,[#texture=c03/纸铜钱1.png][#inspect=c03/ux_纸铜钱1.png],,
|
prop_纸铜钱1,纸铜钱,,,[#texture=c03/纸铜钱1.png][#inspect=c03/ux_纸铜钱1.png],,
|
||||||
@ -122,8 +129,8 @@ prop_菜刀,菜刀,,,[#texture=c03/菜刀.png][#inspect=c03/ux_菜刀.png],,
|
|||||||
prop_菜刀_说明,厨房里常见的菜刀,刀刃锋利,刀身微微泛着寒光,,,,,
|
prop_菜刀_说明,厨房里常见的菜刀,刀刃锋利,刀身微微泛着寒光,,,,,
|
||||||
prop_1015钥匙,1015钥匙,,,[#texture=c03/1015钥匙.png],,
|
prop_1015钥匙,1015钥匙,,,[#texture=c03/1015钥匙.png],,
|
||||||
prop_1015钥匙_说明,铜制钥匙,上面刻着「1015」的数字,,,,,
|
prop_1015钥匙_说明,铜制钥匙,上面刻着「1015」的数字,,,,,
|
||||||
prop_2013钥匙,2013钥匙,,,[#texture=c03/2013钥匙.png],,
|
prop_3012钥匙,3012钥匙,,,[#texture=c03/3012钥匙.png],,
|
||||||
prop_2013钥匙_说明,看起来较新的钥匙,标着「2013」的房间号码,,,,,
|
prop_3012钥匙_说明,3012钥匙说明,,,,,
|
||||||
prop_胖子的钥匙,胖子的钥匙,,,[#texture=c03/胖子的钥匙.png],,
|
prop_胖子的钥匙,胖子的钥匙,,,[#texture=c03/胖子的钥匙.png],,
|
||||||
prop_胖子的钥匙_说明,一把普通的房门钥匙,钥匙环上还挂着个小铃铛,,,,,
|
prop_胖子的钥匙_说明,一把普通的房门钥匙,钥匙环上还挂着个小铃铛,,,,,
|
||||||
prop_药方,药方,,,[#texture=c03/药方.png][#inspect=c03/ux_药方.png],,
|
prop_药方,药方,,,[#texture=c03/药方.png][#inspect=c03/ux_药方.png],,
|
||||||
@ -140,6 +147,8 @@ prop_单只小鞋子,一只小鞋子,,,[#texture=c02/小鞋子1.png],,A Single S
|
|||||||
prop_单只小鞋子_说明,这只小鞋子曾经属于一个裹了小脚的女孩。{br}鞋不成双,祸事难防。,,,,,"This small shoe once belonged to a girl with bound feet.{br}When shoes don't come in pairs, misfortune is hard to prevent."
|
prop_单只小鞋子_说明,这只小鞋子曾经属于一个裹了小脚的女孩。{br}鞋不成双,祸事难防。,,,,,"This small shoe once belonged to a girl with bound feet.{br}When shoes don't come in pairs, misfortune is hard to prevent."
|
||||||
prop_邀请信,邀请信,,,[#texture=c03/邀请信.png][#inspect=c03/ux_邀请信.png],,
|
prop_邀请信,邀请信,,,[#texture=c03/邀请信.png][#inspect=c03/ux_邀请信.png],,
|
||||||
prop_邀请信_说明,邀请信说明,,,,,
|
prop_邀请信_说明,邀请信说明,,,,,
|
||||||
|
prop_两个麻将,麻将,,,[#texture=c03/两个麻将.png],,
|
||||||
|
prop_两个麻将_说明,王守义出老千时用的麻将{br}我听说,那会儿赌场由黑帮控制,秩序混乱,赌徒设局被抓后,往往下场凄惨,只有极少数人能够全身而退。,,,,,
|
||||||
c01_s05_检查院长房间,好像忘记了什么事情,再回去检查一遍吧。,,ID格式: prop_xx_说明,,,I feel like I've forgotten something. Let me go back and check again.
|
c01_s05_检查院长房间,好像忘记了什么事情,再回去检查一遍吧。,,ID格式: prop_xx_说明,,,I feel like I've forgotten something. Let me go back and check again.
|
||||||
c01_s07_需要报纸,书店还没开门。,,,,,The bookstore isn't open yet.
|
c01_s07_需要报纸,书店还没开门。,,,,,The bookstore isn't open yet.
|
||||||
c01_s08_书店工作,老板交代的工作还没做完,不能偷懒。,,,,,I haven't finished the work the boss assigned. I can't slack off.
|
c01_s08_书店工作,老板交代的工作还没做完,不能偷懒。,,,,,I haven't finished the work the boss assigned. I can't slack off.
|
||||||
@ -242,3 +251,4 @@ c03_s03_获得剪刀纸舌头,?✂️纸人,,,,,
|
|||||||
c03_s03_桌子,?桌子,,,,,
|
c03_s03_桌子,?桌子,,,,,
|
||||||
c03_s03_洗头盆,?洗头盆,,,,,
|
c03_s03_洗头盆,?洗头盆,,,,,
|
||||||
c03_s03_演出结束,?演出结束,刚刚他们?,,,,,
|
c03_s03_演出结束,?演出结束,刚刚他们?,,,,,
|
||||||
|
c03_药方内容,生姜两片{br}竹叶十片去尖{br}经霜三年的甘蔗{br}蟋蟀一对 注:要原配,即本在一窠中者{br}金钱鼠尾辫一副 注:生剪 烧成灰兑水送服,,,,,
|
||||||
|
|
@ -57,9 +57,11 @@
|
|||||||
# c03
|
# c03
|
||||||
还缺一块麻将 [ID:input_麻将游戏_麻将不足]
|
还缺一块麻将 [ID:input_麻将游戏_麻将不足]
|
||||||
依次点击两块麻将可进行交换 [ID:input_麻将游戏_操作规则]
|
依次点击两块麻将可进行交换 [ID:input_麻将游戏_操作规则]
|
||||||
|
缺少药引 [ID:ui_center_notify_c03药车缺少物品]
|
||||||
同种药材只能取出一份 [ID:ui_center_notify_c03药车不能再取药材]
|
同种药材只能取出一份 [ID:ui_center_notify_c03药车不能再取药材]
|
||||||
药材只能放到碗中或原处 [ID:ui_center_notify_c03放到碗中或原处]
|
药材只能放到碗中或原处 [ID:ui_center_notify_c03放到碗中或原处]
|
||||||
从碗口处放入药材 [ID:ui_center_notify_c03碗口放入药材]
|
从碗口处放入药材 [ID:ui_center_notify_c03碗口放入药材]
|
||||||
|
已准备好研磨 [ID:ui_center_notify_c03准备研磨]
|
||||||
|
|
||||||
|
|
||||||
获得道具 [ID:ui_获得道具]
|
获得道具 [ID:ui_获得道具]
|
||||||
@ -334,6 +336,8 @@
|
|||||||
?桌子 [ID:c03_s03_桌子]
|
?桌子 [ID:c03_s03_桌子]
|
||||||
?洗头盆 [ID:c03_s03_洗头盆]
|
?洗头盆 [ID:c03_s03_洗头盆]
|
||||||
?演出结束,刚刚他们? [ID:c03_s03_演出结束]
|
?演出结束,刚刚他们? [ID:c03_s03_演出结束]
|
||||||
|
# 抓药游戏
|
||||||
|
生姜两片{br}竹叶十片去尖{br}经霜三年的甘蔗{br}蟋蟀一对 注:要原配,即本在一窠中者{br}金钱鼠尾辫一副 注:生剪 烧成灰兑水送服 [ID:c03_药方内容]
|
||||||
# s04 李癞房间
|
# s04 李癞房间
|
||||||
# s05 肉铺
|
# s05 肉铺
|
||||||
# s06 胖子卧室
|
# s06 胖子卧室
|
||||||
|
@ -222,12 +222,16 @@ debugging={
|
|||||||
[internationalization]
|
[internationalization]
|
||||||
|
|
||||||
locale/translation_remaps={
|
locale/translation_remaps={
|
||||||
|
"res://asset/art/little_game/c03_药车游戏/标签_英文.png": PackedStringArray("res://asset/art/little_game/c03_药车游戏/标签_中文.png:zh"),
|
||||||
"res://asset/art/ui/note/c02_slices.png": PackedStringArray("res://asset/art/ui/note/c02_slices_en.png:en")
|
"res://asset/art/ui/note/c02_slices.png": PackedStringArray("res://asset/art/ui/note/c02_slices_en.png:en")
|
||||||
}
|
}
|
||||||
locale/translations=PackedStringArray("res://asset/dialogue/c01.zh_CN.translation", "res://asset/dialogue/c02.zh_CN.translation", "res://asset/dialogue/inspect_content.zh_CN.translation", "res://asset/dialogue/item_description.zh_CN.translation", "res://asset/dialogue/names.zh_CN.translation", "res://asset/dialogue/npc.zh_CN.translation", "res://asset/dialogue/c01.zh_SH.translation", "res://asset/dialogue/c01.en.translation", "res://asset/dialogue/c03.zh_CN.translation", "res://asset/dialogue/c04.zh_CN.translation", "res://asset/dialogue/c05.zh_CN.translation", "res://asset/dialogue/c06.zh_CN.translation", "res://asset/dialogue/item_description.en.translation", "res://asset/dialogue/item_description.zh_SH.translation", "res://asset/dialogue/c02.zh_SH.translation", "res://asset/dialogue/npc.zh_SH.translation", "res://asset/dialogue/c02.en.translation", "res://asset/dialogue/inspect_content.en.translation", "res://asset/dialogue/names.en.translation", "res://asset/dialogue/npc.en.translation", "res://asset/dialogue/线索笔记.en.translation", "res://asset/dialogue/线索笔记.zh_CN.translation")
|
locale/translations=PackedStringArray("res://asset/dialogue/c01.zh_CN.translation", "res://asset/dialogue/c02.zh_CN.translation", "res://asset/dialogue/inspect_content.zh_CN.translation", "res://asset/dialogue/item_description.zh_CN.translation", "res://asset/dialogue/names.zh_CN.translation", "res://asset/dialogue/npc.zh_CN.translation", "res://asset/dialogue/c01.zh_SH.translation", "res://asset/dialogue/c01.en.translation", "res://asset/dialogue/c03.zh_CN.translation", "res://asset/dialogue/c04.zh_CN.translation", "res://asset/dialogue/c05.zh_CN.translation", "res://asset/dialogue/c06.zh_CN.translation", "res://asset/dialogue/item_description.en.translation", "res://asset/dialogue/item_description.zh_SH.translation", "res://asset/dialogue/c02.zh_SH.translation", "res://asset/dialogue/npc.zh_SH.translation", "res://asset/dialogue/c02.en.translation", "res://asset/dialogue/inspect_content.en.translation", "res://asset/dialogue/names.en.translation", "res://asset/dialogue/npc.en.translation", "res://asset/dialogue/线索笔记.en.translation", "res://asset/dialogue/线索笔记.zh_CN.translation")
|
||||||
locale/translations_pot_files=PackedStringArray("res://asset/dialogue/item_description.dialogue", "res://asset/dialogue/c01.dialogue", "res://asset/dialogue/c02.dialogue", "res://asset/dialogue/inspect_content.dialogue", "res://asset/dialogue/npc.dialogue", "res://asset/dialogue/c03.dialogue", "res://asset/dialogue/c04.dialogue", "res://asset/dialogue/c05.dialogue", "res://asset/dialogue/c06.dialogue", "res://asset/dialogue/event_stage.dialogue")
|
locale/translations_pot_files=PackedStringArray("res://asset/dialogue/item_description.dialogue", "res://asset/dialogue/c01.dialogue", "res://asset/dialogue/c02.dialogue", "res://asset/dialogue/inspect_content.dialogue", "res://asset/dialogue/npc.dialogue", "res://asset/dialogue/c03.dialogue", "res://asset/dialogue/c04.dialogue", "res://asset/dialogue/c05.dialogue", "res://asset/dialogue/c06.dialogue", "res://asset/dialogue/event_stage.dialogue")
|
||||||
locale/test="zh-Hans"
|
locale/test="zh-Hans"
|
||||||
locale/fallback="zh"
|
locale/fallback="zh"
|
||||||
|
locale/language_filter=["cmn", "en", "eo", "es", "it", "ja", "ko", "tr", "uk", "zh"]
|
||||||
|
locale/locale_filter_mode=1
|
||||||
|
locale/country_filter=["CN", "DE", "ES", "EU", "FR", "GB", "HK", "IT", "JP", "KR", "NO", "NZ", "TR", "TW", "US"]
|
||||||
|
|
||||||
[layer_names]
|
[layer_names]
|
||||||
|
|
||||||
|
@ -32,7 +32,6 @@
|
|||||||
[ext_resource type="Texture2D" uid="uid://0x7cl2cmcs6l" path="res://asset/art/scene/c02/s03_公寓一楼院子/光晕/光晕2.png" id="11_g0qhj"]
|
[ext_resource type="Texture2D" uid="uid://0x7cl2cmcs6l" path="res://asset/art/scene/c02/s03_公寓一楼院子/光晕/光晕2.png" id="11_g0qhj"]
|
||||||
[ext_resource type="Script" uid="uid://3p6e8f385kow" path="res://scene/ground/script/c02/event_2d_xchan_run_after_got_pliers.gd" id="11_lq23y"]
|
[ext_resource type="Script" uid="uid://3p6e8f385kow" path="res://scene/ground/script/c02/event_2d_xchan_run_after_got_pliers.gd" id="11_lq23y"]
|
||||||
[ext_resource type="SpriteFrames" uid="uid://di43shn22n5ph" path="res://asset/art/gif/c00_通用动作/c00_通用动作_frames.tres" id="11_o1qbs"]
|
[ext_resource type="SpriteFrames" uid="uid://di43shn22n5ph" path="res://asset/art/gif/c00_通用动作/c00_通用动作_frames.tres" id="11_o1qbs"]
|
||||||
[ext_resource type="Script" uid="uid://0wjaho6qkg6s" path="res://manager/event_manager/event_binder.gd" id="12_2b6vx"]
|
|
||||||
[ext_resource type="Texture2D" uid="uid://c8b80a75k3qw6" path="res://asset/art/scene/c02/s03_公寓一楼院子/e_院子地上纸钱.png" id="14_qqdxs"]
|
[ext_resource type="Texture2D" uid="uid://c8b80a75k3qw6" path="res://asset/art/scene/c02/s03_公寓一楼院子/e_院子地上纸钱.png" id="14_qqdxs"]
|
||||||
[ext_resource type="Texture2D" uid="uid://douwcahbhr1wt" path="res://asset/art/scene/c02/s03_公寓一楼院子/诡异效果/前侧楼梯_楼梯人群.png" id="18_crgo6"]
|
[ext_resource type="Texture2D" uid="uid://douwcahbhr1wt" path="res://asset/art/scene/c02/s03_公寓一楼院子/诡异效果/前侧楼梯_楼梯人群.png" id="18_crgo6"]
|
||||||
[ext_resource type="Texture2D" uid="uid://dqd645v3k4yar" path="res://asset/art/scene/c02/s03_公寓一楼院子/诡异效果/前侧楼梯_诡异纸人.png" id="19_vddfx"]
|
[ext_resource type="Texture2D" uid="uid://dqd645v3k4yar" path="res://asset/art/scene/c02/s03_公寓一楼院子/诡异效果/前侧楼梯_诡异纸人.png" id="19_vddfx"]
|
||||||
@ -56,6 +55,7 @@
|
|||||||
[ext_resource type="Texture2D" uid="uid://bcc7ni57tohwb" path="res://asset/art/scene/c02/s03_公寓一楼院子/光晕/光晕6.png" id="35_o1qbs"]
|
[ext_resource type="Texture2D" uid="uid://bcc7ni57tohwb" path="res://asset/art/scene/c02/s03_公寓一楼院子/光晕/光晕6.png" id="35_o1qbs"]
|
||||||
[ext_resource type="PackedScene" uid="uid://0sofmhrl358m" path="res://scene/entity/npc.tscn" id="35_plfv5"]
|
[ext_resource type="PackedScene" uid="uid://0sofmhrl358m" path="res://scene/entity/npc.tscn" id="35_plfv5"]
|
||||||
[ext_resource type="Texture2D" uid="uid://uh2ruegr3d7v" path="res://asset/art/gif/c02_一楼火灾/7-最左木箱 烧痕.png" id="36_rnk1v"]
|
[ext_resource type="Texture2D" uid="uid://uh2ruegr3d7v" path="res://asset/art/gif/c02_一楼火灾/7-最左木箱 烧痕.png" id="36_rnk1v"]
|
||||||
|
[ext_resource type="Script" uid="uid://chgyivvdw22cw" path="res://scene/ground/script/c02/s03_event_2d抓药游戏.gd" id="38_g0s7j"]
|
||||||
[ext_resource type="SpriteFrames" uid="uid://b0icyhxpj16tv" path="res://asset/art/gif/c02_谢幕演出/c02_谢幕演出_frames.tres" id="39_rnk1v"]
|
[ext_resource type="SpriteFrames" uid="uid://b0icyhxpj16tv" path="res://asset/art/gif/c02_谢幕演出/c02_谢幕演出_frames.tres" id="39_rnk1v"]
|
||||||
[ext_resource type="PackedScene" uid="uid://cpxt082my5yac" path="res://scene/ground/script/c02/s03_closeup抓药游戏.tscn" id="45_fxne6"]
|
[ext_resource type="PackedScene" uid="uid://cpxt082my5yac" path="res://scene/ground/script/c02/s03_closeup抓药游戏.tscn" id="45_fxne6"]
|
||||||
[ext_resource type="AudioStream" uid="uid://broetvd8vuc05" path="res://asset/audio/peiyin/c02/c02_8小男孩童谣.ogg" id="46_qqdxs"]
|
[ext_resource type="AudioStream" uid="uid://broetvd8vuc05" path="res://asset/audio/peiyin/c02/c02_8小男孩童谣.ogg" id="46_qqdxs"]
|
||||||
@ -652,18 +652,18 @@ z_index = 11
|
|||||||
position = Vector2(1025, 27)
|
position = Vector2(1025, 27)
|
||||||
texture = ExtResource("22_3y5s5")
|
texture = ExtResource("22_3y5s5")
|
||||||
|
|
||||||
[node name="Closeup抓药游戏" parent="Ground/DeployLayer" index="24" instance=ExtResource("23_81juy")]
|
[node name="Event2D抓药游戏" type="Node2D" parent="Ground/DeployLayer" index="24"]
|
||||||
|
script = ExtResource("38_g0s7j")
|
||||||
|
event_name = &"c03_durg_game"
|
||||||
|
event_stages = Array[int]([1])
|
||||||
|
metadata/_custom_type_script = "uid://bkkiyk5jkdw4d"
|
||||||
|
|
||||||
|
[node name="Closeup抓药游戏" parent="Ground/DeployLayer/Event2D抓药游戏" instance=ExtResource("23_81juy")]
|
||||||
position = Vector2(1058, 24)
|
position = Vector2(1058, 24)
|
||||||
packed_scene = ExtResource("45_fxne6")
|
packed_scene = ExtResource("45_fxne6")
|
||||||
|
action_key = 3
|
||||||
collision_width_and_x = Vector2(40, 0)
|
collision_width_and_x = Vector2(40, 0)
|
||||||
|
|
||||||
[node name="EventBinder" type="Node" parent="Ground/DeployLayer/Closeup抓药游戏"]
|
|
||||||
script = ExtResource("12_2b6vx")
|
|
||||||
updater_event = &"current_chapter_stage"
|
|
||||||
updater_stage_mode = "exclude"
|
|
||||||
updater_stages = Array[int]([0, 1, 2])
|
|
||||||
metadata/_custom_type_script = "uid://0wjaho6qkg6s"
|
|
||||||
|
|
||||||
[node name="Closeup敲门游戏" parent="Ground/DeployLayer" index="25" instance=ExtResource("23_81juy")]
|
[node name="Closeup敲门游戏" parent="Ground/DeployLayer" index="25" instance=ExtResource("23_81juy")]
|
||||||
position = Vector2(466, 3)
|
position = Vector2(466, 3)
|
||||||
packed_scene = ExtResource("24_0o4rt")
|
packed_scene = ExtResource("24_0o4rt")
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
[gd_scene load_steps=43 format=3 uid="uid://cp8d3ag5nbjq0"]
|
[gd_scene load_steps=44 format=3 uid="uid://cp8d3ag5nbjq0"]
|
||||||
|
|
||||||
[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_6w6et"]
|
[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_6w6et"]
|
||||||
[ext_resource type="Script" uid="uid://dydpmjpcvt3v1" path="res://scene/ground/scene/c02/s05_一楼内侧楼道.gd" id="2_70lf6"]
|
[ext_resource type="Script" uid="uid://dydpmjpcvt3v1" path="res://scene/ground/scene/c02/s05_一楼内侧楼道.gd" id="2_70lf6"]
|
||||||
@ -30,6 +30,7 @@
|
|||||||
[ext_resource type="AudioStream" uid="uid://bhaws2ungqaf5" path="res://asset/audio/sfx/交互/角色/sfx_哼歌.ogg" id="24_7mq0m"]
|
[ext_resource type="AudioStream" uid="uid://bhaws2ungqaf5" path="res://asset/audio/sfx/交互/角色/sfx_哼歌.ogg" id="24_7mq0m"]
|
||||||
[ext_resource type="Script" uid="uid://wapo47a1oddf" path="res://scene/entity/audio/sfx2d.gd" id="25_4k6pw"]
|
[ext_resource type="Script" uid="uid://wapo47a1oddf" path="res://scene/entity/audio/sfx2d.gd" id="25_4k6pw"]
|
||||||
[ext_resource type="PackedScene" uid="uid://decfqoe5v0y6n" path="res://scene/effect/dizzy_shader.tscn" id="29_74b3r"]
|
[ext_resource type="PackedScene" uid="uid://decfqoe5v0y6n" path="res://scene/effect/dizzy_shader.tscn" id="29_74b3r"]
|
||||||
|
[ext_resource type="Script" uid="uid://bkkiyk5jkdw4d" path="res://manager/event_manager/event2d.gd" id="30_23jkv"]
|
||||||
|
|
||||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_n48fn"]
|
[sub_resource type="AnimationLibrary" id="AnimationLibrary_n48fn"]
|
||||||
|
|
||||||
@ -341,6 +342,11 @@ metadata/_custom_type_script = "uid://wapo47a1oddf"
|
|||||||
position = Vector2(528, 57)
|
position = Vector2(528, 57)
|
||||||
hook_method = "update_1l_map"
|
hook_method = "update_1l_map"
|
||||||
|
|
||||||
|
[node name="Event2D抓药演出" type="Node2D" parent="Ground/DeployLayer" index="22"]
|
||||||
|
position = Vector2(353, 0)
|
||||||
|
script = ExtResource("30_23jkv")
|
||||||
|
metadata/_custom_type_script = "uid://bkkiyk5jkdw4d"
|
||||||
|
|
||||||
[node name="MainPlayer" parent="Ground" index="5"]
|
[node name="MainPlayer" parent="Ground" index="5"]
|
||||||
position = Vector2(41, 98)
|
position = Vector2(41, 98)
|
||||||
player_movement_rect = Rect2(23, -158, 677, 316)
|
player_movement_rect = Rect2(23, -158, 677, 316)
|
||||||
|
@ -3,9 +3,11 @@ extends CanvasLayer
|
|||||||
@warning_ignore("unused_signal")
|
@warning_ignore("unused_signal")
|
||||||
signal exit(arg)
|
signal exit(arg)
|
||||||
|
|
||||||
|
|
||||||
|
@onready var animation_player: AnimationPlayer = %AnimationPlayer
|
||||||
@onready var slot_bowl: Marker2D = %DropSlotBowl
|
@onready var slot_bowl: Marker2D = %DropSlotBowl
|
||||||
@onready var drawers: Array[HoverLightClickArea] = [
|
@onready var drawers: Array[HoverLightClickArea] = [
|
||||||
%Drawer1, %Drawer2, %Drawer3, %Drawer4, %Drawer5, %Drawer6
|
%Drawer1, %Drawer2, %Drawer3, %Drawer4, %Drawer5, %Drawer6, %"Hover蟋蟀", %"Hover粉末"
|
||||||
]
|
]
|
||||||
@onready var draggables: Array[DraggableRigid] = [
|
@onready var draggables: Array[DraggableRigid] = [
|
||||||
%DraggableRigid1,
|
%DraggableRigid1,
|
||||||
@ -13,28 +15,50 @@ signal exit(arg)
|
|||||||
%DraggableRigid3,
|
%DraggableRigid3,
|
||||||
%DraggableRigid4,
|
%DraggableRigid4,
|
||||||
%DraggableRigid5,
|
%DraggableRigid5,
|
||||||
%DraggableRigid6
|
%DraggableRigid6,
|
||||||
|
%DraggableRigid7,
|
||||||
|
%DraggableRigid8
|
||||||
]
|
]
|
||||||
|
|
||||||
@onready var sfx_picked = $SfxPicked as AudioStreamPlayer
|
@onready var sfx_picked = $SfxPicked as Sfx
|
||||||
@onready var sfx_invalid_drop = $SfxInvalidDrop as AudioStreamPlayer
|
@onready var sfx_invalid_drop = $SfxInvalidDrop as Sfx
|
||||||
@onready var sfx_dropped = $SfxDropped as AudioStreamPlayer
|
@onready var sfx_dropped = $SfxDropped as Sfx
|
||||||
@onready var sfx_ready_to_grind = $SfxReadyToGrind as AudioStreamPlayer
|
@onready var sfx_ready_to_grind = $SfxReadyToGrind as Sfx
|
||||||
|
@onready var sfx_ingredients_ready = $SfxIngredientsReady as Sfx
|
||||||
|
@onready var sfx_toggle_grinder = $SfxToggleGrinder as Sfx
|
||||||
|
@onready var sfx_grinding = $SfxGrinding as Sfx
|
||||||
|
@onready var sfx_packing = $SfxPacking as Sfx
|
||||||
|
|
||||||
|
@onready var inspect_content = %"InspectContent" as Control
|
||||||
|
@onready var hover_spec = %"Hover药方" as HoverLightClickArea
|
||||||
|
@onready var hover_grinder = %"Hover石臼棒" as HoverLightClickArea
|
||||||
|
@onready var hover_finished_powder = %"Hover完成的药粉" as HoverLightClickArea
|
||||||
|
|
||||||
const correct_ingredients = [0, 4, 6] # 生姜,竹叶,甘蔗
|
|
||||||
|
const correct_ingredients = [0, 3, 5, 6, 7] # 生姜,竹叶,甘蔗, 蟋蟀, 粉末
|
||||||
var picked_ingredients: Array[int] = []
|
var picked_ingredients: Array[int] = []
|
||||||
var holding_ingredient := -1
|
var holding_ingredient := -1
|
||||||
var all_picked = false
|
var all_picked = false
|
||||||
|
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
layer = GlobalConfig.CANVAS_LAYER_LITTLE_GAME
|
layer = GlobalConfig.CANVAS_LAYER_LITTLE_GAME
|
||||||
for i in 6:
|
for i in drawers.size():
|
||||||
toggle_draggable_visible(i, false)
|
toggle_draggable_visible(i, false)
|
||||||
var drawer = drawers[i]
|
var drawer = drawers[i]
|
||||||
drawer.interacted.connect(_on_drawer_interacted.bind(i))
|
drawer.interacted.connect(_on_drawer_interacted.bind(i))
|
||||||
var drag = draggables[i]
|
var drag = draggables[i]
|
||||||
drag.picked.connect(_on_picked.bind(i))
|
drag.picked.connect(_on_picked.bind(i))
|
||||||
drag.dropped.connect(_on_dropped.bind(i))
|
drag.dropped.connect(_on_dropped.bind(i))
|
||||||
|
hover_spec.interacted.connect(_on_spec_interacted)
|
||||||
|
if not SceneManager.has_prop("prop_剪下的辫子"):
|
||||||
|
_freezing_drawers()
|
||||||
|
SceneManager.pop_center_notification("ui_center_notify_c03药车缺少物品")
|
||||||
|
|
||||||
|
|
||||||
|
func _on_spec_interacted() -> void:
|
||||||
|
hover_spec.hide()
|
||||||
|
inspect_content.show()
|
||||||
|
|
||||||
|
|
||||||
func toggle_draggable_freeze(freezing := true):
|
func toggle_draggable_freeze(freezing := true):
|
||||||
@ -54,6 +78,7 @@ var has_notified_put_to_bowl = false
|
|||||||
func _on_drawer_interacted(id: int):
|
func _on_drawer_interacted(id: int):
|
||||||
if picked_ingredients.has(id) or holding_ingredient > 0:
|
if picked_ingredients.has(id) or holding_ingredient > 0:
|
||||||
$SfxPickFailed.play()
|
$SfxPickFailed.play()
|
||||||
|
drawers[id].invalid_blink()
|
||||||
SceneManager.pop_center_notification("ui_center_notify_c03药车不能再取药材")
|
SceneManager.pop_center_notification("ui_center_notify_c03药车不能再取药材")
|
||||||
else:
|
else:
|
||||||
if not has_notified_put_to_bowl:
|
if not has_notified_put_to_bowl:
|
||||||
@ -68,7 +93,12 @@ func _on_drawer_interacted(id: int):
|
|||||||
func _on_picked(_node: DraggableRigid, id: int):
|
func _on_picked(_node: DraggableRigid, id: int):
|
||||||
$SfxPicked.play()
|
$SfxPicked.play()
|
||||||
if holding_ingredient > 0 and holding_ingredient != id:
|
if holding_ingredient > 0 and holding_ingredient != id:
|
||||||
printerr("DraggableRigid _on_picked: holding_ingredient=", holding_ingredient, " but picked id=", id)
|
printerr(
|
||||||
|
"DraggableRigid _on_picked: holding_ingredient=",
|
||||||
|
holding_ingredient,
|
||||||
|
" but picked id=",
|
||||||
|
id
|
||||||
|
)
|
||||||
picked_ingredients.erase(id)
|
picked_ingredients.erase(id)
|
||||||
holding_ingredient = id
|
holding_ingredient = id
|
||||||
|
|
||||||
@ -79,13 +109,14 @@ func _on_dropped(node: DraggableRigid, id: int):
|
|||||||
if dropping_position.x < 210:
|
if dropping_position.x < 210:
|
||||||
dropped = true
|
dropped = true
|
||||||
picked_ingredients.append(id)
|
picked_ingredients.append(id)
|
||||||
|
if GlobalConfig.DEBUG:
|
||||||
|
print("picked_ingredients updated:", picked_ingredients)
|
||||||
else:
|
else:
|
||||||
# 判断是否对应到 slots 在 limit_squared 范围内
|
# 判断是否对应到 slots 在 limit_squared 范围内
|
||||||
var drawer = drawers[id]
|
var drawer = drawers[id]
|
||||||
if drawer.is_focused():
|
if drawer.is_focused():
|
||||||
holding_ingredient = -1
|
holding_ingredient = -1
|
||||||
dropped = true
|
dropped = true
|
||||||
node.update_position(drawer.global_position)
|
|
||||||
toggle_draggable_visible(id, false)
|
toggle_draggable_visible(id, false)
|
||||||
else:
|
else:
|
||||||
for d in drawers:
|
for d in drawers:
|
||||||
@ -104,7 +135,7 @@ func _on_dropped(node: DraggableRigid, id: int):
|
|||||||
if all_picked:
|
if all_picked:
|
||||||
print(picked_ingredients)
|
print(picked_ingredients)
|
||||||
# 全部插入,stage 进入下一阶段
|
# 全部插入,stage 进入下一阶段
|
||||||
sfx_ready_to_grind.play()
|
sfx_ingredients_ready.play()
|
||||||
_setup_on_ready_to_grind()
|
_setup_on_ready_to_grind()
|
||||||
else:
|
else:
|
||||||
sfx_dropped.play()
|
sfx_dropped.play()
|
||||||
@ -115,8 +146,60 @@ func _on_dropped(node: DraggableRigid, id: int):
|
|||||||
sfx_invalid_drop.play()
|
sfx_invalid_drop.play()
|
||||||
|
|
||||||
|
|
||||||
func _setup_on_ready_to_grind() -> void:
|
func _freezing_drawers() -> void:
|
||||||
toggle_draggable_freeze(true)
|
|
||||||
# 禁用 drawer
|
# 禁用 drawer
|
||||||
for d in drawers:
|
for d in drawers:
|
||||||
d.freezing = true
|
d.freezing = true
|
||||||
|
|
||||||
|
|
||||||
|
func _setup_on_ready_to_grind() -> void:
|
||||||
|
toggle_draggable_freeze(true)
|
||||||
|
_freezing_drawers()
|
||||||
|
_process_grinding()
|
||||||
|
var p = get_parent() as Closeup2D
|
||||||
|
if p:
|
||||||
|
p.hold_cancel_before_exit()
|
||||||
|
|
||||||
|
|
||||||
|
func _process_grinding() -> void:
|
||||||
|
hover_spec.freezing = true
|
||||||
|
hover_spec.show()
|
||||||
|
inspect_content.hide()
|
||||||
|
SceneManager.pop_center_notification("ui_center_notify_c03准备研磨")
|
||||||
|
sfx_ready_to_grind.play()
|
||||||
|
hover_grinder.freezing = false
|
||||||
|
await hover_grinder.interacted
|
||||||
|
hover_grinder.freezing = true
|
||||||
|
animation_player.play("intro_grinding")
|
||||||
|
sfx_toggle_grinder.play()
|
||||||
|
await animation_player.animation_finished
|
||||||
|
hover_finished_powder.freezing = false
|
||||||
|
hover_finished_powder.interacted.connect(_on_finished_powder_interacted, CONNECT_ONE_SHOT)
|
||||||
|
|
||||||
|
|
||||||
|
func _on_finished_powder_interacted() -> void:
|
||||||
|
var packing_paper = $"洞中药纸"
|
||||||
|
sfx_packing.play()
|
||||||
|
var tween = create_tween()
|
||||||
|
tween.tween_property(packing_paper, "modulate:a", 0.0, 1.0)
|
||||||
|
tween = create_tween()
|
||||||
|
tween.tween_interval(0.5)
|
||||||
|
tween.tween_property(hover_finished_powder, "modulate:a", 0.0, 0.5)
|
||||||
|
tween.tween_callback(SceneManager.enable_prop_item.bind("prop_药包"))
|
||||||
|
tween.tween_callback(exit.emit.bind(true))
|
||||||
|
|
||||||
|
|
||||||
|
func ingredients_fading_out() -> void:
|
||||||
|
var tween = create_tween()
|
||||||
|
tween.tween_interval(0.01)
|
||||||
|
for i in drawers.size():
|
||||||
|
tween.parallel().tween_property(draggables[i], "modulate:a", 0.0, 3.0)
|
||||||
|
for i in drawers.size():
|
||||||
|
tween.tween_callback(draggables[i].queue_free)
|
||||||
|
|
||||||
|
|
||||||
|
func _unhandled_input(event: InputEvent) -> void:
|
||||||
|
if event.is_action_pressed("cancel") and inspect_content.visible:
|
||||||
|
get_viewport().set_input_as_handled()
|
||||||
|
hover_spec.show()
|
||||||
|
inspect_content.hide()
|
||||||
|
@ -1,26 +1,220 @@
|
|||||||
[gd_scene load_steps=31 format=3 uid="uid://cpxt082my5yac"]
|
[gd_scene load_steps=59 format=3 uid="uid://cpxt082my5yac"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://dj2b4f3soxki5" path="res://scene/ground/script/c02/s03_closeup抓药游戏.gd" id="1_0wbm3"]
|
[ext_resource type="Script" uid="uid://dj2b4f3soxki5" path="res://scene/ground/script/c02/s03_closeup抓药游戏.gd" id="1_0wbm3"]
|
||||||
[ext_resource type="Texture2D" uid="uid://c1704t86t55cr" path="res://asset/art/little_game/c03_药车游戏/参考图.png" id="2_0wbm3"]
|
[ext_resource type="Texture2D" uid="uid://bs4npq7fnwjhw" path="res://asset/art/little_game/c03_药车游戏/背景底图.png" id="2_5ts1i"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://cbql1i4hblmt1" path="res://asset/art/ui/遮罩/inspect特写通用遮罩.png" id="2_wtw10"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://c78ox8ynkdvdx" path="res://asset/art/little_game/c03_药车游戏/石臼单独.png" id="3_dv1g7"]
|
||||||
[ext_resource type="PackedScene" uid="uid://dmysq4sxx8iqh" path="res://scene/entity/ux/content_inspector.tscn" id="3_h2dug"]
|
[ext_resource type="PackedScene" uid="uid://dmysq4sxx8iqh" path="res://scene/entity/ux/content_inspector.tscn" id="3_h2dug"]
|
||||||
[ext_resource type="Texture2D" uid="uid://nil1tps2bcwg" path="res://asset/art/little_game/c03_药车游戏/碗完整.png" id="3_nugkd"]
|
[ext_resource type="Texture2D" uid="uid://nil1tps2bcwg" path="res://asset/art/little_game/c03_药车游戏/碗完整.png" id="3_nugkd"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://c5q0o3aiiwg86" path="res://asset/art/little_game/c03_药车游戏/捣药棒竖.png" id="4_8leof"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://dm44hxapmdael" path="res://asset/art/little_game/c03_药车游戏/捣药棒(石臼中).png" id="4_j2sy5"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://bagdbej72i006" path="res://asset/art/little_game/c03_药车游戏/竹筐蟋蟀.png" id="5_6mqrq"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://5qrlqm1moo3s" path="res://asset/art/little_game/c03_药车游戏/石臼前侧.png" id="5_ctou3"]
|
||||||
[ext_resource type="Texture2D" uid="uid://f186lvt5y2ql" path="res://asset/art/ui/遮罩/inspect背景遮罩.png" id="5_qafag"]
|
[ext_resource type="Texture2D" uid="uid://f186lvt5y2ql" path="res://asset/art/ui/遮罩/inspect背景遮罩.png" id="5_qafag"]
|
||||||
[ext_resource type="Script" uid="uid://rq6w1vuhuq1m" path="res://scene/entity/audio/sfx.gd" id="6_0wbm3"]
|
[ext_resource type="Script" uid="uid://rq6w1vuhuq1m" path="res://scene/entity/audio/sfx.gd" id="6_0wbm3"]
|
||||||
[ext_resource type="AudioStream" uid="uid://bbe0mq32pms3v" path="res://asset/audio/effect/impact/impactPlank_medium_002.ogg" id="6_aqv3v"]
|
[ext_resource type="AudioStream" uid="uid://bbe0mq32pms3v" path="res://asset/audio/effect/impact/impactPlank_medium_002.ogg" id="6_aqv3v"]
|
||||||
[ext_resource type="Script" uid="uid://dpocj5al0rvai" path="res://ui/text_helper.gd" id="6_y0m4i"]
|
[ext_resource type="Script" uid="uid://dpocj5al0rvai" path="res://ui/text_helper.gd" id="6_y0m4i"]
|
||||||
[ext_resource type="AudioStream" uid="uid://cx3dugjvb4142" path="res://asset/audio/effect/impact/impactWood_light_001.ogg" id="7_flc3m"]
|
[ext_resource type="AudioStream" uid="uid://cx3dugjvb4142" path="res://asset/audio/effect/impact/impactWood_light_001.ogg" id="7_flc3m"]
|
||||||
[ext_resource type="PackedScene" uid="uid://c3gesto3ijcyq" path="res://scene/little_game/general/draggable_rigid.tscn" id="7_lv3nw"]
|
[ext_resource type="PackedScene" uid="uid://c3gesto3ijcyq" path="res://scene/little_game/general/draggable_rigid.tscn" id="7_lv3nw"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://bykchi6rjrl4a" path="res://asset/art/little_game/c03_药车游戏/药方.png" id="7_otneu"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://b6oh1cyi1fb54" path="res://asset/art/little_game/c03_药车游戏/框内黑色粉末.png" id="8_kbm4v"]
|
||||||
[ext_resource type="Texture2D" uid="uid://hsignnm14m86" path="res://asset/art/little_game/c03_药车游戏/生姜.png" id="8_lv3nw"]
|
[ext_resource type="Texture2D" uid="uid://hsignnm14m86" path="res://asset/art/little_game/c03_药车游戏/生姜.png" id="8_lv3nw"]
|
||||||
[ext_resource type="AudioStream" uid="uid://0i2xcuon17va" path="res://asset/audio/effect/impact/impactBell_heavy_002.ogg" id="9_8lx66"]
|
[ext_resource type="AudioStream" uid="uid://0i2xcuon17va" path="res://asset/audio/effect/impact/impactBell_heavy_002.ogg" id="9_8lx66"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://g6i61gj85w66" path="res://asset/art/little_game/c03_药车游戏/第1格.png" id="9_i3023"]
|
||||||
[ext_resource type="Texture2D" uid="uid://kmjw6xi8sufe" path="res://asset/art/little_game/c03_药车游戏/茯苓.png" id="9_igyl7"]
|
[ext_resource type="Texture2D" uid="uid://kmjw6xi8sufe" path="res://asset/art/little_game/c03_药车游戏/茯苓.png" id="9_igyl7"]
|
||||||
[ext_resource type="AudioStream" uid="uid://gxoubqjqpuks" path="res://asset/audio/sfx/交互/序章/04_书店内_点击书本.ogg" id="10_aqv3v"]
|
[ext_resource type="AudioStream" uid="uid://gxoubqjqpuks" path="res://asset/audio/sfx/交互/序章/04_书店内_点击书本.ogg" id="10_aqv3v"]
|
||||||
[ext_resource type="Texture2D" uid="uid://da5gf0n8qgyq0" path="res://asset/art/little_game/c03_药车游戏/黄岑.png" id="10_nugkd"]
|
[ext_resource type="Texture2D" uid="uid://da5gf0n8qgyq0" path="res://asset/art/little_game/c03_药车游戏/黄岑.png" id="10_nugkd"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://c5j4i6lkuqh3x" path="res://asset/art/little_game/c03_药车游戏/第2格.png" id="10_wvyjr"]
|
||||||
[ext_resource type="Texture2D" uid="uid://xkf7pjxngrkc" path="res://asset/art/little_game/c03_药车游戏/竹叶.png" id="11_bmmll"]
|
[ext_resource type="Texture2D" uid="uid://xkf7pjxngrkc" path="res://asset/art/little_game/c03_药车游戏/竹叶.png" id="11_bmmll"]
|
||||||
[ext_resource type="AudioStream" uid="uid://i744r3cpknpe" path="res://asset/audio/effect/impact/impactBell_heavy_000.ogg" id="11_jwgdn"]
|
[ext_resource type="AudioStream" uid="uid://i744r3cpknpe" path="res://asset/audio/effect/impact/impactBell_heavy_000.ogg" id="11_jwgdn"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://eikp4cro2dug" path="res://asset/art/little_game/c03_药车游戏/第3格.png" id="11_pcsd2"]
|
||||||
[ext_resource type="Texture2D" uid="uid://bxmbmtmndc656" path="res://asset/art/little_game/c03_药车游戏/金银花.png" id="12_12r3p"]
|
[ext_resource type="Texture2D" uid="uid://bxmbmtmndc656" path="res://asset/art/little_game/c03_药车游戏/金银花.png" id="12_12r3p"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://nv8312yg3gx3" path="res://asset/art/little_game/c03_药车游戏/第4格.png" id="12_gf0xj"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://cc10kf65rd5br" path="res://asset/art/little_game/c03_药车游戏/第5格.png" id="13_26hqw"]
|
||||||
[ext_resource type="Texture2D" uid="uid://phb40d686c16" path="res://asset/art/little_game/c03_药车游戏/甘蔗.png" id="13_x7amv"]
|
[ext_resource type="Texture2D" uid="uid://phb40d686c16" path="res://asset/art/little_game/c03_药车游戏/甘蔗.png" id="13_x7amv"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://dli2dahffsmk6" path="res://asset/art/little_game/c03_药车游戏/第6格.png" id="14_wdf7x"]
|
||||||
[ext_resource type="Texture2D" uid="uid://ci5u7n7ws07ws" path="res://asset/art/little_game/c03_药车游戏/ux_碗前遮挡_扩张.png" id="15_nugkd"]
|
[ext_resource type="Texture2D" uid="uid://ci5u7n7ws07ws" path="res://asset/art/little_game/c03_药车游戏/ux_碗前遮挡_扩张.png" id="15_nugkd"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://bknyukxevd2lw" path="res://asset/art/little_game/c03_药车游戏/标签_英文.png" id="15_wvyjr"]
|
||||||
[ext_resource type="PackedScene" uid="uid://bkk1rxx36ghrl" path="res://scene/entity/ux/hover_light_click_area.tscn" id="20_8lx66"]
|
[ext_resource type="PackedScene" uid="uid://bkk1rxx36ghrl" path="res://scene/entity/ux/hover_light_click_area.tscn" id="20_8lx66"]
|
||||||
|
[ext_resource type="AudioStream" uid="uid://b1ka1gwskwqa6" path="res://asset/audio/effect/impact/impactGeneric_light_004.ogg" id="24_vnme8"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://r2idykchn6re" path="res://asset/art/prop/c03/ux_药方.png" id="25_gonyp"]
|
||||||
|
[ext_resource type="AudioStream" uid="uid://44slgncnt6sj" path="res://asset/audio/sfx/交互/第一章/sfx_手交互成功.ogg" id="25_vnme8"]
|
||||||
|
[ext_resource type="AudioStream" uid="uid://bs3hohq8pftc7" path="res://asset/audio/effect/impact/fire_impact_short.ogg" id="26_ctou3"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://e4q2o6x1gtvo" path="res://asset/art/little_game/c03_药车游戏/完成药粉.png" id="29_26hqw"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://due28st4b4e01" path="res://asset/art/little_game/c03_药车游戏/洞中药纸.png" id="30_8leof"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://b5ibixjn6oikx" path="res://asset/art/little_game/c03_药车游戏/黑色粉末单独.png" id="32_gf0xj"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://bq1ilitkvodnr" path="res://asset/art/little_game/c03_药车游戏/蟋蟀单独.png" id="33_26hqw"]
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id="Animation_wdf7x"]
|
||||||
|
length = 0.001
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/path = NodePath("Hover石臼棒:position")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Vector2(205, 58)]
|
||||||
|
}
|
||||||
|
tracks/1/type = "value"
|
||||||
|
tracks/1/imported = false
|
||||||
|
tracks/1/enabled = true
|
||||||
|
tracks/1/path = NodePath("Hover石臼棒: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("Hover石臼棒:z_index")
|
||||||
|
tracks/2/interp = 1
|
||||||
|
tracks/2/loop_wrap = true
|
||||||
|
tracks/2/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [0]
|
||||||
|
}
|
||||||
|
tracks/3/type = "value"
|
||||||
|
tracks/3/imported = false
|
||||||
|
tracks/3/enabled = true
|
||||||
|
tracks/3/path = NodePath("SfxGrinding:playing")
|
||||||
|
tracks/3/interp = 1
|
||||||
|
tracks/3/loop_wrap = true
|
||||||
|
tracks/3/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [false]
|
||||||
|
}
|
||||||
|
tracks/4/type = "value"
|
||||||
|
tracks/4/imported = false
|
||||||
|
tracks/4/enabled = true
|
||||||
|
tracks/4/path = NodePath("完成的药粉:modulate")
|
||||||
|
tracks/4/interp = 1
|
||||||
|
tracks/4/loop_wrap = true
|
||||||
|
tracks/4/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Color(1, 1, 1, 0)]
|
||||||
|
}
|
||||||
|
tracks/5/type = "value"
|
||||||
|
tracks/5/imported = false
|
||||||
|
tracks/5/enabled = true
|
||||||
|
tracks/5/path = NodePath("洞中药纸:modulate")
|
||||||
|
tracks/5/interp = 1
|
||||||
|
tracks/5/loop_wrap = true
|
||||||
|
tracks/5/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Color(1, 1, 1, 1)]
|
||||||
|
}
|
||||||
|
tracks/6/type = "value"
|
||||||
|
tracks/6/imported = false
|
||||||
|
tracks/6/enabled = true
|
||||||
|
tracks/6/path = NodePath("SfxPacking:playing")
|
||||||
|
tracks/6/interp = 1
|
||||||
|
tracks/6/loop_wrap = true
|
||||||
|
tracks/6/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [false]
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id="Animation_26hqw"]
|
||||||
|
resource_name = "intro_grinding"
|
||||||
|
length = 8.0
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/path = NodePath("Hover石臼棒:position")
|
||||||
|
tracks/0/interp = 2
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"times": PackedFloat32Array(0, 0.7, 1.36667, 2, 3, 3.33333, 3.8, 4.33333, 4.66667, 5.26667, 5.93333, 6.46667, 7, 7.7),
|
||||||
|
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Vector2(205, 58), Vector2(170, 33), Vector2(169, 9), Vector2(132, 53), Vector2(134, 113), Vector2(131, 78), Vector2(132, 53), Vector2(134, 113), Vector2(131, 78), Vector2(132, 53), Vector2(134, 113), Vector2(131, 51), Vector2(171, -3.99999), Vector2(203, 57)]
|
||||||
|
}
|
||||||
|
tracks/1/type = "value"
|
||||||
|
tracks/1/imported = false
|
||||||
|
tracks/1/enabled = true
|
||||||
|
tracks/1/path = NodePath("Hover石臼棒:rotation")
|
||||||
|
tracks/1/interp = 1
|
||||||
|
tracks/1/loop_wrap = true
|
||||||
|
tracks/1/keys = {
|
||||||
|
"times": PackedFloat32Array(0, 0.7, 7, 7.73333),
|
||||||
|
"transitions": PackedFloat32Array(1, 1, 1, 1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [0.0, -0.614241, -0.614241, 0.0]
|
||||||
|
}
|
||||||
|
tracks/2/type = "value"
|
||||||
|
tracks/2/imported = false
|
||||||
|
tracks/2/enabled = true
|
||||||
|
tracks/2/path = NodePath("Hover石臼棒:z_index")
|
||||||
|
tracks/2/interp = 1
|
||||||
|
tracks/2/loop_wrap = true
|
||||||
|
tracks/2/keys = {
|
||||||
|
"times": PackedFloat32Array(0, 1.4, 7.1),
|
||||||
|
"transitions": PackedFloat32Array(1, 1, 1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [0, 1, 0]
|
||||||
|
}
|
||||||
|
tracks/3/type = "value"
|
||||||
|
tracks/3/imported = false
|
||||||
|
tracks/3/enabled = true
|
||||||
|
tracks/3/path = NodePath("SfxGrinding:playing")
|
||||||
|
tracks/3/interp = 1
|
||||||
|
tracks/3/loop_wrap = true
|
||||||
|
tracks/3/keys = {
|
||||||
|
"times": PackedFloat32Array(2.8, 4.2, 5.73333),
|
||||||
|
"transitions": PackedFloat32Array(1, 1, 1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [true, true, true]
|
||||||
|
}
|
||||||
|
tracks/4/type = "value"
|
||||||
|
tracks/4/imported = false
|
||||||
|
tracks/4/enabled = true
|
||||||
|
tracks/4/path = NodePath("完成的药粉:modulate")
|
||||||
|
tracks/4/interp = 1
|
||||||
|
tracks/4/loop_wrap = true
|
||||||
|
tracks/4/keys = {
|
||||||
|
"times": PackedFloat32Array(3.2, 5.9),
|
||||||
|
"transitions": PackedFloat32Array(1, 1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)]
|
||||||
|
}
|
||||||
|
tracks/5/type = "method"
|
||||||
|
tracks/5/imported = false
|
||||||
|
tracks/5/enabled = true
|
||||||
|
tracks/5/path = NodePath(".")
|
||||||
|
tracks/5/interp = 1
|
||||||
|
tracks/5/loop_wrap = true
|
||||||
|
tracks/5/keys = {
|
||||||
|
"times": PackedFloat32Array(3.33333),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"values": [{
|
||||||
|
"args": [],
|
||||||
|
"method": &"ingredients_fading_out"
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="AnimationLibrary" id="AnimationLibrary_wdf7x"]
|
||||||
|
_data = {
|
||||||
|
&"RESET": SubResource("Animation_wdf7x"),
|
||||||
|
&"intro_grinding": SubResource("Animation_26hqw")
|
||||||
|
}
|
||||||
|
|
||||||
[sub_resource type="Gradient" id="Gradient_aqv3v"]
|
[sub_resource type="Gradient" id="Gradient_aqv3v"]
|
||||||
offsets = PackedFloat32Array(0.0291971, 0.782482, 1)
|
offsets = PackedFloat32Array(0.0291971, 0.782482, 1)
|
||||||
@ -52,8 +246,22 @@ radius = 14.0
|
|||||||
[sub_resource type="CircleShape2D" id="CircleShape2D_8lx66"]
|
[sub_resource type="CircleShape2D" id="CircleShape2D_8lx66"]
|
||||||
radius = 15.0
|
radius = 15.0
|
||||||
|
|
||||||
|
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_ctou3"]
|
||||||
|
radius = 7.0
|
||||||
|
height = 29.0
|
||||||
|
|
||||||
|
[sub_resource type="CircleShape2D" id="CircleShape2D_ujbuy"]
|
||||||
|
radius = 15.0
|
||||||
|
|
||||||
[node name="Closeup抓药游戏" type="CanvasLayer"]
|
[node name="Closeup抓药游戏" type="CanvasLayer"]
|
||||||
script = ExtResource("1_0wbm3")
|
script = ExtResource("1_0wbm3")
|
||||||
|
metadata/_edit_horizontal_guides_ = [143.0]
|
||||||
|
|
||||||
|
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
libraries = {
|
||||||
|
&"": SubResource("AnimationLibrary_wdf7x")
|
||||||
|
}
|
||||||
|
|
||||||
[node name="BG" type="TextureRect" parent="."]
|
[node name="BG" type="TextureRect" parent="."]
|
||||||
light_mask = 5
|
light_mask = 5
|
||||||
@ -62,12 +270,115 @@ anchor_right = 1.0
|
|||||||
anchor_bottom = 1.0
|
anchor_bottom = 1.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
texture = ExtResource("2_0wbm3")
|
texture = ExtResource("2_5ts1i")
|
||||||
|
|
||||||
[node name="碗完整" type="Sprite2D" parent="BG"]
|
[node name="石臼" type="Sprite2D" parent="."]
|
||||||
visible = false
|
position = Vector2(117, 62)
|
||||||
position = Vector2(142, 187)
|
texture = ExtResource("3_dv1g7")
|
||||||
|
centered = false
|
||||||
|
|
||||||
|
[node name="竹筐蟋蟀" type="Sprite2D" parent="."]
|
||||||
|
light_mask = 5
|
||||||
|
position = Vector2(9, 38)
|
||||||
|
texture = ExtResource("5_6mqrq")
|
||||||
|
centered = false
|
||||||
|
|
||||||
|
[node name="Hover石臼棒" parent="." instance=ExtResource("20_8lx66")]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
position = Vector2(205, 58)
|
||||||
|
freezing = true
|
||||||
|
|
||||||
|
[node name="PointLight2D" type="PointLight2D" parent="Hover石臼棒"]
|
||||||
|
position = Vector2(-13, 7)
|
||||||
|
energy = 2.0
|
||||||
|
range_layer_max = 10
|
||||||
|
range_item_cull_mask = 4
|
||||||
|
texture = ExtResource("4_j2sy5")
|
||||||
|
|
||||||
|
[node name="石杵" type="Sprite2D" parent="Hover石臼棒"]
|
||||||
|
light_mask = 5
|
||||||
|
position = Vector2(2, -36)
|
||||||
|
rotation = 0.571752
|
||||||
|
texture = ExtResource("4_8leof")
|
||||||
|
centered = false
|
||||||
|
|
||||||
|
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Hover石臼棒"]
|
||||||
|
show_behind_parent = true
|
||||||
|
position = Vector2(-49, -31)
|
||||||
|
polygon = PackedVector2Array(69, 0.2, 67, 0, 45, 0, 43, 3, 41, 3, 41, 14.3, 0, 69, 0, 75, 38.6, 75, 44.9, 68, 46.2, 68, 64, 32.5, 64, 30.8, 71.7, 24, 72, 4.4, 69, 2)
|
||||||
|
|
||||||
|
[node name="石臼前侧" type="Sprite2D" parent="."]
|
||||||
|
position = Vector2(117, 62)
|
||||||
|
texture = ExtResource("5_ctou3")
|
||||||
|
centered = false
|
||||||
|
|
||||||
|
[node name="Hover药方" parent="." instance=ExtResource("20_8lx66")]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
position = Vector2(328, 218)
|
||||||
|
|
||||||
|
[node name="PointLight2D" type="PointLight2D" parent="Hover药方"]
|
||||||
|
position = Vector2(-6, 10)
|
||||||
|
energy = 0.6
|
||||||
|
range_layer_max = 10
|
||||||
|
range_item_cull_mask = 4
|
||||||
|
texture = ExtResource("7_otneu")
|
||||||
|
|
||||||
|
[node name="药方" type="Sprite2D" parent="Hover药方"]
|
||||||
|
light_mask = 5
|
||||||
|
position = Vector2(-111, -65)
|
||||||
|
texture = ExtResource("7_otneu")
|
||||||
|
centered = false
|
||||||
|
|
||||||
|
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Hover药方"]
|
||||||
|
position = Vector2(-111, -65)
|
||||||
|
polygon = PackedVector2Array(210, 0, 156.6, 0, 154, 0.1, 154, 0.9, 124, 0, 54, 0, 54, 0.7, 20, 105.7, 20, 107.5, 4, 141.6, 4, 142.7, 0, 144.7, 0, 150, 168.8, 150, 181.9, 136, 183.2, 136, 193.2, 117, 194.7, 117, 198, 97.2, 198, 87.6, 201.1, 83, 202.3, 83, 203.4, 80.5, 200, 77.1, 200, 76, 202, 69.3, 202, 67.1, 205, 65.1, 205, 60.9, 202, 58.9, 202, 55, 203, 55, 203, 47.2, 205.5, 46, 209.2, 46, 205, 37.5, 205, 35, 210, 35, 210, 32.5, 207, 26.5, 207, 24.2, 210, 14.6)
|
||||||
|
|
||||||
|
[node name="碗" type="Sprite2D" parent="."]
|
||||||
|
position = Vector2(38, 124.5)
|
||||||
texture = ExtResource("3_nugkd")
|
texture = ExtResource("3_nugkd")
|
||||||
|
centered = false
|
||||||
|
|
||||||
|
[node name="柜格1" type="Sprite2D" parent="."]
|
||||||
|
light_mask = 5
|
||||||
|
position = Vector2(259, 36)
|
||||||
|
texture = ExtResource("9_i3023")
|
||||||
|
centered = false
|
||||||
|
|
||||||
|
[node name="柜格2" type="Sprite2D" parent="."]
|
||||||
|
light_mask = 5
|
||||||
|
position = Vector2(364, 35)
|
||||||
|
texture = ExtResource("10_wvyjr")
|
||||||
|
centered = false
|
||||||
|
|
||||||
|
[node name="柜格3" type="Sprite2D" parent="."]
|
||||||
|
light_mask = 5
|
||||||
|
position = Vector2(467, 36)
|
||||||
|
texture = ExtResource("11_pcsd2")
|
||||||
|
centered = false
|
||||||
|
|
||||||
|
[node name="柜格4" type="Sprite2D" parent="."]
|
||||||
|
light_mask = 5
|
||||||
|
position = Vector2(259, 96)
|
||||||
|
texture = ExtResource("12_gf0xj")
|
||||||
|
centered = false
|
||||||
|
|
||||||
|
[node name="柜格5" type="Sprite2D" parent="."]
|
||||||
|
light_mask = 5
|
||||||
|
position = Vector2(361, 98)
|
||||||
|
texture = ExtResource("13_26hqw")
|
||||||
|
centered = false
|
||||||
|
|
||||||
|
[node name="柜格6" type="Sprite2D" parent="."]
|
||||||
|
light_mask = 5
|
||||||
|
position = Vector2(465, 98)
|
||||||
|
texture = ExtResource("14_wdf7x")
|
||||||
|
centered = false
|
||||||
|
|
||||||
|
[node name="标签" type="Sprite2D" parent="."]
|
||||||
|
light_mask = 5
|
||||||
|
position = Vector2(293, 56)
|
||||||
|
texture = ExtResource("15_wvyjr")
|
||||||
|
centered = false
|
||||||
|
|
||||||
[node name="SfxPicked" type="AudioStreamPlayer" parent="."]
|
[node name="SfxPicked" type="AudioStreamPlayer" parent="."]
|
||||||
stream = ExtResource("7_flc3m")
|
stream = ExtResource("7_flc3m")
|
||||||
@ -93,12 +404,36 @@ bus = &"game_sfx"
|
|||||||
script = ExtResource("6_0wbm3")
|
script = ExtResource("6_0wbm3")
|
||||||
metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
|
metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
|
||||||
|
|
||||||
|
[node name="SfxIngredientsReady" type="AudioStreamPlayer" parent="."]
|
||||||
|
stream = ExtResource("11_jwgdn")
|
||||||
|
bus = &"game_sfx"
|
||||||
|
script = ExtResource("6_0wbm3")
|
||||||
|
metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
|
||||||
|
|
||||||
[node name="SfxReadyToGrind" type="AudioStreamPlayer" parent="."]
|
[node name="SfxReadyToGrind" type="AudioStreamPlayer" parent="."]
|
||||||
stream = ExtResource("11_jwgdn")
|
stream = ExtResource("11_jwgdn")
|
||||||
bus = &"game_sfx"
|
bus = &"game_sfx"
|
||||||
script = ExtResource("6_0wbm3")
|
script = ExtResource("6_0wbm3")
|
||||||
metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
|
metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
|
||||||
|
|
||||||
|
[node name="SfxToggleGrinder" type="AudioStreamPlayer" parent="."]
|
||||||
|
stream = ExtResource("24_vnme8")
|
||||||
|
bus = &"game_sfx"
|
||||||
|
script = ExtResource("6_0wbm3")
|
||||||
|
metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
|
||||||
|
|
||||||
|
[node name="SfxGrinding" type="AudioStreamPlayer" parent="."]
|
||||||
|
stream = ExtResource("26_ctou3")
|
||||||
|
bus = &"game_sfx"
|
||||||
|
script = ExtResource("6_0wbm3")
|
||||||
|
metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
|
||||||
|
|
||||||
|
[node name="SfxPacking" type="AudioStreamPlayer" parent="."]
|
||||||
|
stream = ExtResource("25_vnme8")
|
||||||
|
bus = &"game_sfx"
|
||||||
|
script = ExtResource("6_0wbm3")
|
||||||
|
metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
|
||||||
|
|
||||||
[node name="DropSlotBowl" type="Marker2D" parent="."]
|
[node name="DropSlotBowl" type="Marker2D" parent="."]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
position = Vector2(135, 141)
|
position = Vector2(135, 141)
|
||||||
@ -187,12 +522,50 @@ texture = SubResource("GradientTexture2D_jwgdn")
|
|||||||
position = Vector2(0.5, -0.5)
|
position = Vector2(0.5, -0.5)
|
||||||
shape = SubResource("RectangleShape2D_aqv3v")
|
shape = SubResource("RectangleShape2D_aqv3v")
|
||||||
|
|
||||||
[node name="DraggableRigid1" parent="." node_paths=PackedStringArray("replaced_area_monitor") instance=ExtResource("7_lv3nw")]
|
[node name="Hover蟋蟀" parent="." instance=ExtResource("20_8lx66")]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
position = Vector2(56, 61)
|
||||||
|
|
||||||
|
[node name="PointLight2D" type="PointLight2D" parent="Hover蟋蟀"]
|
||||||
|
position = Vector2(10, 2)
|
||||||
|
energy = 2.0
|
||||||
|
range_layer_max = 10
|
||||||
|
range_item_cull_mask = 4
|
||||||
|
texture = ExtResource("33_26hqw")
|
||||||
|
|
||||||
|
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Hover蟋蟀"]
|
||||||
|
show_behind_parent = true
|
||||||
|
position = Vector2(-47, -23)
|
||||||
|
polygon = PackedVector2Array(92, 0, 74.8, 0, 71.5, 2, 69.1, 2, 59, 14.3, 45, 20.7, 38.8, 22, 34.5, 22, 25.5, 17, 23.1, 17, 17, 24.3, 17, 25.7, 10.5, 29, 8, 29, 1, 38, 0, 38, 0, 43.3, 3.4, 53.4, 83, 54, 87.7, 50, 89.6, 50, 91, 43.2, 91, 37.1, 83, 30.1, 83, 28.7, 70.3, 23.2, 80, 17.1, 93, 14, 93, 3.9, 80.9, 7, 78.9, 7, 79, 6.4, 89.3, 3, 91.9, 3)
|
||||||
|
|
||||||
|
[node name="Hover粉末" parent="." instance=ExtResource("20_8lx66")]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
position = Vector2(478, 209)
|
||||||
|
|
||||||
|
[node name="PointLight2D" type="PointLight2D" parent="Hover粉末"]
|
||||||
|
position = Vector2(4, 6)
|
||||||
|
energy = 2.0
|
||||||
|
range_layer_max = 10
|
||||||
|
range_item_cull_mask = 4
|
||||||
|
texture = ExtResource("8_kbm4v")
|
||||||
|
|
||||||
|
[node name="头发粉末" type="Sprite2D" parent="Hover粉末"]
|
||||||
|
light_mask = 5
|
||||||
|
position = Vector2(-79, -49)
|
||||||
|
texture = ExtResource("8_kbm4v")
|
||||||
|
centered = false
|
||||||
|
|
||||||
|
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Hover粉末"]
|
||||||
|
position = Vector2(-79, -49)
|
||||||
|
polygon = PackedVector2Array(107.4, 0, 79.8, 0, 64.4, 10, 62.2, 10, 50, 22.2, 50, 22.9, 0, 59.5, 0, 70, 2.7, 71, 9.9, 71, 11, 72.6, 11, 74.2, 23.5, 81, 28, 81, 32, 86, 37.3, 86, 56.4, 99, 58.1, 99, 67.4, 110, 84.7, 110, 110, 94.1, 115.3, 93, 116.5, 93, 152.5, 74, 154.9, 74, 161.9, 66, 163.4, 66, 166, 58.2, 166, 34.9, 162, 29.3, 162, 27, 138, 9, 138, 7, 122.5, 7)
|
||||||
|
|
||||||
|
[node name="DraggableRigid1" parent="." node_paths=PackedStringArray("replaced_area_monitor", "limit_polygon") instance=ExtResource("7_lv3nw")]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
position = Vector2(314, 69)
|
position = Vector2(314, 69)
|
||||||
|
angular_damp = 1.0
|
||||||
replaced_area_monitor = NodePath("Area2D")
|
replaced_area_monitor = NodePath("Area2D")
|
||||||
texture = ExtResource("8_lv3nw")
|
texture = ExtResource("8_lv3nw")
|
||||||
limit_rect = Rect2(65, 30, 460, 100)
|
limit_polygon = NodePath("../LimitPolygon2D")
|
||||||
|
|
||||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="DraggableRigid1"]
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="DraggableRigid1"]
|
||||||
shape = SubResource("CircleShape2D_nugkd")
|
shape = SubResource("CircleShape2D_nugkd")
|
||||||
@ -202,12 +575,13 @@ shape = SubResource("CircleShape2D_nugkd")
|
|||||||
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="DraggableRigid1/Area2D"]
|
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="DraggableRigid1/Area2D"]
|
||||||
polygon = PackedVector2Array(23, -19, -1.8, -19, -14.5, -14, -20.7, -14, -29.7, -7, -30, 6.5, -15.1, 19, 11.5, 19, 30, 6.4, 30, -11.7, 23, -17.9)
|
polygon = PackedVector2Array(23, -19, -1.8, -19, -14.5, -14, -20.7, -14, -29.7, -7, -30, 6.5, -15.1, 19, 11.5, 19, 30, 6.4, 30, -11.7, 23, -17.9)
|
||||||
|
|
||||||
[node name="DraggableRigid2" parent="." node_paths=PackedStringArray("replaced_area_monitor") instance=ExtResource("7_lv3nw")]
|
[node name="DraggableRigid2" parent="." node_paths=PackedStringArray("replaced_area_monitor", "limit_polygon") instance=ExtResource("7_lv3nw")]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
position = Vector2(413, 67)
|
position = Vector2(413, 67)
|
||||||
|
angular_damp = 1.0
|
||||||
replaced_area_monitor = NodePath("Area2D")
|
replaced_area_monitor = NodePath("Area2D")
|
||||||
texture = ExtResource("9_igyl7")
|
texture = ExtResource("9_igyl7")
|
||||||
limit_rect = Rect2(65, 30, 460, 100)
|
limit_polygon = NodePath("../LimitPolygon2D")
|
||||||
|
|
||||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="DraggableRigid2"]
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="DraggableRigid2"]
|
||||||
shape = SubResource("CircleShape2D_bmmll")
|
shape = SubResource("CircleShape2D_bmmll")
|
||||||
@ -217,12 +591,13 @@ shape = SubResource("CircleShape2D_bmmll")
|
|||||||
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="DraggableRigid2/Area2D"]
|
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="DraggableRigid2/Area2D"]
|
||||||
polygon = PackedVector2Array(16, -16.5, -9.5, -16.5, -17.5, -12.5, -18, 10, -15, 12.4, -15, 13.7, -10.1, 16.5, 11.6, 16.5, 17.9, 9.5, 18, -14, 16, -15.5)
|
polygon = PackedVector2Array(16, -16.5, -9.5, -16.5, -17.5, -12.5, -18, 10, -15, 12.4, -15, 13.7, -10.1, 16.5, 11.6, 16.5, 17.9, 9.5, 18, -14, 16, -15.5)
|
||||||
|
|
||||||
[node name="DraggableRigid3" parent="." node_paths=PackedStringArray("replaced_area_monitor") instance=ExtResource("7_lv3nw")]
|
[node name="DraggableRigid3" parent="." node_paths=PackedStringArray("replaced_area_monitor", "limit_polygon") instance=ExtResource("7_lv3nw")]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
position = Vector2(518, 68)
|
position = Vector2(518, 68)
|
||||||
|
angular_damp = 1.0
|
||||||
replaced_area_monitor = NodePath("Area2D")
|
replaced_area_monitor = NodePath("Area2D")
|
||||||
texture = ExtResource("10_nugkd")
|
texture = ExtResource("10_nugkd")
|
||||||
limit_rect = Rect2(65, 30, 460, 100)
|
limit_polygon = NodePath("../LimitPolygon2D")
|
||||||
|
|
||||||
[node name="Area2D" type="Area2D" parent="DraggableRigid3"]
|
[node name="Area2D" type="Area2D" parent="DraggableRigid3"]
|
||||||
|
|
||||||
@ -232,12 +607,13 @@ polygon = PackedVector2Array(15, -18.5, -6.2, -18.5, -9.5, -16.5, -11.9, -16.5,
|
|||||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="DraggableRigid3"]
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="DraggableRigid3"]
|
||||||
shape = SubResource("CircleShape2D_12r3p")
|
shape = SubResource("CircleShape2D_12r3p")
|
||||||
|
|
||||||
[node name="DraggableRigid4" parent="." node_paths=PackedStringArray("replaced_area_monitor") instance=ExtResource("7_lv3nw")]
|
[node name="DraggableRigid4" parent="." node_paths=PackedStringArray("replaced_area_monitor", "limit_polygon") instance=ExtResource("7_lv3nw")]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
position = Vector2(312, 126)
|
position = Vector2(312, 126)
|
||||||
|
angular_damp = 1.0
|
||||||
replaced_area_monitor = NodePath("Area2D")
|
replaced_area_monitor = NodePath("Area2D")
|
||||||
texture = ExtResource("11_bmmll")
|
texture = ExtResource("11_bmmll")
|
||||||
limit_rect = Rect2(65, 30, 460, 100)
|
limit_polygon = NodePath("../LimitPolygon2D")
|
||||||
|
|
||||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="DraggableRigid4"]
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="DraggableRigid4"]
|
||||||
shape = SubResource("CircleShape2D_x7amv")
|
shape = SubResource("CircleShape2D_x7amv")
|
||||||
@ -247,12 +623,13 @@ shape = SubResource("CircleShape2D_x7amv")
|
|||||||
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="DraggableRigid4/Area2D"]
|
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="DraggableRigid4/Area2D"]
|
||||||
polygon = PackedVector2Array(-7.3, -24.4, -14, -24.5, -20.6, -18.7, -22, -20.5, -25.3, -20.5, -29.3, -11.5, -31, -11.5, -31, -9.2, -29, -1.5, -30.2, 1.5, -31, 1.5, -31, 5.9, -30, 7.9, -31, 8.3, -31, 17.6, -27.8, 18.9, -29, 22.1, -29, 24.5, -21.2, 24.5, -15, 22.2, -12, 23.7, -12, 24.5, 7.7, 24.5, 11, 20.2, 22.3, 16.5, 27.8, 16.5, 31, 13.3, 31, 10.4, 28.3, 8.8, 30.3, 8.5, 31, 8.5, 31, -2.6, 30.1, -6.5, 31, -6.5, 31, -19, 26.7, -17.5, 21.7, -17.5, 13, -24.5, -6.5, -24.5)
|
polygon = PackedVector2Array(-7.3, -24.4, -14, -24.5, -20.6, -18.7, -22, -20.5, -25.3, -20.5, -29.3, -11.5, -31, -11.5, -31, -9.2, -29, -1.5, -30.2, 1.5, -31, 1.5, -31, 5.9, -30, 7.9, -31, 8.3, -31, 17.6, -27.8, 18.9, -29, 22.1, -29, 24.5, -21.2, 24.5, -15, 22.2, -12, 23.7, -12, 24.5, 7.7, 24.5, 11, 20.2, 22.3, 16.5, 27.8, 16.5, 31, 13.3, 31, 10.4, 28.3, 8.8, 30.3, 8.5, 31, 8.5, 31, -2.6, 30.1, -6.5, 31, -6.5, 31, -19, 26.7, -17.5, 21.7, -17.5, 13, -24.5, -6.5, -24.5)
|
||||||
|
|
||||||
[node name="DraggableRigid5" parent="." node_paths=PackedStringArray("replaced_area_monitor") instance=ExtResource("7_lv3nw")]
|
[node name="DraggableRigid5" parent="." node_paths=PackedStringArray("replaced_area_monitor", "limit_polygon") instance=ExtResource("7_lv3nw")]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
position = Vector2(413, 124)
|
position = Vector2(413, 124)
|
||||||
|
angular_damp = 1.0
|
||||||
replaced_area_monitor = NodePath("Area2D")
|
replaced_area_monitor = NodePath("Area2D")
|
||||||
texture = ExtResource("12_12r3p")
|
texture = ExtResource("12_12r3p")
|
||||||
limit_rect = Rect2(65, 30, 460, 100)
|
limit_polygon = NodePath("../LimitPolygon2D")
|
||||||
|
|
||||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="DraggableRigid5"]
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="DraggableRigid5"]
|
||||||
shape = SubResource("CircleShape2D_flc3m")
|
shape = SubResource("CircleShape2D_flc3m")
|
||||||
@ -262,12 +639,13 @@ shape = SubResource("CircleShape2D_flc3m")
|
|||||||
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="DraggableRigid5/Area2D"]
|
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="DraggableRigid5/Area2D"]
|
||||||
polygon = PackedVector2Array(-2, -28, -20, -28, -20, -23.5, -16.7, -17.7, -30.2, -16, -32, -16, -32, -12, -26, -3.5, -32, 0.6, -32, 11.1, -26.4, 7, -23, 15.4, -23, 17.4, -20.3, 18.4, -15, 11.7, -15, 11, -13.5, 11, -11, 19.2, -11, 28, 5.5, 28, 9, 23.7, 9, 21.5, 12, 20.8, 13.2, 22, 17.6, 22, 19, 15.2, 19, 13.8, 31.1, 13, 32, 13, 32, 7.2, 29.4, 3.1, 32, 1.4, 32, -11.1, 23.7, -13.9, 22, -22.4, 22, -24.3, 19.7, -25.4, 15.4, -21.9, 16, -26.9, 16, -28, 6.2, -28, 3, -24.8, -1, -23.4, -2, -27)
|
polygon = PackedVector2Array(-2, -28, -20, -28, -20, -23.5, -16.7, -17.7, -30.2, -16, -32, -16, -32, -12, -26, -3.5, -32, 0.6, -32, 11.1, -26.4, 7, -23, 15.4, -23, 17.4, -20.3, 18.4, -15, 11.7, -15, 11, -13.5, 11, -11, 19.2, -11, 28, 5.5, 28, 9, 23.7, 9, 21.5, 12, 20.8, 13.2, 22, 17.6, 22, 19, 15.2, 19, 13.8, 31.1, 13, 32, 13, 32, 7.2, 29.4, 3.1, 32, 1.4, 32, -11.1, 23.7, -13.9, 22, -22.4, 22, -24.3, 19.7, -25.4, 15.4, -21.9, 16, -26.9, 16, -28, 6.2, -28, 3, -24.8, -1, -23.4, -2, -27)
|
||||||
|
|
||||||
[node name="DraggableRigid6" parent="." node_paths=PackedStringArray("replaced_area_monitor") instance=ExtResource("7_lv3nw")]
|
[node name="DraggableRigid6" parent="." node_paths=PackedStringArray("replaced_area_monitor", "limit_polygon") instance=ExtResource("7_lv3nw")]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
position = Vector2(515, 124)
|
position = Vector2(515, 124)
|
||||||
|
angular_damp = 1.0
|
||||||
replaced_area_monitor = NodePath("Area2D")
|
replaced_area_monitor = NodePath("Area2D")
|
||||||
texture = ExtResource("13_x7amv")
|
texture = ExtResource("13_x7amv")
|
||||||
limit_rect = Rect2(65, 30, 460, 100)
|
limit_polygon = NodePath("../LimitPolygon2D")
|
||||||
|
|
||||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="DraggableRigid6"]
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="DraggableRigid6"]
|
||||||
position = Vector2(-6, 3)
|
position = Vector2(-6, 3)
|
||||||
@ -278,22 +656,129 @@ shape = SubResource("CircleShape2D_8lx66")
|
|||||||
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="DraggableRigid6/Area2D"]
|
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="DraggableRigid6/Area2D"]
|
||||||
polygon = PackedVector2Array(-9, -26, -16.7, -20, -19.1, -20, -24, -12.6, -24, -7.5, -28, -6.1, -28, 26, 0.4, 26, 2, 23.6, 2, 23, 3.3, 24, 16.4, 24, 27.4, 19, 28, 19, 28, -5.8, 24.8, -9, 14.6, -9, 16, -13.7, 16, -18.8, 9, -25.8)
|
polygon = PackedVector2Array(-9, -26, -16.7, -20, -19.1, -20, -24, -12.6, -24, -7.5, -28, -6.1, -28, 26, 0.4, 26, 2, 23.6, 2, 23, 3.3, 24, 16.4, 24, 27.4, 19, 28, 19, 28, -5.8, 24.8, -9, 14.6, -9, 16, -13.7, 16, -18.8, 9, -25.8)
|
||||||
|
|
||||||
|
[node name="DraggableRigid7" parent="." node_paths=PackedStringArray("replaced_area_monitor", "limit_polygon") instance=ExtResource("7_lv3nw")]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
position = Vector2(66, 63)
|
||||||
|
angular_damp = 1.0
|
||||||
|
replaced_area_monitor = NodePath("Area2D")
|
||||||
|
texture = ExtResource("33_26hqw")
|
||||||
|
limit_polygon = NodePath("../LimitPolygon2D")
|
||||||
|
|
||||||
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="DraggableRigid7"]
|
||||||
|
position = Vector2(-6, 6)
|
||||||
|
rotation = 0.883805
|
||||||
|
shape = SubResource("CapsuleShape2D_ctou3")
|
||||||
|
|
||||||
|
[node name="Area2D" type="Area2D" parent="DraggableRigid7"]
|
||||||
|
|
||||||
|
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="DraggableRigid7/Area2D"]
|
||||||
|
polygon = PackedVector2Array(35, -25, 17.8, -25, 14.5, -23, 12.1, -23, 2, -10.7, -15.6, -2.5, -30, -6.5, -30, -7.3, -32.5, -8.4, -35.8, -5, -36, 7.7, -28.1, 14.9, -29, 16.4, -29, 20.8, -26, 23.8, -26, 25, -9.8, 25, -7.8, 21.5, -5.8, 25, -0.299999, 25, 1.1, 23, 3.7, 23, 0.799999, 13.3, 1.3, 12.6, 12, 16.4, 12, 17.3, 14.5, 18.4, 16.8, 16, 18.3, 16, 19.4, 13.7, 13.2, 6.5, 17, 2.8, 17, -0.4, 13.4, -1.9, 23, -7.9, 35.4, -11, 36, -11, 36, -21, 29.3, -21, 32.3, -22, 34.9, -22)
|
||||||
|
|
||||||
|
[node name="DraggableRigid8" parent="." node_paths=PackedStringArray("replaced_area_monitor", "limit_polygon") instance=ExtResource("7_lv3nw")]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
position = Vector2(474, 216)
|
||||||
|
angular_damp = 1.0
|
||||||
|
replaced_area_monitor = NodePath("Area2D")
|
||||||
|
texture = ExtResource("32_gf0xj")
|
||||||
|
limit_polygon = NodePath("../LimitPolygon2D")
|
||||||
|
|
||||||
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="DraggableRigid8"]
|
||||||
|
position = Vector2(4, 4)
|
||||||
|
shape = SubResource("CircleShape2D_ujbuy")
|
||||||
|
|
||||||
|
[node name="Area2D" type="Area2D" parent="DraggableRigid8"]
|
||||||
|
|
||||||
|
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="DraggableRigid8/Area2D"]
|
||||||
|
position = Vector2(-37, -10)
|
||||||
|
polygon = PackedVector2Array(51.1, 0, 24.5, 0, 6.6, 8, 4.1, 8, 0, 12.9, 0, 25, 3.8, 26, 59.7, 26, 66.9, 18, 67, 12.8, 63, 8.2, 63, 6.9)
|
||||||
|
|
||||||
|
[node name="LimitPolygon2D" type="Polygon2D" parent="."]
|
||||||
|
visible = false
|
||||||
|
polygon = PackedVector2Array(51, 33, 51, 120, 78, 166, 127, 175, 173, 174, 205, 160, 219, 141, 243, 137, 357, 164, 429, 235, 553, 235, 552, 33)
|
||||||
|
|
||||||
|
[node name="Hover完成的药粉" parent="." instance=ExtResource("20_8lx66")]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
position = Vector2(134, 166)
|
||||||
|
freezing = true
|
||||||
|
|
||||||
|
[node name="PointLight2D" type="PointLight2D" parent="Hover完成的药粉"]
|
||||||
|
position = Vector2(3, 8.5)
|
||||||
|
energy = 2.0
|
||||||
|
range_layer_max = 10
|
||||||
|
range_item_cull_mask = 4
|
||||||
|
texture = ExtResource("29_26hqw")
|
||||||
|
|
||||||
|
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Hover完成的药粉"]
|
||||||
|
position = Vector2(-82, -34)
|
||||||
|
polygon = PackedVector2Array(100, 0, 67.8, 0, 65.8, 1.3, 62.4, 0, 59.4, 0, 55, 2.9, 46.2, 3, 43.1, 6, 41.6, 5, 37.3, 5, 26.9, 12.5, 25, 10, 21.4, 10, 0.4, 25, 0, 50.7, 36, 77.9, 36, 79.5, 53.7, 85, 111.2, 85, 131.4, 81, 133.8, 81, 166.8, 49, 168.4, 49, 170, 45, 170, 25, 164.5, 25, 140.5, 13, 141.1, 12, 142.3, 12, 143.4, 9.5, 141, 7.1, 141, 3.8, 136.5, 6, 133.6, 6, 128, 1.9, 128, 0, 125.6, 0, 118.8, 2, 117.7, 2, 116, 0.9, 116, 0, 111, 0, 108.5, 1, 104.1, 1)
|
||||||
|
|
||||||
|
[node name="完成的药粉" type="Sprite2D" parent="."]
|
||||||
|
modulate = Color(1, 1, 1, 0)
|
||||||
|
light_mask = 5
|
||||||
|
position = Vector2(52, 132)
|
||||||
|
texture = ExtResource("29_26hqw")
|
||||||
|
centered = false
|
||||||
|
|
||||||
[node name="StaticBodyBowl" type="StaticBody2D" parent="."]
|
[node name="StaticBodyBowl" type="StaticBody2D" parent="."]
|
||||||
position = Vector2(132, 178)
|
position = Vector2(132, 178)
|
||||||
collision_layer = 4
|
collision_layer = 4
|
||||||
collision_mask = 4
|
collision_mask = 4
|
||||||
|
|
||||||
[node name="碗前侧" type="Sprite2D" parent="StaticBodyBowl"]
|
[node name="碗前侧" type="Sprite2D" parent="StaticBodyBowl"]
|
||||||
|
z_index = 1
|
||||||
position = Vector2(150, -20)
|
position = Vector2(150, -20)
|
||||||
texture = ExtResource("15_nugkd")
|
texture = ExtResource("15_nugkd")
|
||||||
|
|
||||||
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="StaticBodyBowl"]
|
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="StaticBodyBowl"]
|
||||||
|
show_behind_parent = true
|
||||||
polygon = PackedVector2Array(-94, -7, -72, 14, -53, 22, -22, 25, 20, 24, 49, 22, 74, 15, 97, -1, 109, -8, 126, -16, 456, -18, 460, 87, 24, 90, -160, 86, -162, -30, -142, -63, -102, -30)
|
polygon = PackedVector2Array(-94, -7, -72, 14, -53, 22, -22, 25, 20, 24, 49, 22, 74, 15, 97, -1, 109, -8, 126, -16, 456, -18, 460, 87, 24, 90, -160, 86, -162, -30, -142, -63, -102, -30)
|
||||||
|
|
||||||
[node name="ContentInspector" parent="." instance=ExtResource("3_h2dug")]
|
[node name="洞中药纸" type="Sprite2D" parent="."]
|
||||||
|
z_index = 1
|
||||||
|
position = Vector2(14, 198)
|
||||||
|
texture = ExtResource("30_8leof")
|
||||||
|
centered = false
|
||||||
|
|
||||||
[node name="遮罩" type="TextureRect" parent="ContentInspector"]
|
[node name="遮罩" type="TextureRect" parent="."]
|
||||||
|
light_mask = 5
|
||||||
|
z_index = 1
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
offset_left = 1.0
|
||||||
|
offset_top = 17.0
|
||||||
|
offset_right = 1.0
|
||||||
|
offset_bottom = 17.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
mouse_filter = 2
|
||||||
|
texture = ExtResource("2_wtw10")
|
||||||
|
|
||||||
|
[node name="InspectContent" type="Control" parent="."]
|
||||||
|
unique_name_in_owner = true
|
||||||
visible = false
|
visible = false
|
||||||
|
z_index = 1
|
||||||
|
layout_mode = 3
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
mouse_filter = 2
|
||||||
|
|
||||||
|
[node name="药方" type="TextureRect" parent="InspectContent"]
|
||||||
|
layout_mode = 0
|
||||||
|
offset_left = -14.0
|
||||||
|
offset_top = -10.0
|
||||||
|
offset_right = 562.0
|
||||||
|
offset_bottom = 306.0
|
||||||
|
mouse_filter = 2
|
||||||
|
texture = ExtResource("25_gonyp")
|
||||||
|
|
||||||
|
[node name="ContentInspector" parent="InspectContent" instance=ExtResource("3_h2dug")]
|
||||||
|
layout_mode = 1
|
||||||
|
|
||||||
|
[node name="遮罩" type="TextureRect" parent="InspectContent/ContentInspector"]
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
anchors_preset = 15
|
anchors_preset = 15
|
||||||
anchor_right = 1.0
|
anchor_right = 1.0
|
||||||
@ -303,7 +788,7 @@ grow_vertical = 2
|
|||||||
mouse_filter = 2
|
mouse_filter = 2
|
||||||
texture = ExtResource("5_qafag")
|
texture = ExtResource("5_qafag")
|
||||||
|
|
||||||
[node name="Label" type="Label" parent="ContentInspector/遮罩"]
|
[node name="Label" type="Label" parent="InspectContent/ContentInspector/遮罩"]
|
||||||
custom_minimum_size = Vector2(180, 0)
|
custom_minimum_size = Vector2(180, 0)
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
anchors_preset = 8
|
anchors_preset = 8
|
||||||
@ -317,7 +802,7 @@ offset_right = 60.0
|
|||||||
offset_bottom = 15.5
|
offset_bottom = 15.5
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
text = "safasf"
|
|
||||||
vertical_alignment = 1
|
vertical_alignment = 1
|
||||||
autowrap_mode = 3
|
autowrap_mode = 3
|
||||||
script = ExtResource("6_y0m4i")
|
script = ExtResource("6_y0m4i")
|
||||||
|
translation_key = "c03_药方内容"
|
||||||
|
31
scene/ground/script/c02/s03_event_2d抓药游戏.gd
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
@tool
|
||||||
|
extends Event2D
|
||||||
|
|
||||||
|
# var prev_stage := 0
|
||||||
|
# var stage := 0
|
||||||
|
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
super._ready()
|
||||||
|
if Engine.is_editor_hint():
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
func _on_global_stage_updated(e: StringName, s: int):
|
||||||
|
super._on_global_stage_updated(e, s)
|
||||||
|
|
||||||
|
|
||||||
|
func _on_ground_ready(_ground: Ground2D):
|
||||||
|
$"Closeup抓药游戏".exit.connect(
|
||||||
|
func (arg):
|
||||||
|
if arg:
|
||||||
|
EventManager.set_stage_if_greater("c03_durg_game", 2)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
func _on_pre_stage_updated():
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
func _on_stage_updated():
|
||||||
|
pass
|
1
scene/ground/script/c02/s03_event_2d抓药游戏.gd.uid
Normal file
@ -0,0 +1 @@
|
|||||||
|
uid://chgyivvdw22cw
|
@ -48,8 +48,6 @@ polygon = PackedVector2Array(13.5, -10, 4, -10, -1.5, -7.8, -4, -9, -11.6, -9, -
|
|||||||
|
|
||||||
[node name="EventBinder" type="Node" parent="BG折起来/HoverLight钥匙"]
|
[node name="EventBinder" type="Node" parent="BG折起来/HoverLight钥匙"]
|
||||||
script = ExtResource("6_aen5b")
|
script = ExtResource("6_aen5b")
|
||||||
memo = "c03_s06_hole_key=[0] 时,显示: [钥匙]
|
|
||||||
[钥匙] interacted 时: c03_s06_hole_key=1(greater)"
|
|
||||||
updater_event = &"c03_s06_hole_key"
|
updater_event = &"c03_s06_hole_key"
|
||||||
updater_mode = "shower"
|
updater_mode = "shower"
|
||||||
updater_ease_duration = 0.0
|
updater_ease_duration = 0.0
|
||||||
@ -79,8 +77,6 @@ polygon = PackedVector2Array(-17.6, -11.5, -30.9, -6.5, -31.5, -6.5, -31.5, 9.9,
|
|||||||
|
|
||||||
[node name="EventBinder" type="Node" parent="BG折起来/HoverLight刀柄"]
|
[node name="EventBinder" type="Node" parent="BG折起来/HoverLight刀柄"]
|
||||||
script = ExtResource("6_aen5b")
|
script = ExtResource("6_aen5b")
|
||||||
memo = "c03_s06_hole_knife_handle=[0] 时,显示: [刀柄]
|
|
||||||
[刀柄] interacted 时: c03_s06_hole_knife_handle=1(greater)"
|
|
||||||
updater_event = &"c03_s06_hole_knife_handle"
|
updater_event = &"c03_s06_hole_knife_handle"
|
||||||
updater_mode = "shower"
|
updater_mode = "shower"
|
||||||
updater_ease_duration = 0.0
|
updater_ease_duration = 0.0
|
||||||
@ -121,7 +117,6 @@ texture = ExtResource("2_wpl64")
|
|||||||
|
|
||||||
[node name="ContentInspector" parent="." instance=ExtResource("3_mkmvg")]
|
[node name="ContentInspector" parent="." instance=ExtResource("3_mkmvg")]
|
||||||
visible = false
|
visible = false
|
||||||
mouse_filter = 2
|
|
||||||
|
|
||||||
[node name="遮罩" type="TextureRect" parent="ContentInspector"]
|
[node name="遮罩" type="TextureRect" parent="ContentInspector"]
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
|
@ -19,7 +19,6 @@ signal dropped(node: DraggableRigid)
|
|||||||
@export var freezing := false:
|
@export var freezing := false:
|
||||||
set(val):
|
set(val):
|
||||||
freezing = val
|
freezing = val
|
||||||
refresh_gravity_and_collision()
|
|
||||||
if freezing:
|
if freezing:
|
||||||
if holding:
|
if holding:
|
||||||
_drop()
|
_drop()
|
||||||
@ -31,15 +30,16 @@ signal dropped(node: DraggableRigid)
|
|||||||
texture = val
|
texture = val
|
||||||
if is_node_ready():
|
if is_node_ready():
|
||||||
sprite.texture = texture
|
sprite.texture = texture
|
||||||
@export var limit_rect := Rect2(Vector2.ZERO, Vector2(564, 316))
|
@export var limit_polygon: Polygon2D
|
||||||
|
|
||||||
@onready var sprite: Sprite2D = $Sprite2D
|
@onready var sprite: Sprite2D = $Sprite2D
|
||||||
|
|
||||||
# Whether the item is currently being held by the player
|
# Whether the item is currently being held by the player
|
||||||
var holding := false:
|
var holding := false:
|
||||||
set(val):
|
set(val):
|
||||||
holding = val
|
if holding != val:
|
||||||
refresh_gravity_and_collision()
|
holding = val
|
||||||
|
freeze = val
|
||||||
var touching := false
|
var touching := false
|
||||||
|
|
||||||
# 静态变量优化:避免频繁的字符串比较
|
# 静态变量优化:避免频繁的字符串比较
|
||||||
@ -58,17 +58,12 @@ const HUD_FADE_DURATION := 0.3
|
|||||||
var _mouse_event_source: Node
|
var _mouse_event_source: Node
|
||||||
var _outline_tween: Tween
|
var _outline_tween: Tween
|
||||||
var _shake_tween: Tween
|
var _shake_tween: Tween
|
||||||
var default_gravity_scale: float
|
|
||||||
var default_collision_layer: int
|
|
||||||
|
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
sprite.texture = texture
|
sprite.texture = texture
|
||||||
sprite.offset = sprite_offset
|
sprite.offset = sprite_offset
|
||||||
if Engine.is_editor_hint():
|
if Engine.is_editor_hint():
|
||||||
return
|
return
|
||||||
default_gravity_scale = gravity_scale
|
|
||||||
default_collision_layer = collision_layer
|
|
||||||
# 初始化隐藏白边
|
# 初始化隐藏白边
|
||||||
sprite.material.set_shader_parameter("thickness", 0.0)
|
sprite.material.set_shader_parameter("thickness", 0.0)
|
||||||
|
|
||||||
@ -81,15 +76,6 @@ func _ready() -> void:
|
|||||||
_mouse_event_source.mouse_exited.connect(_on_mouse_exited)
|
_mouse_event_source.mouse_exited.connect(_on_mouse_exited)
|
||||||
|
|
||||||
|
|
||||||
func refresh_gravity_and_collision() -> void:
|
|
||||||
if holding or freezing:
|
|
||||||
gravity_scale = 0.0
|
|
||||||
default_collision_layer = 0
|
|
||||||
else:
|
|
||||||
gravity_scale = default_gravity_scale
|
|
||||||
collision_layer = default_collision_layer
|
|
||||||
|
|
||||||
|
|
||||||
func is_focused() -> bool:
|
func is_focused() -> bool:
|
||||||
return current_focusing_node == self
|
return current_focusing_node == self
|
||||||
|
|
||||||
@ -145,20 +131,17 @@ func _unhandled_input(event: InputEvent) -> void:
|
|||||||
elif holding:
|
elif holding:
|
||||||
get_viewport().set_input_as_handled()
|
get_viewport().set_input_as_handled()
|
||||||
_drop()
|
_drop()
|
||||||
elif holding and event is InputEventMouseMotion:
|
|
||||||
_update_pos_to_mouse()
|
|
||||||
|
|
||||||
|
|
||||||
func _update_pos_to_mouse() -> void:
|
func _physics_process(_delta: float) -> void:
|
||||||
var mouse_pos := get_global_mouse_position()
|
if holding:
|
||||||
mouse_pos = mouse_pos.clamp(limit_rect.position, limit_rect.end)
|
var target = get_global_mouse_position()
|
||||||
update_position(mouse_pos)
|
if limit_polygon:
|
||||||
|
target = Util.get_closest_point_on_polygon(target, limit_polygon.polygon)
|
||||||
|
# PhysicsServer2D.body_set_state(
|
||||||
func update_position(pos: Vector2) -> void:
|
# get_rid(), PhysicsServer2D.BODY_STATE_TRANSFORM, Transform2D.IDENTITY.translated(target)
|
||||||
PhysicsServer2D.body_set_state(
|
# )
|
||||||
get_rid(), PhysicsServer2D.BODY_STATE_TRANSFORM, Transform2D.IDENTITY.translated(pos)
|
global_position = target
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
func _try_pick() -> void:
|
func _try_pick() -> void:
|
||||||
@ -166,7 +149,6 @@ func _try_pick() -> void:
|
|||||||
return
|
return
|
||||||
_toggle_outline(false)
|
_toggle_outline(false)
|
||||||
holding = true
|
holding = true
|
||||||
_update_pos_to_mouse()
|
|
||||||
picked.emit(self)
|
picked.emit(self)
|
||||||
|
|
||||||
|
|
||||||
@ -208,7 +190,6 @@ func force_hold() -> void:
|
|||||||
_toggle_outline(false)
|
_toggle_outline(false)
|
||||||
current_focusing_node = self
|
current_focusing_node = self
|
||||||
holding = true
|
holding = true
|
||||||
_update_pos_to_mouse()
|
|
||||||
picked.emit(self)
|
picked.emit(self)
|
||||||
|
|
||||||
|
|
||||||
|
@ -459,11 +459,9 @@ func _on_mouse_exited() -> void:
|
|||||||
func _mouse_moved_on_listening(unfold_scroll := false) -> void:
|
func _mouse_moved_on_listening(unfold_scroll := false) -> void:
|
||||||
if unfold_scroll:
|
if unfold_scroll:
|
||||||
_toggle_scroll(false)
|
_toggle_scroll(false)
|
||||||
|
|
||||||
if not displaying:
|
if not displaying:
|
||||||
_toggle_details(true)
|
_toggle_details(true)
|
||||||
return
|
return
|
||||||
|
|
||||||
timer.start(display_time)
|
timer.start(display_time)
|
||||||
|
|
||||||
|
|
||||||
@ -475,7 +473,6 @@ func _on_timer_timeout() -> void:
|
|||||||
func _unhandled_input(event: InputEvent) -> void:
|
func _unhandled_input(event: InputEvent) -> void:
|
||||||
if locked or not listening_hotkey:
|
if locked or not listening_hotkey:
|
||||||
return
|
return
|
||||||
|
|
||||||
if event.is_action_pressed("prop_left"):
|
if event.is_action_pressed("prop_left"):
|
||||||
on_left_pressed()
|
on_left_pressed()
|
||||||
get_viewport().set_input_as_handled()
|
get_viewport().set_input_as_handled()
|
||||||
@ -497,7 +494,6 @@ func _unhandled_input(event: InputEvent) -> void:
|
|||||||
func _input(event: InputEvent) -> void:
|
func _input(event: InputEvent) -> void:
|
||||||
if locked:
|
if locked:
|
||||||
return
|
return
|
||||||
|
|
||||||
if listen_mouse and (event is InputEventMouseMotion or event is InputEventScreenTouch):
|
if listen_mouse and (event is InputEventMouseMotion or event is InputEventScreenTouch):
|
||||||
_mouse_moved_on_listening()
|
_mouse_moved_on_listening()
|
||||||
|
|
||||||
|
@ -29,6 +29,7 @@ offset_top = 4.0
|
|||||||
offset_right = 608.0
|
offset_right = 608.0
|
||||||
offset_bottom = 504.0
|
offset_bottom = 504.0
|
||||||
scale = Vector2(0.3, 0.3)
|
scale = Vector2(0.3, 0.3)
|
||||||
|
mouse_filter = 1
|
||||||
script = ExtResource("1_bbv0a")
|
script = ExtResource("1_bbv0a")
|
||||||
|
|
||||||
[node name="VBoxContainer" type="VBoxContainer" parent="."]
|
[node name="VBoxContainer" type="VBoxContainer" parent="."]
|
||||||
|
47
util/util.gd
@ -1,6 +1,7 @@
|
|||||||
@tool
|
@tool
|
||||||
extends Node
|
extends Node
|
||||||
|
|
||||||
|
|
||||||
#### Timer
|
#### Timer
|
||||||
func wait(duration: float) -> void:
|
func wait(duration: float) -> void:
|
||||||
if duration <= 0:
|
if duration <= 0:
|
||||||
@ -58,3 +59,49 @@ func generate_lines(content: String) -> Array:
|
|||||||
var text = "~ title\n" + content + "\n=> END"
|
var text = "~ title\n" + content + "\n=> END"
|
||||||
var res = DialogueManager.create_resource_from_text(text)
|
var res = DialogueManager.create_resource_from_text(text)
|
||||||
return await get_lines(res, "title")
|
return await get_lines(res, "title")
|
||||||
|
|
||||||
|
|
||||||
|
#### Geometry
|
||||||
|
|
||||||
|
|
||||||
|
# This function finds the closest point on the boundary or inside of a polygon
|
||||||
|
# to a given point.
|
||||||
|
#
|
||||||
|
# @param point: The Vector2 point to test against.
|
||||||
|
# @param polygon_vertices: A PackedVector2Array defining the polygon.
|
||||||
|
# @return: The Vector2 coordinate of the closest point.
|
||||||
|
func get_closest_point_on_polygon(point: Vector2, polygon_vertices: PackedVector2Array) -> Vector2:
|
||||||
|
var vertex_count = polygon_vertices.size()
|
||||||
|
if vertex_count == 0:
|
||||||
|
return Vector2.ZERO # Or handle error appropriately
|
||||||
|
if vertex_count == 1:
|
||||||
|
return polygon_vertices[0]
|
||||||
|
|
||||||
|
# First, check if the point is already inside the polygon.
|
||||||
|
# If so, the point itself is the answer.
|
||||||
|
if Geometry2D.is_point_in_polygon(point, polygon_vertices):
|
||||||
|
return point
|
||||||
|
|
||||||
|
# If the point is outside, we need to find the closest point on its edges.
|
||||||
|
var closest_point_so_far: Vector2
|
||||||
|
var min_dist_sq = INF # Use infinity as the initial maximum distance
|
||||||
|
|
||||||
|
# Iterate through each edge of the polygon.
|
||||||
|
for i in range(vertex_count):
|
||||||
|
# An edge is a segment between the current vertex and the next one.
|
||||||
|
# The modulo operator (%) handles the last edge connecting the last vertex to the first.
|
||||||
|
var p1 = polygon_vertices[i]
|
||||||
|
var p2 = polygon_vertices[(i + 1) % vertex_count]
|
||||||
|
|
||||||
|
# Get the closest point on the current line segment.
|
||||||
|
var closest_point_on_segment = Geometry2D.get_closest_point_to_segment(point, p1, p2)
|
||||||
|
|
||||||
|
# Calculate the squared distance. This is more efficient than using sqrt().
|
||||||
|
var dist_sq = point.distance_squared_to(closest_point_on_segment)
|
||||||
|
|
||||||
|
# If this point is closer than any we've seen before, update our variables.
|
||||||
|
if dist_sq < min_dist_sq:
|
||||||
|
min_dist_sq = dist_sq
|
||||||
|
closest_point_so_far = closest_point_on_segment
|
||||||
|
|
||||||
|
return closest_point_so_far
|
||||||
|