diff --git a/README.md b/README.md index 5bfa0a9a..dd857643 100644 --- a/README.md +++ b/README.md @@ -182,4 +182,3 @@ current_scene 是通过 GroundLoader 加载的,在 ground loader 加载 ground - 转场 process 机制优化:暂停 & AnimationPlayer 保持运行 - EventManager 控制事件,使用 Event2D 控制绑定关系 - Vibe Control 控制氛围情绪音乐 - diff --git a/asset/art/scene/c03/s04_李癞房间/打麻将游戏/一筒.png b/asset/art/scene/c03/s04_李癞房间/打麻将游戏/一筒.png new file mode 100644 index 00000000..c00d9f47 Binary files /dev/null and b/asset/art/scene/c03/s04_李癞房间/打麻将游戏/一筒.png differ diff --git a/asset/art/scene/c03/s04_李癞房间/打麻将游戏/一筒.png.import b/asset/art/scene/c03/s04_李癞房间/打麻将游戏/一筒.png.import new file mode 100644 index 00000000..81cc1dfc --- /dev/null +++ b/asset/art/scene/c03/s04_李癞房间/打麻将游戏/一筒.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ccpexjd64s5nn" +path="res://.godot/imported/一筒.png-047ffc825475267615015adab0d6971c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://asset/art/scene/c03/s04_李癞房间/打麻将游戏/一筒.png" +dest_files=["res://.godot/imported/一筒.png-047ffc825475267615015adab0d6971c.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 diff --git a/asset/art/scene/c03/s04_李癞房间/打麻将游戏/七筒.png b/asset/art/scene/c03/s04_李癞房间/打麻将游戏/七筒.png new file mode 100644 index 00000000..719772a6 Binary files /dev/null and b/asset/art/scene/c03/s04_李癞房间/打麻将游戏/七筒.png differ diff --git a/asset/art/scene/c03/s04_李癞房间/打麻将游戏/七筒.png.import b/asset/art/scene/c03/s04_李癞房间/打麻将游戏/七筒.png.import new file mode 100644 index 00000000..941475dc --- /dev/null +++ b/asset/art/scene/c03/s04_李癞房间/打麻将游戏/七筒.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c7tea8ostqbiu" +path="res://.godot/imported/七筒.png-0a545f8d74e707296024527148b91547.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://asset/art/scene/c03/s04_李癞房间/打麻将游戏/七筒.png" +dest_files=["res://.godot/imported/七筒.png-0a545f8d74e707296024527148b91547.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 diff --git a/asset/art/scene/c03/s04_李癞房间/打麻将游戏/二万.png b/asset/art/scene/c03/s04_李癞房间/打麻将游戏/二万.png new file mode 100644 index 00000000..984e094d Binary files /dev/null and b/asset/art/scene/c03/s04_李癞房间/打麻将游戏/二万.png differ diff --git a/asset/art/scene/c03/s04_李癞房间/打麻将游戏/二万.png.import b/asset/art/scene/c03/s04_李癞房间/打麻将游戏/二万.png.import new file mode 100644 index 00000000..fb3eabaa --- /dev/null +++ b/asset/art/scene/c03/s04_李癞房间/打麻将游戏/二万.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c6xcefh4x2t5h" +path="res://.godot/imported/二万.png-b6dc9b9fd42473fd9f7231084a44ec15.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://asset/art/scene/c03/s04_李癞房间/打麻将游戏/二万.png" +dest_files=["res://.godot/imported/二万.png-b6dc9b9fd42473fd9f7231084a44ec15.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 diff --git a/asset/dialogue/c03.dialogue b/asset/dialogue/c03.dialogue index 219264ef..b28a7cb1 100644 --- a/asset/dialogue/c03.dialogue +++ b/asset/dialogue/c03.dialogue @@ -2,4 +2,103 @@ 陆仁: (看病费用涨价,为了攒钱让小蝶上学,) 小蝶: (小蝶想请小蝉来家里吃饭,写了请柬) 陆仁: (父母让小蝶去送请柬,顺便带肉回家做饭) +=> END + +~ c03_s04_整理麻将游戏0 +# 打牌准备,整理麻将盒游戏成功(演出至麻将搬到桌上): +李氏: 记得当年这箱麻将还是我弟弟背回来的。 +李氏: 那天下了雨,他光着膀子回来,用衣裳包着,说木头怕水他不怕,就当免费洗了个澡... +癞子: (轻笑一声)后来发现少了张牌,这小崽子又背着我们敲敲打打,硬是做了张一模一样的补上。 +李氏: (苦笑)他呀,就是个死心眼,犟种! +李氏: 得了病就一直忍着,等到实在瞒不住了才告诉咱们! +癞子: 他认了命等死,咱们不能认,只要今晚赢了钱... +=> END + +~ c03_s04_整理麻将游戏1 +# 5-10 s 纯黑转场 +#(敲门,开门,几个人走路声,推椅子声) +胖子: 哟,人都来齐了怎么还在理麻将?今晚大家可得好好地打一场! +=> END + +# 看一会桌面 +~ c03_s04_打麻将游戏0 +#切换至游戏画面(盖牌声) +瞎子: 我观张老弟面色晦暗、嘴唇发白,难不成是这些日子手气不佳,输多了牌才... +=> END + + +# 边发牌边说 +~ c03_s04_打麻将游戏1 +胖子: (哼)以前可不这样,不说牌桌通杀,也是赢多输少,偏偏最近... +#(同时画面进入癞子摸牌,第一回合开始,玩家可以操作) +李氏: 最近怎么了? +=> END + + +# 玩家第一回合操作,平行对话 +~ c03_s04_打麻将游戏2 +瞎子: 碰。 +胖子: 自从那三楼的婆娘出了名以后,我这手气就臭得不行...怕不是让人给“借运”了? +癞子: 还真不好说。 +癞子: 运气这玩意玄乎得很,我以前走南闯北的时候,见过一个会使邪门功夫的老爷子,说是能“借”人家的命来延长自己的寿命... +胖子: 听着怪瘆人的。 +瞎子: 人外有人,天外有天。 +瞎子: 天外还有什么...咱们这些闲杂人等也说了不算。 +=> END + +~ c03_s04_打麻将游戏3 +#(玩家操作完后,打牌声) +李氏: 六万。 +李氏: 话又说回来,你们喝过洋酒没有?用葡萄发酵成的,红得发黑,度数还高。 +癞子: 那叫香槟,洋人就喜欢整那些面子货,不适口。 +=> END + +~ c03_s04_打麻将游戏4 +#(第二回合开始,玩家可以操作) +胖子: (啧)见多识广还得看王兄啊。 +胖子: 瞧这架势,以前没准多风光... +瞎子: 英雄不问出处。 +癞子: 都过去了,都过去了。 +李氏: 为了跑出来,我们还睡过桥洞呢! +李氏: (此处响起癞子的咳嗽声)那阵子我老是梦见让人剁了手指头,八成就是因为那桥是洋人建的... +胖子: 你说的是外摆渡桥? +癞子: 应该是吧,我们再没回去过,也不知道后来成了什么样... +=> END + +~ c03_s04_打麻将游戏5 +#(玩家操作完后,打牌声) +胖子: (脏话)怎么一张牌都不来! +瞎子: 八条 +=> END + +~ c03_s04_打麻将游戏6 +#(第三回合开始,玩家可以操作) +癞子: 对了,小蝉那孩子有消息了吗? +瞎子: 要是有消息,我也不会跟你们在这打牌,虚度光阴。 +李氏: 方大哥,你这话说得不妥。 +李氏: 咱们哪个心里头不苦的?不都是在这牌桌上苦中作乐呢。 +胖子: 找点乐子,何必想那么多。 +李氏: 我这头生意都不做了,帮你满大街的又找又问,不也是白忙活一场。 +李氏: 要我说,还是得从身边的人下手。 +=> END + +~ c03_s04_打麻将游戏7 +#(操作完进入胜利演出,第四回合开始) +癞子: 指不定是被楼里的那个邻居拐了呢,就那么一丁点的小女孩,谁都能敲昏了抱回家去。 +胖子: ...我看她跟三楼那个叫什么小蝶的走得很近,老是手拉手出去,成天凑在一块说悄悄话。 +胖子: 他们一家人最近都不怎么出门,我看就是心里有鬼。 +胖子: 把小孩骗走了换钱换药,搞邪术,什么都干得出来。 +癞子: 这么一说,好像确实有点道理。 +李氏: 我小弟去看过病了,那药方邪门得很,待会我拿给你们瞧瞧。 +李氏: 我活了这么大岁数,也是第一次见。 +瞎子: 道听途说而已。 +=> END + +~ c03_s04_打麻将游戏8 +#(第四回合摸牌,摊倒牌,胜利演出结束) +癞子: 自摸!(笑) +胖子: (脏话)不玩了不玩了,今天一把都没胡过! +瞎子: 我也得早点回去,没准小蝉今儿个能回来,我总惦记着回去看看。 +李氏: 天黑了,你们回去都小心着点。 +癞子: 嘶... => END \ No newline at end of file diff --git a/asset/dialogue/item_description.dialogue b/asset/dialogue/item_description.dialogue index 41a05899..83a4ab35 100644 --- a/asset/dialogue/item_description.dialogue +++ b/asset/dialogue/item_description.dialogue @@ -49,7 +49,7 @@ 按住 S 躲藏 [ID:ui_boxcat_press_s] 点击选择信件碎片,方向键移动,E 旋碎片转,Q 退出 [ID:input_拼凑信件] 点击书本可选中或交换,Q 退出 [ID:input_书架游戏] -还缺一块麻将(幺鸡) [ID:input_麻将游戏_麻将不足] +还缺一块麻将 [ID:input_麻将游戏_麻将不足] 依次点击两块麻将可进行交换 [ID:input_麻将游戏_操作规则] diff --git a/manager/archive_manager/archive_manager.gd b/manager/archive_manager/archive_manager.gd index 78b44fc7..83a88188 100644 --- a/manager/archive_manager/archive_manager.gd +++ b/manager/archive_manager/archive_manager.gd @@ -20,6 +20,8 @@ const CURRENT_VERSION = 5 var archives := {} var autosave_timer := Timer.new() +# 供运行时缓存跨场景数据 +var _runtime_global_dictionary: Dictionary[String, Variant] = {} func _ready() -> void: # 禁用默认退出行为,在 _notification 处理 NOTIFICATION_WM_CLOSE_REQUEST 时保存数据 @@ -295,3 +297,20 @@ func unlock_memory(id: int) -> void: SceneManager.pop_notification("ui_notify_mem_update") else: printerr("Archive is null, cannot unlock memory. id=", id) + + +# 供运行时缓存跨场景数据 +func runtime_set(key: String, value: Variant) -> void: + _runtime_global_dictionary[key] = value + + +func runtime_get(key: String, default_value: Variant = null) -> Variant: + return _runtime_global_dictionary.get(key, default_value) + + +func runtime_has(key: String) -> bool: + return _runtime_global_dictionary.has(key) + + +func runtime_remove(key: String) -> void: + _runtime_global_dictionary.erase(key) \ No newline at end of file diff --git a/manager/scene/scene_manager.gd b/manager/scene/scene_manager.gd index e2f0df3a..60eb2fbb 100644 --- a/manager/scene/scene_manager.gd +++ b/manager/scene/scene_manager.gd @@ -430,8 +430,9 @@ func show_black_hand(play_sfx := true, queue_free_delay := 0.0) -> void: var transition_scene = preload("uid://7dxvwqm53ugh") -func black_transition(half_duration := 0.7) -> void: +func black_transition(half_duration := 0.7, wait_time := 0.5) -> void: var scene = transition_scene.instantiate() scene.name = "Transition" + await get_tree().process_frame get_tree().current_scene.add_child(scene) - scene.run_effect(half_duration) + scene.run_effect(half_duration, wait_time) diff --git a/scene/dialog/balloon.gd b/scene/dialog/balloon.gd index bf4cbd3a..2c5f5b15 100755 --- a/scene/dialog/balloon.gd +++ b/scene/dialog/balloon.gd @@ -99,7 +99,7 @@ func _apply_tags() -> void: var translation_key = dialogue_line.translation_key var text - if translation_key: + if not translation_key.is_empty(): text = tr(translation_key, "dialogue") if text == translation_key: text = dialogue_line.text diff --git a/scene/effect/黑屏转场.gd b/scene/effect/黑屏转场.gd index fc687671..6c1430f8 100644 --- a/scene/effect/黑屏转场.gd +++ b/scene/effect/黑屏转场.gd @@ -5,12 +5,13 @@ func _ready() -> void: layer = GlobalConfig.CANVAS_LAYER_EFFECT -func run_effect(half_duration := 0.7): +func run_effect(half_duration := 0.7, wait_time := 0.5): if not is_node_ready(): await ready var rect = $ColorRect as ColorRect var tween = create_tween() rect.modulate.a = 0 tween.tween_property(rect, "modulate:a", 1.0, half_duration) + tween.tween_interval(wait_time) tween.tween_property(rect, "modulate:a", 0.0, half_duration) tween.tween_callback(queue_free) diff --git a/scene/ground/scene/c02/s06_二楼.tscn b/scene/ground/scene/c02/s06_二楼.tscn index de636bb7..4785aa21 100644 --- a/scene/ground/scene/c02/s06_二楼.tscn +++ b/scene/ground/scene/c02/s06_二楼.tscn @@ -45,7 +45,7 @@ [ext_resource type="Texture2D" uid="uid://b5kolhax7pf4u" path="res://asset/art/scene/c02/s06_二楼楼道/小猫纸条.png" id="37_rjlld"] [ext_resource type="Script" uid="uid://bnm8wuspfx303" path="res://scene/ground/script/c02/event_2d_xchan_run_away.gd" id="39_t5e0j"] [ext_resource type="SpriteFrames" uid="uid://di43shn22n5ph" path="res://asset/art/gif/c00_通用动作/c00_通用动作_frames.tres" id="40_7i4w0"] -[ext_resource type="Script" uid="uid://n56a07gyjq1u" path="res://scene/ground/script/c03/s02_event_2d偷听陆仁小蝶对话后.gd" id="46_sqio2"] +[ext_resource type="Script" path="res://scene/ground/script/c03/s02_event_2d偷听陆仁小蝶对话后.gd" id="46_sqio2"] [sub_resource type="Animation" id="Animation_k01ve"] length = 0.001 diff --git a/scene/ground/scene/c03/s01_三楼.tscn b/scene/ground/scene/c03/s01_三楼.tscn index 0e36955a..831b256c 100644 --- a/scene/ground/scene/c03/s01_三楼.tscn +++ b/scene/ground/scene/c03/s01_三楼.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=33 format=3 uid="uid://dlrbhfvnd3cs0"] +[gd_scene load_steps=30 format=3 uid="uid://dlrbhfvnd3cs0"] [ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_eb2op"] [ext_resource type="Script" uid="uid://c0rh2n36ait6i" path="res://scene/ground/scene/c03/s01_三楼.gd" id="2_ow08b"] @@ -22,107 +22,7 @@ [ext_resource type="Texture2D" uid="uid://dagy852q0fduh" path="res://asset/art/scene/c03/s01_三楼/e_治病木牌.png" id="19_hmme5"] [ext_resource type="PackedScene" uid="uid://bnf3lkcbpx1ar" path="res://scene/entity/ambush.tscn" id="20_hmme5"] -[sub_resource type="Animation" id="Animation_k01ve"] -length = 0.001 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("DirectionalLight2D:energy") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [0.9] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("MainPlayer:hide_sprite") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [false] -} -tracks/2/type = "value" -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/path = NodePath("MainPlayer:visible") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [true] -} - -[sub_resource type="Animation" id="Animation_lh55k"] -resource_name = "c02_final_show_end" -length = 14.0 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("MainPlayer:hide_sprite") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0, 3.8), -"transitions": PackedFloat32Array(1, 1), -"update": 1, -"values": [true, false] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("MainPlayer:visible") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [true] -} - -[sub_resource type="Animation" id="Animation_ciatp"] -resource_name = "c02_final_show_join" -length = 12.5 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("DirectionalLight2D:energy") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0, 12.1, 12.5), -"transitions": PackedFloat32Array(1, 1, 1), -"update": 0, -"values": [1.0, 1.0, 0.9] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("MainPlayer:visible") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [false] -} - [sub_resource type="AnimationLibrary" id="AnimationLibrary_k01ve"] -_data = { -&"RESET": SubResource("Animation_k01ve"), -&"c02_final_show_end": SubResource("Animation_lh55k"), -&"c02_final_show_join": SubResource("Animation_ciatp") -} [sub_resource type="Gradient" id="Gradient_krvxg"] interpolation_mode = 2 @@ -385,7 +285,6 @@ points = PackedVector2Array(30, 151, 723, 150) [node name="DirectionalLight2D" parent="Ground" index="8"] visible = false -energy = 0.9 blend_mode = 1 [editable path="Ground"] diff --git a/scene/ground/scene/c03/s02_瞎子新卧室.tscn b/scene/ground/scene/c03/s02_瞎子新卧室.tscn index f6401760..3094ffb6 100644 --- a/scene/ground/scene/c03/s02_瞎子新卧室.tscn +++ b/scene/ground/scene/c03/s02_瞎子新卧室.tscn @@ -1,7 +1,7 @@ -[gd_scene load_steps=20 format=3 uid="uid://ctwy1ubhm68la"] +[gd_scene load_steps=17 format=3 uid="uid://ctwy1ubhm68la"] [ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_jad6f"] -[ext_resource type="Script" uid="uid://tk4wg0i4payx" path="res://scene/ground/scene/c03/s02_瞎子新卧室.gd" id="2_y504i"] +[ext_resource type="Script" path="res://scene/ground/scene/c03/s02_瞎子新卧室.gd" id="2_y504i"] [ext_resource type="Script" uid="uid://cpejxlfni6n52" path="res://manager/audio_manager/vibe_sfx.gd" id="3_kchgf"] [ext_resource type="Texture2D" uid="uid://vc2hn6t5bedg" path="res://asset/art/scene/c03/s02_瞎子新卧室/bg_瞎子新卧室.png" id="4_hehhg"] [ext_resource type="Texture2D" uid="uid://7ay1ttob8qwm" path="res://asset/art/scene/c02/s08_瞎子卧室/e_床板.png" id="5_xifhb"] @@ -9,114 +9,14 @@ [ext_resource type="PackedScene" uid="uid://61pis75a8fdq" path="res://scene/entity/portal.tscn" id="6_jad6f"] [ext_resource type="Texture2D" uid="uid://bmid3iu2ch35o" path="res://asset/art/scene/c02/s08_瞎子卧室/八卦图.png" id="7_u55tr"] [ext_resource type="Texture2D" uid="uid://vqyhgyka3sfo" path="res://asset/art/scene/c02/s08_瞎子卧室/瞎子卧室前景.png" id="8_hehhg"] -[ext_resource type="Script" uid="uid://n56a07gyjq1u" path="res://scene/ground/script/c03/s02_event_2d偷听陆仁小蝶对话后.gd" id="8_pixqd"] +[ext_resource type="Script" path="res://scene/ground/script/c03/s02_event_2d偷听陆仁小蝶对话后.gd" id="8_pixqd"] [ext_resource type="SpriteFrames" uid="uid://div8kcn7gu78r" path="res://asset/art/gif/c03_小蝶询问瞎子/c03_小蝶询问瞎子_frames.tres" id="10_2hv3f"] [ext_resource type="PackedScene" uid="uid://b50n0hvs4yh75" path="res://addons/property-inspector/pro_animation_sprite2d/pro_animated_sprite.tscn" id="10_jad6f"] [ext_resource type="PackedScene" uid="uid://cxw5rovg5mu1a" path="res://scene/ground/script/c02/s00_煤油灯.tscn" id="10_kchgf"] [ext_resource type="PackedScene" uid="uid://jr1yd46wm5je" path="res://scene/entity/note.tscn" id="10_v3seo"] [ext_resource type="Texture2D" uid="uid://bcqcvohj7jy40" path="res://asset/art/scene/c02/杂物/煤油灯 关灯.png" id="11_crt0l"] -[sub_resource type="Animation" id="Animation_k01ve"] -length = 0.001 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("DirectionalLight2D:energy") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [0.9] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("MainPlayer:hide_sprite") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [false] -} -tracks/2/type = "value" -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/path = NodePath("MainPlayer:visible") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [true] -} - -[sub_resource type="Animation" id="Animation_lh55k"] -resource_name = "c02_final_show_end" -length = 14.0 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("MainPlayer:hide_sprite") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0, 3.8), -"transitions": PackedFloat32Array(1, 1), -"update": 1, -"values": [true, false] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("MainPlayer:visible") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [true] -} - -[sub_resource type="Animation" id="Animation_ciatp"] -resource_name = "c02_final_show_join" -length = 12.5 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("DirectionalLight2D:energy") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0, 12.1, 12.5), -"transitions": PackedFloat32Array(1, 1, 1), -"update": 0, -"values": [1.0, 1.0, 0.9] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("MainPlayer:visible") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [false] -} - [sub_resource type="AnimationLibrary" id="AnimationLibrary_k01ve"] -_data = { -&"RESET": SubResource("Animation_k01ve"), -&"c02_final_show_end": SubResource("Animation_lh55k"), -&"c02_final_show_join": SubResource("Animation_ciatp") -} [node name="S02" type="Node2D"] metadata/_edit_horizontal_guides_ = [-627.0] @@ -262,7 +162,6 @@ points = PackedVector2Array(17, 150, 509, 150) [node name="DirectionalLight2D" parent="Ground" index="8"] visible = false -energy = 0.9 blend_mode = 1 [editable path="Ground"] diff --git a/scene/ground/scene/c03/s03_瞎子理发店.tscn b/scene/ground/scene/c03/s03_瞎子理发店.tscn index d4a40ba7..38343ee0 100644 --- a/scene/ground/scene/c03/s03_瞎子理发店.tscn +++ b/scene/ground/scene/c03/s03_瞎子理发店.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=18 format=3 uid="uid://bsqt2c061fmin"] +[gd_scene load_steps=15 format=3 uid="uid://bsqt2c061fmin"] [ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_40yjl"] [ext_resource type="Script" uid="uid://cim5bqm2nayls" path="res://scene/ground/scene/c03/s03_瞎子理发店.gd" id="2_irgvj"] @@ -14,107 +14,7 @@ [ext_resource type="Texture2D" uid="uid://ckboywu6sjcpc" path="res://asset/art/scene/c03/s03_瞎子理发店/癞子纸人头套.png" id="10_1pu6f"] [ext_resource type="PackedScene" uid="uid://jr1yd46wm5je" path="res://scene/entity/note.tscn" id="11_1pu6f"] -[sub_resource type="Animation" id="Animation_k01ve"] -length = 0.001 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("DirectionalLight2D:energy") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [0.9] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("MainPlayer:hide_sprite") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [false] -} -tracks/2/type = "value" -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/path = NodePath("MainPlayer:visible") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [true] -} - -[sub_resource type="Animation" id="Animation_lh55k"] -resource_name = "c02_final_show_end" -length = 14.0 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("MainPlayer:hide_sprite") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0, 3.8), -"transitions": PackedFloat32Array(1, 1), -"update": 1, -"values": [true, false] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("MainPlayer:visible") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [true] -} - -[sub_resource type="Animation" id="Animation_ciatp"] -resource_name = "c02_final_show_join" -length = 12.5 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("DirectionalLight2D:energy") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0, 12.1, 12.5), -"transitions": PackedFloat32Array(1, 1, 1), -"update": 0, -"values": [1.0, 1.0, 0.9] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("MainPlayer:visible") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [false] -} - [sub_resource type="AnimationLibrary" id="AnimationLibrary_k01ve"] -_data = { -&"RESET": SubResource("Animation_k01ve"), -&"c02_final_show_end": SubResource("Animation_lh55k"), -&"c02_final_show_join": SubResource("Animation_ciatp") -} [node name="S03" type="Node2D"] metadata/_edit_horizontal_guides_ = [-627.0] @@ -180,7 +80,9 @@ position = Vector2(501, 46) title_filter = "c03" [node name="MainPlayer" parent="Ground" index="5"] +visible = false position = Vector2(34, 98) +hide_sprite = true catty_light_energy = 0.5 player_movement_rect = Rect2(35, -158, 506, 316) facing_direction = Vector2(1, 0) @@ -201,7 +103,6 @@ points = PackedVector2Array(35, 151, 541, 151) [node name="DirectionalLight2D" parent="Ground" index="8"] visible = false -energy = 0.9 blend_mode = 1 [editable path="Ground"] diff --git a/scene/ground/scene/c03/s04_李癞房间.tscn b/scene/ground/scene/c03/s04_李癞房间.tscn index 16ca65f7..a20c69e4 100644 --- a/scene/ground/scene/c03/s04_李癞房间.tscn +++ b/scene/ground/scene/c03/s04_李癞房间.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=14 format=3 uid="uid://c7c88hg2cl1j7"] +[gd_scene load_steps=11 format=3 uid="uid://c7c88hg2cl1j7"] [ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_byh4s"] [ext_resource type="Script" uid="uid://byw2swgt783oa" path="res://scene/ground/scene/c03/s04_李癞房间.gd" id="2_vjibx"] @@ -10,114 +10,14 @@ [ext_resource type="PackedScene" uid="uid://n75766ui6udi" path="res://scene/ground/script/c03/s04_closeup整理麻将游戏.tscn" id="7_jmyby"] [ext_resource type="PackedScene" uid="uid://cua3uqy4btxqn" path="res://scene/ground/script/c03/s04_closeup麻将出千游戏.tscn" id="8_jmyby"] -[sub_resource type="Animation" id="Animation_k01ve"] -length = 0.001 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("DirectionalLight2D:energy") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [0.9] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("MainPlayer:hide_sprite") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [false] -} -tracks/2/type = "value" -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/path = NodePath("MainPlayer:visible") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [true] -} - -[sub_resource type="Animation" id="Animation_lh55k"] -resource_name = "c02_final_show_end" -length = 14.0 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("MainPlayer:hide_sprite") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0, 3.8), -"transitions": PackedFloat32Array(1, 1), -"update": 1, -"values": [true, false] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("MainPlayer:visible") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [true] -} - -[sub_resource type="Animation" id="Animation_ciatp"] -resource_name = "c02_final_show_join" -length = 12.5 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("DirectionalLight2D:energy") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0, 12.1, 12.5), -"transitions": PackedFloat32Array(1, 1, 1), -"update": 0, -"values": [1.0, 1.0, 0.9] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("MainPlayer:visible") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [false] -} - [sub_resource type="AnimationLibrary" id="AnimationLibrary_k01ve"] -_data = { -&"RESET": SubResource("Animation_k01ve"), -&"c02_final_show_end": SubResource("Animation_lh55k"), -&"c02_final_show_join": SubResource("Animation_ciatp") -} [node name="S04" type="Node2D"] -metadata/_edit_horizontal_guides_ = [-627.0] +metadata/_edit_horizontal_guides_ = [-627.0, 80.0, 120.0, 80.0] [node name="Ground" parent="." instance=ExtResource("1_byh4s")] scene_name = "c03_s04" -player_y = 60 +player_y = 58 [node name="AnimationPlayer" parent="Ground" index="0"] libraries = { @@ -137,16 +37,16 @@ offset = Vector2(0, -158) [node name="portal_left" parent="Ground/DeployLayer" index="0"] position = Vector2(18, 29) -target_scene = "c02_s07" -target_portal = "1" [node name="portal_right" parent="Ground/DeployLayer" index="1"] -position = Vector2(632, 30) +position = Vector2(632, 31) [node name="portal_1" parent="Ground/DeployLayer" index="2" instance=ExtResource("5_4efpk")] -position = Vector2(632, 30) +position = Vector2(404, 28) debug_note = "通往院子" portal_name = "1" +target_scene = "c02_s03" +target_portal = "5" [node name="Closeup整理麻将游戏" parent="Ground/DeployLayer" index="3" instance=ExtResource("6_dbkw8")] unique_name_in_owner = true @@ -158,10 +58,11 @@ quit_closeup_on_cancel = false unique_name_in_owner = true position = Vector2(219, 63) packed_scene = ExtResource("8_jmyby") +quit_closeup_on_cancel = false enabled = false [node name="MainPlayer" parent="Ground" index="5"] -position = Vector2(63, 95) +position = Vector2(63, 100) catty_light_energy = 0.5 player_movement_rect = Rect2(26, -158, 587, 316) facing_direction = Vector2(1, 0) @@ -173,15 +74,15 @@ limit_right = 648 limit_bottom = 158 [node name="FGSprite2D" parent="Ground/ParallaxForeground/FGParallaxLayer" index="0"] +visible = false texture = ExtResource("5_vjibx") offset = Vector2(0, -158) [node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"] -points = PackedVector2Array(26, 150, 613, 149) +points = PackedVector2Array(26, 150, 471, 149) [node name="DirectionalLight2D" parent="Ground" index="8"] visible = false -energy = 0.9 blend_mode = 1 [editable path="Ground"] diff --git a/scene/ground/scene/c03/s05_肉铺.tscn b/scene/ground/scene/c03/s05_肉铺.tscn index 41634ada..2e3bc48e 100644 --- a/scene/ground/scene/c03/s05_肉铺.tscn +++ b/scene/ground/scene/c03/s05_肉铺.tscn @@ -1,112 +1,12 @@ -[gd_scene load_steps=10 format=3 uid="uid://6ehb3ux2kilu"] +[gd_scene load_steps=7 format=3 uid="uid://6ehb3ux2kilu"] [ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_ip0og"] -[ext_resource type="Script" uid="uid://brncw0d41f427" path="res://scene/ground/scene/c03/s05_肉铺.gd" id="2_l22xv"] +[ext_resource type="Script" path="res://scene/ground/scene/c03/s05_肉铺.gd" id="2_l22xv"] [ext_resource type="Script" uid="uid://cpejxlfni6n52" path="res://manager/audio_manager/vibe_sfx.gd" id="3_r4bhp"] [ext_resource type="Texture2D" uid="uid://ccl8ud5hbuq1r" path="res://asset/art/scene/c03/s05_肉铺/bg_肉铺内背景.png" id="4_ip0og"] [ext_resource type="Texture2D" uid="uid://c5oth3mdxrnby" path="res://asset/art/scene/c03/s05_肉铺/fg_肉铺内前景.png" id="5_l22xv"] -[sub_resource type="Animation" id="Animation_k01ve"] -length = 0.001 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("DirectionalLight2D:energy") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [0.9] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("MainPlayer:hide_sprite") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [false] -} -tracks/2/type = "value" -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/path = NodePath("MainPlayer:visible") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [true] -} - -[sub_resource type="Animation" id="Animation_lh55k"] -resource_name = "c02_final_show_end" -length = 14.0 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("MainPlayer:hide_sprite") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0, 3.8), -"transitions": PackedFloat32Array(1, 1), -"update": 1, -"values": [true, false] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("MainPlayer:visible") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [true] -} - -[sub_resource type="Animation" id="Animation_ciatp"] -resource_name = "c02_final_show_join" -length = 12.5 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("DirectionalLight2D:energy") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0, 12.1, 12.5), -"transitions": PackedFloat32Array(1, 1, 1), -"update": 0, -"values": [1.0, 1.0, 0.9] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("MainPlayer:visible") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [false] -} - [sub_resource type="AnimationLibrary" id="AnimationLibrary_k01ve"] -_data = { -&"RESET": SubResource("Animation_k01ve"), -&"c02_final_show_end": SubResource("Animation_lh55k"), -&"c02_final_show_join": SubResource("Animation_ciatp") -} [node name="S06" type="Node2D"] metadata/_edit_horizontal_guides_ = [-627.0] @@ -162,7 +62,6 @@ points = PackedVector2Array(26, 150, 513, 150) [node name="DirectionalLight2D" parent="Ground" index="8"] visible = false -energy = 0.9 blend_mode = 1 [editable path="Ground"] diff --git a/scene/ground/scene/c03/s06_胖子卧室.tscn b/scene/ground/scene/c03/s06_胖子卧室.tscn index c85e81ea..ac55acfb 100644 --- a/scene/ground/scene/c03/s06_胖子卧室.tscn +++ b/scene/ground/scene/c03/s06_胖子卧室.tscn @@ -1,112 +1,12 @@ -[gd_scene load_steps=10 format=3 uid="uid://cxacrp8mrrbry"] +[gd_scene load_steps=7 format=3 uid="uid://cxacrp8mrrbry"] [ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_h8p4n"] -[ext_resource type="Script" uid="uid://cxgeon4qs1klv" path="res://scene/ground/scene/c03/s06_胖子卧室.gd" id="2_f527l"] +[ext_resource type="Script" path="res://scene/ground/scene/c03/s06_胖子卧室.gd" id="2_f527l"] [ext_resource type="Script" uid="uid://cpejxlfni6n52" path="res://manager/audio_manager/vibe_sfx.gd" id="3_6747o"] [ext_resource type="Texture2D" uid="uid://c2qdnw8b0rcah" path="res://asset/art/scene/c03/s06_胖子卧室/bg_胖子卧室背景.png" id="4_h8p4n"] [ext_resource type="Texture2D" uid="uid://q20myccplwm7" path="res://asset/art/scene/c03/s06_胖子卧室/fg_胖子卧室前景.png" id="5_f527l"] -[sub_resource type="Animation" id="Animation_k01ve"] -length = 0.001 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("DirectionalLight2D:energy") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [0.9] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("MainPlayer:hide_sprite") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [false] -} -tracks/2/type = "value" -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/path = NodePath("MainPlayer:visible") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [true] -} - -[sub_resource type="Animation" id="Animation_lh55k"] -resource_name = "c02_final_show_end" -length = 14.0 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("MainPlayer:hide_sprite") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0, 3.8), -"transitions": PackedFloat32Array(1, 1), -"update": 1, -"values": [true, false] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("MainPlayer:visible") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [true] -} - -[sub_resource type="Animation" id="Animation_ciatp"] -resource_name = "c02_final_show_join" -length = 12.5 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("DirectionalLight2D:energy") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0, 12.1, 12.5), -"transitions": PackedFloat32Array(1, 1, 1), -"update": 0, -"values": [1.0, 1.0, 0.9] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("MainPlayer:visible") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [false] -} - [sub_resource type="AnimationLibrary" id="AnimationLibrary_k01ve"] -_data = { -&"RESET": SubResource("Animation_k01ve"), -&"c02_final_show_end": SubResource("Animation_lh55k"), -&"c02_final_show_join": SubResource("Animation_ciatp") -} [node name="S06" type="Node2D"] metadata/_edit_horizontal_guides_ = [-627.0] @@ -162,7 +62,6 @@ points = PackedVector2Array(26, 150, 481, 149) [node name="DirectionalLight2D" parent="Ground" index="8"] visible = false -energy = 0.9 blend_mode = 1 [editable path="Ground"] diff --git a/scene/ground/scene/c03/s07_屠宰间.tscn b/scene/ground/scene/c03/s07_屠宰间.tscn index e957533e..482b39fa 100644 --- a/scene/ground/scene/c03/s07_屠宰间.tscn +++ b/scene/ground/scene/c03/s07_屠宰间.tscn @@ -1,112 +1,12 @@ -[gd_scene load_steps=10 format=3 uid="uid://c67732f2we13j"] +[gd_scene load_steps=7 format=3 uid="uid://c67732f2we13j"] [ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_oxs1j"] -[ext_resource type="Script" uid="uid://dh5vxhnfnua3q" path="res://scene/ground/scene/c03/s07_屠宰间.gd" id="2_oxs1j"] +[ext_resource type="Script" path="res://scene/ground/scene/c03/s07_屠宰间.gd" id="2_oxs1j"] [ext_resource type="Script" uid="uid://cpejxlfni6n52" path="res://manager/audio_manager/vibe_sfx.gd" id="3_vyti6"] [ext_resource type="Texture2D" uid="uid://dv4jkirkqgb50" path="res://asset/art/scene/c03/s07_屠宰间/bg_屠宰间背景.png" id="4_oxs1j"] [ext_resource type="Texture2D" uid="uid://btdwnxrmipv4h" path="res://asset/art/scene/c03/s07_屠宰间/fg_屠宰间前景.png" id="5_0gnm3"] -[sub_resource type="Animation" id="Animation_k01ve"] -length = 0.001 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("DirectionalLight2D:energy") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [0.9] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("MainPlayer:hide_sprite") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [false] -} -tracks/2/type = "value" -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/path = NodePath("MainPlayer:visible") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [true] -} - -[sub_resource type="Animation" id="Animation_lh55k"] -resource_name = "c02_final_show_end" -length = 14.0 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("MainPlayer:hide_sprite") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0, 3.8), -"transitions": PackedFloat32Array(1, 1), -"update": 1, -"values": [true, false] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("MainPlayer:visible") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [true] -} - -[sub_resource type="Animation" id="Animation_ciatp"] -resource_name = "c02_final_show_join" -length = 12.5 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("DirectionalLight2D:energy") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0, 12.1, 12.5), -"transitions": PackedFloat32Array(1, 1, 1), -"update": 0, -"values": [1.0, 1.0, 0.9] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("MainPlayer:visible") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [false] -} - [sub_resource type="AnimationLibrary" id="AnimationLibrary_k01ve"] -_data = { -&"RESET": SubResource("Animation_k01ve"), -&"c02_final_show_end": SubResource("Animation_lh55k"), -&"c02_final_show_join": SubResource("Animation_ciatp") -} [node name="S07" type="Node2D"] metadata/_edit_horizontal_guides_ = [-627.0] @@ -161,7 +61,6 @@ points = PackedVector2Array(26, 150, 723, 150) [node name="DirectionalLight2D" parent="Ground" index="8"] visible = false -energy = 0.9 blend_mode = 1 [editable path="Ground"] diff --git a/scene/ground/scene/c03/s08_囚室.tscn b/scene/ground/scene/c03/s08_囚室.tscn index 6e0f8b78..1b4ad191 100644 --- a/scene/ground/scene/c03/s08_囚室.tscn +++ b/scene/ground/scene/c03/s08_囚室.tscn @@ -1,112 +1,12 @@ -[gd_scene load_steps=10 format=3 uid="uid://bixdbbyhroepi"] +[gd_scene load_steps=7 format=3 uid="uid://bixdbbyhroepi"] [ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_fusj3"] -[ext_resource type="Script" uid="uid://ddrlpkqfabx6d" path="res://scene/ground/scene/c03/s08_囚室.gd" id="2_fusj3"] +[ext_resource type="Script" path="res://scene/ground/scene/c03/s08_囚室.gd" id="2_fusj3"] [ext_resource type="Script" uid="uid://cpejxlfni6n52" path="res://manager/audio_manager/vibe_sfx.gd" id="3_jua84"] [ext_resource type="Texture2D" uid="uid://c53e7kxlfj8kw" path="res://asset/art/scene/c03/s08_囚室/bg_囚室背景.png" id="4_fusj3"] [ext_resource type="Texture2D" uid="uid://dfsqs13fm7urb" path="res://asset/art/scene/c03/s08_囚室/fg_囚室前景.png" id="5_i2s3v"] -[sub_resource type="Animation" id="Animation_k01ve"] -length = 0.001 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("DirectionalLight2D:energy") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [0.9] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("MainPlayer:hide_sprite") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [false] -} -tracks/2/type = "value" -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/path = NodePath("MainPlayer:visible") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [true] -} - -[sub_resource type="Animation" id="Animation_lh55k"] -resource_name = "c02_final_show_end" -length = 14.0 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("MainPlayer:hide_sprite") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0, 3.8), -"transitions": PackedFloat32Array(1, 1), -"update": 1, -"values": [true, false] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("MainPlayer:visible") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [true] -} - -[sub_resource type="Animation" id="Animation_ciatp"] -resource_name = "c02_final_show_join" -length = 12.5 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("DirectionalLight2D:energy") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0, 12.1, 12.5), -"transitions": PackedFloat32Array(1, 1, 1), -"update": 0, -"values": [1.0, 1.0, 0.9] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("MainPlayer:visible") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [false] -} - [sub_resource type="AnimationLibrary" id="AnimationLibrary_k01ve"] -_data = { -&"RESET": SubResource("Animation_k01ve"), -&"c02_final_show_end": SubResource("Animation_lh55k"), -&"c02_final_show_join": SubResource("Animation_ciatp") -} [node name="S08" type="Node2D"] metadata/_edit_horizontal_guides_ = [-627.0] @@ -143,7 +43,7 @@ position = Vector2(533, 26) [node name="MainPlayer" parent="Ground" index="5"] position = Vector2(63, 95) catty_light_energy = 0.5 -player_movement_rect = Rect2(37, -158, 485, 316) +player_movement_rect = Rect2(37, -158, 502, 316) facing_direction = Vector2(1, 0) [node name="CameraFocusMarker" parent="Ground" index="6"] @@ -162,7 +62,6 @@ points = PackedVector2Array(37, 149, 539, 149) [node name="DirectionalLight2D" parent="Ground" index="8"] visible = false -energy = 0.9 blend_mode = 1 [editable path="Ground"] diff --git a/scene/ground/scene/c03/s09_棺材房.tscn b/scene/ground/scene/c03/s09_棺材房.tscn index 79814739..d7d11713 100644 --- a/scene/ground/scene/c03/s09_棺材房.tscn +++ b/scene/ground/scene/c03/s09_棺材房.tscn @@ -1,112 +1,12 @@ -[gd_scene load_steps=10 format=3 uid="uid://dfln301xllqpn"] +[gd_scene load_steps=7 format=3 uid="uid://dfln301xllqpn"] [ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_8vqn6"] -[ext_resource type="Script" uid="uid://dxt2u1jajrm1g" path="res://scene/ground/scene/c03/s09_棺材房.gd" id="2_8vqn6"] +[ext_resource type="Script" path="res://scene/ground/scene/c03/s09_棺材房.gd" id="2_8vqn6"] [ext_resource type="Script" uid="uid://cpejxlfni6n52" path="res://manager/audio_manager/vibe_sfx.gd" id="3_5at4l"] [ext_resource type="Texture2D" uid="uid://b1g6hxg1tjp1u" path="res://asset/art/scene/c03/s09_棺材房/bg_棺材房背景.png" id="4_8vqn6"] [ext_resource type="Texture2D" uid="uid://bmny5bvenexwe" path="res://asset/art/scene/c03/s09_棺材房/fg_棺材房前景.png" id="5_sssik"] -[sub_resource type="Animation" id="Animation_k01ve"] -length = 0.001 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("DirectionalLight2D:energy") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [0.9] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("MainPlayer:hide_sprite") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [false] -} -tracks/2/type = "value" -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/path = NodePath("MainPlayer:visible") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [true] -} - -[sub_resource type="Animation" id="Animation_lh55k"] -resource_name = "c02_final_show_end" -length = 14.0 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("MainPlayer:hide_sprite") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0, 3.8), -"transitions": PackedFloat32Array(1, 1), -"update": 1, -"values": [true, false] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("MainPlayer:visible") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [true] -} - -[sub_resource type="Animation" id="Animation_ciatp"] -resource_name = "c02_final_show_join" -length = 12.5 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("DirectionalLight2D:energy") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0, 12.1, 12.5), -"transitions": PackedFloat32Array(1, 1, 1), -"update": 0, -"values": [1.0, 1.0, 0.9] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("MainPlayer:visible") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [false] -} - [sub_resource type="AnimationLibrary" id="AnimationLibrary_k01ve"] -_data = { -&"RESET": SubResource("Animation_k01ve"), -&"c02_final_show_end": SubResource("Animation_lh55k"), -&"c02_final_show_join": SubResource("Animation_ciatp") -} [node name="S09" type="Node2D"] metadata/_edit_horizontal_guides_ = [-627.0] @@ -163,7 +63,6 @@ points = PackedVector2Array(80, 150, 474, 151) [node name="DirectionalLight2D" parent="Ground" index="8"] visible = false -energy = 0.9 blend_mode = 1 [editable path="Ground"] diff --git a/scene/ground/script/c02/谢幕演出.gd b/scene/ground/script/c02/谢幕演出.gd index 2798fbc1..bb16cab2 100644 --- a/scene/ground/script/c02/谢幕演出.gd +++ b/scene/ground/script/c02/谢幕演出.gd @@ -78,8 +78,8 @@ func start(): await create_tween().tween_interval(3.0).finished # 瞎子打断 DialogueManager.show_dialogue_balloon(dialogue_c02, "c02_s11_谢幕交谈3") - # 1.0 渐入 ~ 1.0 渐出 - SceneManager.black_transition(1.0) + # 0.7 渐入 ~ 0.5 ~ 0.7 渐出 + SceneManager.black_transition(0.7, 0.5) # 对话过程中提前退出 await create_tween().tween_interval(1.0).finished $Root.visible = false diff --git a/scene/ground/script/c03/s04_closeup整理麻将游戏.gd b/scene/ground/script/c03/s04_closeup整理麻将游戏.gd index 8c21260a..0f08daa7 100644 --- a/scene/ground/script/c03/s04_closeup整理麻将游戏.gd +++ b/scene/ground/script/c03/s04_closeup整理麻将游戏.gd @@ -2,9 +2,8 @@ extends CanvasLayer signal exit(success: bool) -@onready var bg = $BG as CanvasItem -@onready var hand = $Hand as CanvasItem -@onready var hand_success = $HandSuccess as CanvasItem + +var c03_dialog = preload("uid://b66v5hsf3tdox") var mahjongs = { "三条": preload("uid://b2ectbek7vksi"), @@ -117,18 +116,21 @@ func _check_if_success() -> void: success = false break if success: + var animation_player = $AnimationPlayer as AnimationPlayer $SfxSuccess.play() freezing = true SceneManager.disable_prop_item("prop_麻将") SceneManager.disable_prop_item("prop_麻将2") # 下一阶段 EventManager.set_stage_if_greater("c03_mahjong_game", 1) - hand_success.show() - hand_success.modulate.a = 0.0 - var tween = create_tween() - tween.tween_property(hand, "modulate:a", 0.0, 1.5) - tween.parallel().tween_property(hand_success, "modulate:a", 1.0, 1.5) - tween.tween_interval(3.5) - await tween.finished + DialogueManager.show_dialogue_balloon(c03_dialog, "c03_s04_整理麻将游戏0") + animation_player.play("take_to_the_desk") + await DialogueManager.dialogue_ended + if animation_player.is_playing(): + await animation_player.animation_finished + DialogueManager.show_dialogue_balloon(c03_dialog, "c03_s04_整理麻将游戏1", [GlobalConfig.DIALOG_IGNORE_INPUT]) + SceneManager.black_transition(0.7, 7.0) + ArchiveManager.runtime_set("c03_mahjong_game_black_transition_time", 7.0) + await Util.wait(1.0) exit.emit(true) diff --git a/scene/ground/script/c03/s04_closeup整理麻将游戏.tscn b/scene/ground/script/c03/s04_closeup整理麻将游戏.tscn index 36fe216e..5c062c79 100644 --- a/scene/ground/script/c03/s04_closeup整理麻将游戏.tscn +++ b/scene/ground/script/c03/s04_closeup整理麻将游戏.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=24 format=3 uid="uid://n75766ui6udi"] +[gd_scene load_steps=28 format=3 uid="uid://n75766ui6udi"] [ext_resource type="Script" uid="uid://5r8bu30xpb6m" path="res://scene/ground/script/c03/s04_closeup整理麻将游戏.gd" id="1_npctd"] [ext_resource type="AudioStream" uid="uid://cj2wd18uh67sc" path="res://asset/audio/effect/casino/chipLay2.ogg" id="2_oafpr"] @@ -11,6 +11,9 @@ [ext_resource type="Texture2D" uid="uid://dis6qtf1hvop2" path="res://asset/art/scene/c03/s04_李癞房间/麻将游戏整理/九筒.png" id="7_f6p4s"] [ext_resource type="Texture2D" uid="uid://y15vgb2gq2r3" path="res://asset/art/scene/c03/s04_李癞房间/麻将游戏整理/手.png" id="7_rp00l"] [ext_resource type="Texture2D" uid="uid://tdo5xxovhljp" path="res://asset/art/scene/c03/s04_李癞房间/麻将游戏整理/麻将游戏桌面背景.png" id="7_ta1cv"] +[ext_resource type="AudioStream" uid="uid://5ywoueygwfkh" path="res://asset/audio/effect/casino/cardShove2.ogg" id="7_vspel"] +[ext_resource type="Texture2D" uid="uid://bfu6ogd0q2eu0" path="res://asset/art/scene/c03/s04_李癞房间/麻将游戏整理/麻将游戏地板背景.png" id="8_2kqht"] +[ext_resource type="AudioStream" uid="uid://ca5jspbs6ud3x" path="res://asset/audio/effect/casino/cardPlace2.ogg" id="8_b3wmg"] [ext_resource type="Texture2D" uid="uid://b2pypf81rgqkw" path="res://asset/art/scene/c03/s04_李癞房间/麻将游戏整理/三筒.png" id="8_ib3cx"] [ext_resource type="Texture2D" uid="uid://dtatrr7yiptwe" path="res://asset/art/scene/c03/s04_李癞房间/麻将游戏整理/整理成功.png" id="8_qedsv"] [ext_resource type="Texture2D" uid="uid://bo4hrg3sqpoou" path="res://asset/art/scene/c03/s04_李癞房间/麻将游戏整理/伍万.png" id="9_axqt4"] @@ -19,6 +22,105 @@ [ext_resource type="Texture2D" uid="uid://bsqp5gfgplgrv" path="res://asset/art/scene/c03/s04_李癞房间/麻将游戏整理/麻将整理游戏视觉引导光影.png" id="16_ivruk"] [ext_resource type="Texture2D" uid="uid://doxc87cp3e8i4" path="res://asset/art/scene/c03/s04_李癞房间/麻将游戏整理/二筒.png" id="17_b56iy"] +[sub_resource type="Animation" id="Animation_2kqht"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Hand:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(118, 240)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("BG地板:modulate") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Color(1, 1, 1, 1)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Box/HandSuccess:modulate") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Color(1, 1, 1, 0)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Hand:modulate") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Color(1, 1, 1, 1)] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("Box:position") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(0, 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("Sfx抱起箱子:playing") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} +tracks/7/type = "value" +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/path = NodePath("Sfx放下箱子:playing") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} + [sub_resource type="Animation" id="Animation_qedsv"] resource_name = "hand_swing" length = 5.0 @@ -36,25 +138,99 @@ tracks/0/keys = { "values": [Vector2(118, 225), Vector2(116, 223), Vector2(116, 227), Vector2(118, 225)] } -[sub_resource type="Animation" id="Animation_2kqht"] -length = 0.001 +[sub_resource type="Animation" id="Animation_0b7mu"] +resource_name = "take_to_the_desk" +length = 10.0 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true -tracks/0/path = NodePath("Hand:position") +tracks/0/path = NodePath("BG地板:modulate") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), +"times": PackedFloat32Array(0, 7.8, 8.3), +"transitions": PackedFloat32Array(1, 1, 1), "update": 0, -"values": [Vector2(118, 240)] +"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 1), Color(1, 1, 1, 0)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Box/HandSuccess:modulate") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.833333, 1.26667, 8.5, 9.06667), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1), +"update": 0, +"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 0), Color(1, 1, 1, 1), Color(1, 1, 1, 1), Color(1, 1, 1, 0)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Hand:modulate") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0, 0.566667), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 0)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Box:position") +tracks/3/interp = 2 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0, 1.63333, 2.6, 3.63333, 4.63333, 5.7, 6.76667, 7.66667, 8.56667), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1), +"update": 0, +"values": [Vector2(0, 0), Vector2(0, 0), Vector2(-1, -2), Vector2(2, 1), Vector2(3, 2), Vector2(0, 0), Vector2(-2, -1), Vector2(1, -2), Vector2(0, 0)] +} +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(8.8, 10), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 0)] +} +tracks/5/type = "value" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("Sfx抱起箱子:playing") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = { +"times": PackedFloat32Array(1.16667), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} +tracks/6/type = "value" +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/path = NodePath("Sfx放下箱子:playing") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/keys = { +"times": PackedFloat32Array(8.86667), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] } [sub_resource type="AnimationLibrary" id="AnimationLibrary_0b7mu"] _data = { &"RESET": SubResource("Animation_2kqht"), -&"hand_swing": SubResource("Animation_qedsv") +&"hand_swing": SubResource("Animation_qedsv"), +&"take_to_the_desk": SubResource("Animation_0b7mu") } [sub_resource type="Gradient" id="Gradient_vspel"] @@ -97,13 +273,25 @@ bus = &"game_sfx" script = ExtResource("3_oarv7") metadata/_custom_type_script = "uid://rq6w1vuhuq1m" +[node name="Sfx抱起箱子" type="AudioStreamPlayer" parent="."] +stream = ExtResource("7_vspel") +bus = &"game_sfx" +script = ExtResource("3_oarv7") +metadata/_custom_type_script = "uid://rq6w1vuhuq1m" + +[node name="Sfx放下箱子" type="AudioStreamPlayer" parent="."] +stream = ExtResource("8_b3wmg") +bus = &"game_sfx" +script = ExtResource("3_oarv7") +metadata/_custom_type_script = "uid://rq6w1vuhuq1m" + [node name="AnimationPlayer" type="AnimationPlayer" parent="."] libraries = { &"": SubResource("AnimationLibrary_0b7mu") } autoplay = "hand_swing" -[node name="BG" type="TextureRect" parent="."] +[node name="BG桌面" type="TextureRect" parent="."] anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 @@ -112,32 +300,20 @@ grow_vertical = 2 mouse_filter = 0 texture = ExtResource("7_ta1cv") -[node name="HandSuccess" type="TextureRect" parent="."] -visible = false -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -offset_left = 84.0 -offset_top = 202.0 -offset_right = 84.0 -offset_bottom = 202.0 -grow_horizontal = 2 -grow_vertical = 2 -mouse_filter = 2 -texture = ExtResource("8_qedsv") -stretch_mode = 2 - -[node name="Box" type="TextureRect" parent="."] +[node name="BG地板" type="TextureRect" parent="."] anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 mouse_filter = 0 +texture = ExtResource("8_2kqht") + +[node name="Box" type="Sprite2D" parent="."] texture = ExtResource("3_f6p4s") +centered = false [node name="Right" type="GridContainer" parent="Box"] -layout_mode = 0 offset_left = 287.0 offset_top = 193.0 offset_right = 351.0 @@ -273,7 +449,6 @@ range_layer_max = 10 texture = SubResource("GradientTexture2D_ta1cv") [node name="Left" type="GridContainer" parent="Box"] -layout_mode = 0 offset_left = 241.0 offset_top = 227.0 offset_right = 286.0 @@ -308,7 +483,6 @@ texture = SubResource("GradientTexture2D_ta1cv") [node name="0" type="TextureButton" parent="Box"] unique_name_in_owner = true -layout_mode = 2 offset_left = 319.0 offset_top = 214.0 offset_right = 341.0 @@ -322,6 +496,23 @@ energy = 0.3 range_layer_max = 10 texture = SubResource("GradientTexture2D_ta1cv") +[node name="HandSuccess" type="TextureRect" parent="Box"] +modulate = Color(1, 1, 1, 0) +show_behind_parent = true +light_mask = 2 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = 84.0 +offset_top = 202.0 +offset_right = 84.0 +offset_bottom = 202.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +texture = ExtResource("8_qedsv") +stretch_mode = 2 + [node name="Hand" type="Sprite2D" parent="."] position = Vector2(118, 240) texture = ExtResource("7_rp00l") diff --git a/scene/ground/script/c03/s04_closeup麻将出千游戏.gd b/scene/ground/script/c03/s04_closeup麻将出千游戏.gd index c16ebcf3..8f80fa18 100644 --- a/scene/ground/script/c03/s04_closeup麻将出千游戏.gd +++ b/scene/ground/script/c03/s04_closeup麻将出千游戏.gd @@ -4,68 +4,92 @@ signal exit(arg) @onready var bg = $BG as TextureRect @onready var front_lay = $MahjongsFrontLay as CanvasItem -@onready var stand = $Stand as CanvasItem +@onready var hand = $Hand as CanvasItem +@onready var stand_root = $Stand as CanvasItem @onready var grid = $Stand/MahjongGrid as GridContainer -@onready var stand_mahjongs_btn: Array[TextureButton] = [%"1", %"2", %"3", %"4", %"5", %"6", %"7", %"8", %"9", %"10", %"11", %"12", %"13"] -@onready var stand_right_mahjong: TextureButton = %"14" -@onready var hand_mahjongs_btn: Array[TextureButton] = [%"15", %"16", %"17"] - var mahjongs = { - "南": preload("uid://6hdekasuabnm"), - "三万": preload("uid://dc6sj2holh1gn"), - "五万": preload("uid://bd12rrssmrdbs"), - "幺鸡": preload("uid://batbu02i8svf6"), - "二条": preload("uid://cbn74yc8j72v6"), - "三条": preload("uid://b66kqhy1mmhc5"), - "二筒": preload("uid://djefka3gyhxsv"), - "四筒": preload("uid://da50cog64b0tb"), - "八筒": preload("uid://cr6404ghilc7u"), - "九筒": preload("uid://iovhne3h5dqe"), + # [type][number] + "风南": preload("uid://6hdekasuabnm"), + "万2": preload("uid://c6xcefh4x2t5h"), + "万3": preload("uid://dc6sj2holh1gn"), + "万5": preload("uid://bd12rrssmrdbs"), + "条1": preload("uid://batbu02i8svf6"), + "条2": preload("uid://cbn74yc8j72v6"), + "条3": preload("uid://b66kqhy1mmhc5"), + "筒1": preload("uid://ccpexjd64s5nn"), + "筒2": preload("uid://djefka3gyhxsv"), + "筒4": preload("uid://da50cog64b0tb"), + "筒7": preload("uid://c7tea8ostqbiu"), + "筒8": preload("uid://cr6404ghilc7u"), + "筒9": preload("uid://iovhne3h5dqe"), } -# 回合1-3摸牌:南风B、3万、2筒 -# 回合1-3自动打出的牌(不可换):2万、3万、南风A -# 密码:替换南风B、4筒、2筒 -# 玩家初始牌型(13张):2筒x1,5万x2,南风Ax1,2万x1,4筒x4,1条x1,2条x1,7筒x1,8筒x1 -# 胜利牌型:2筒x2、5万x3、4筒x2、123条x1、789筒x1 -var initial_cards = ["二筒", "五万", "五万", "南", "二条", "四筒", "四筒", "四筒", "四筒", "一条", "二条", "七筒", "八筒"] +@onready var standing_mahjongs_btn: Array[TextureButton] = [%"0", %"1", %"2", %"3", %"4", %"5", %"6", %"7", %"8", %"9", %"10", %"11", %"12", %"13"] +# 替换后会从数组中移除 +@onready var holding_mahjongs_btn_dict: Dictionary[int, TextureButton] = {14: %"14", 15: %"15", 16: %"16"} -# 2万 -# 7筒 -var freezing = false +var current_round := 0 +# 回合1-4摸牌:3万、2万、1条、2筒(胜利) +var dispatched_card_per_round: Array[String] = ["万3", "万2", "条1", "筒2"] +# 回合1-3自动打出的牌+3个密码(共六张):2万、3万、1条、南风、4筒、1筒 +var useless_cards: Array[String] = ["万2", "万3", "条1", "风南", "筒4", "筒1"] +# 玩家初始牌型(13张):78筒x1 南风x1 12条x1 4筒x1 5万x2 2筒x2 9筒x2 1筒 +# 胜利牌型:2筒x3、9筒x2、5万x3、123条x1、789筒x1 +var standing_cards: Array[String] = ["筒7", "筒8", "风南", "条1", "条2", "筒4", "万5", "万5", "筒2", "筒2", "筒9", "筒9", "筒1", ""] +# 赖子手在左下角桌子下,手中为三个麻将,5万、3条、9筒 +var holding_cards_dict: Dictionary[int, String] = {14: "万5", 15: "条3", 16: "筒9"} + +var freezing = true: + set(val): + if freezing != val: + freezing = val + if freezing and selected_btn: + _toggle_selected(selected_btn, false) var success = false var selected_btn: TextureButton +var c03_dialog = preload("uid://b66v5hsf3tdox") + func _ready() -> void: layer = GlobalConfig.CANVAS_LAYER_LITTLE_GAME + stand_root.hide() + hand.hide() _toggle_hightlight_for_all(false) - stand_right_mahjong.pressed.connect(_on_btn_pressed.bind(stand_right_mahjong)) - stand_right_mahjong.mouse_entered.connect(_toggle_hightlight.bind(stand_right_mahjong, true)) - stand_right_mahjong.mouse_exited.connect(_toggle_hightlight.bind(stand_right_mahjong, false)) - for b in stand_mahjongs_btn: + for b in standing_mahjongs_btn: b.mouse_entered.connect(_toggel_hover.bind(b, true)) b.mouse_exited.connect(_toggel_hover.bind(b, false)) b.pressed.connect(_on_btn_pressed.bind(b)) - for b in hand_mahjongs_btn: + for b in holding_mahjongs_btn_dict.values(): b.mouse_entered.connect(_toggel_hover.bind(b, true)) b.mouse_exited.connect(_toggel_hover.bind(b, false)) b.pressed.connect(_on_btn_pressed.bind(b)) + # 检查是否从整理麻将游戏中跳转过来 + var transition_time = ArchiveManager.runtime_get("c03_mahjong_game_black_transition_time", 0.0) + if transition_time > 0: + await Util.wait(transition_time) + _play_dialogue_with_update_stage(0) + await _await_dialog(0) + _start_game() + func _toggel_hover(btn: TextureButton, hovering: bool) -> void: if freezing: return + if btn.disabled: + hovering = false _toggle_hightlight(btn, hovering) + func _on_btn_pressed(btn: TextureButton) -> void: if freezing: return if btn != selected_btn: if selected_btn: _toggle_selected(selected_btn, false) - _exchange_texture(btn, selected_btn) + _exchange_texture_and_card(btn, selected_btn) selected_btn = null else: $SfxSelect.play() @@ -75,24 +99,204 @@ func _on_btn_pressed(btn: TextureButton) -> void: $SfxSelect.play() _toggle_selected(btn, false) selected_btn = null - _check_if_success() func _toggle_selected(btn:TextureButton, selected: bool) -> void: - # 1-14 push up. 15-17 in hand, push down. - var front := int(btn.name) <= 14 + # 0-13 push up. 14-16 in hand, push down. + var front := int(btn.name) <= 13 if (front and selected) or (not front and not selected): btn.size_flags_vertical = Control.SIZE_SHRINK_BEGIN else: btn.size_flags_vertical = Control.SIZE_SHRINK_END -func _exchange_texture(btn1: TextureButton, btn2: TextureButton) -> void: +func _align_card_textures() -> void: + # holding_mahjongs_btn 长度会变 + for k in holding_mahjongs_btn_dict: + holding_mahjongs_btn_dict[k].texture_normal = mahjongs[holding_cards_dict[k]] + # standing_mahjongs_btn 长度不变 + for i in 14: + if standing_cards[i]: + standing_mahjongs_btn[i].texture_normal = mahjongs[standing_cards[i]] + standing_mahjongs_btn[i].modulate = Color.WHITE + standing_mahjongs_btn[i].show() + else: + standing_mahjongs_btn[i].hide() + + +# 发牌 +func _start_game() -> void: + # show_hand 结束时会自动 hand_swing + $AnimationPlayer.play("show_hand") + _play_dialogue_with_update_stage(1) + $SfxStart.play() + stand_root.show() + hand.show() + front_lay.hide() + # dispatch and shuffle + standing_cards[13] = dispatched_card_per_round[current_round] + standing_cards.shuffle() + _align_card_textures() + # shuffle all cards + for b in standing_mahjongs_btn: + _toggle_selected(b, true) + var tween = create_tween() + tween.tween_interval(1.0) + var sfx = $SfxPlace + for b in standing_mahjongs_btn: + tween.tween_interval(0.15) + tween.tween_callback(sfx.play.bind(0.15)) + tween.tween_callback(_toggle_selected.bind(b, false)) + tween.tween_interval(1.5) + tween.tween_callback(standing_cards.sort) + tween.tween_callback(_align_card_textures) + tween.tween_callback($SfxShuffle.play) + await _await_dialog(1) + if tween and tween.is_running(): + await tween.finished + freezing = false + _play_dialogue_with_update_stage(2) + + +func _play_dialogue_with_update_stage(stage: int): + DialogueManager.show_dialogue_balloon(c03_dialog, "c03_s04_打麻将游戏" + str(stage)) + if DialogueManager.dialogue_ended.is_connected(_update_last_dialog): + DialogueManager.dialogue_ended.disconnect(_update_last_dialog) + DialogueManager.dialogue_ended.connect(_update_last_dialog.bind(stage), CONNECT_ONE_SHOT) + +var _last_dialog_stage := -1 +signal _last_dialog_updated + +func _update_last_dialog(_res, id: int) -> void: + if id > _last_dialog_stage: + _last_dialog_stage = id + _last_dialog_updated.emit() + +func _await_dialog(id: int) -> void: + if _last_dialog_stage >= id: + return + await _last_dialog_updated + await _await_dialog(id) + + +func _exchange_texture_and_card(btn1: TextureButton, btn2: TextureButton) -> void: if btn1 and btn2: $SfxSwitch.play() + # exchange texture var texture = btn1.texture_normal btn1.texture_normal = btn2.texture_normal btn2.texture_normal = texture + # exchange card name + var id1 := int(btn1.name) + var id2 := int(btn2.name) + var card_name1 = standing_cards[id1] if id1 <= 13 else holding_cards_dict[id1] + var card_name2 = standing_cards[id2] if id2 <= 13 else holding_cards_dict[id2] + if id1 <= 13: + standing_cards[id1] = card_name2 + else: + holding_cards_dict[id1] = card_name2 + if id2 <= 13: + standing_cards[id2] = card_name1 + else: + holding_cards_dict[id2] = card_name1 + # 判断回合是否成功 + # 要求: 1、standing 区域有 auto_deal_card 2、holding 区域有 should_be_replaced_card + # 查找手牌 id 与区域 id + # 优先先从手里着,再从桌面找不重复的 + var require_replacing_card = intersect(useless_cards, holding_cards_dict) + var require_dealing_card = intersect(useless_cards, standing_cards, require_replacing_card) + if require_replacing_card and require_dealing_card: + useless_cards.erase(require_replacing_card) + useless_cards.erase(require_dealing_card) + _toggle_hightlight_for_all(false) + # 开始执行替换 + freezing = true + await Util.wait(2.0) + # 重新排序 + standing_cards.sort() + $SfxShuffle.play() + _align_card_textures() + var standing_id = standing_cards.find(require_dealing_card) + standing_cards.remove_at(standing_id) + standing_cards.append("") + # 替换到手牌后消失 + var holding_id = holding_cards_dict.find_key(require_replacing_card) + var holding_btn = holding_mahjongs_btn_dict[holding_id] + holding_mahjongs_btn_dict.erase(holding_id) + holding_cards_dict.erase(holding_id) + var tween = create_tween() + # 渐隐,表示打出 + tween.tween_property(standing_mahjongs_btn[standing_id], "modulate:a", 0.0, 3.0) + # tween.parallel().tween_property(holding_btn, "modulate:a", 0.0, 3.0) + # tween.tween_callback(holding_btn.queue_free) + tween.tween_callback(func(): holding_btn.disabled = true) + tween.tween_callback(_align_card_textures) + tween.tween_callback($SfxShuffle.play) + # 下一回合 unfreeze + tween.tween_interval(2.0) + tween.tween_callback(_next_round) + + +func intersect(arr:Array, b, except := ""): + var first_intersection = "" + if b is Dictionary: + for item in b.values(): + if except and item == except: + continue + if arr.has(item): + first_intersection = item + break + elif b is Array: + for item in arr: + if except and item == except: + continue + if b.has(item): + first_intersection = item + break + return first_intersection + + +func _next_round() -> void: + freezing = true + current_round += 1 + if current_round == 1: + # 第一回合结束 + await _await_dialog(2) + _play_dialogue_with_update_stage(3) + # 对话结束后,开始第二回合 + await _await_dialog(3) + _play_dialogue_with_update_stage(4) + elif current_round == 2: + # 第二回合结束 + await _await_dialog(4) + _play_dialogue_with_update_stage(5) + # 对话结束后,开始第三回合 + await _await_dialog(5) + _play_dialogue_with_update_stage(6) + elif current_round == 3: + # 第三回合结束 + await _await_dialog(6) + _play_dialogue_with_update_stage(7) + await _await_dialog(7) + # 开始第四回合,自摸后成功 + _play_dialogue_with_update_stage(8) + standing_cards[13] = dispatched_card_per_round[current_round] + $SfxPlace.play() + _align_card_textures() + await Util.wait(1.0) + standing_cards.sort() + $SfxShuffle.play() + _align_card_textures() + # 第四回合胜利 + if current_round == 3: + await Util.wait(1.0) + $SfxSuccess.play() + print("success") + await _await_dialog(8) + exit.emit(true) + else: + freezing = false + func _toggle_hightlight(btn: TextureButton, hightlight: bool) -> void: if null == btn: @@ -101,33 +305,7 @@ func _toggle_hightlight(btn: TextureButton, hightlight: bool) -> void: func _toggle_hightlight_for_all(hightlighted: bool) -> void: - if stand_right_mahjong: - _toggle_hightlight(stand_right_mahjong, hightlighted) - for b in stand_mahjongs_btn: + for b in standing_mahjongs_btn: _toggle_hightlight(b, hightlighted) - for b in hand_mahjongs_btn: + for b in holding_mahjongs_btn_dict.values(): _toggle_hightlight(b, hightlighted) - - -func _check_if_success() -> void: - success = true - # for hb in hand_mahjongs_btn: - # if not hb.texture_normal in answer_of_in_hand_mahjongs: - success = false - # break - # if success: - # $SfxSuccess.play() - # freezing = true - # SceneManager.disable_prop_item("prop_麻将") - # SceneManager.disable_prop_item("prop_麻将2") - # # 下一阶段 - # EventManager.set_stage_if_greater("c03_mahjong_game", 1) - # hand_success.show() - # hand_success.modulate.a = 0.0 - # var tween = create_tween() - # tween.tween_property(hand, "modulate:a", 0.0, 1.5) - # tween.parallel().tween_property(hand_success, "modulate:a", 1.0, 1.5) - # tween.tween_interval(3.5) - # await tween.finished - # exit.emit(true) - diff --git a/scene/ground/script/c03/s04_closeup麻将出千游戏.tscn b/scene/ground/script/c03/s04_closeup麻将出千游戏.tscn index 587e0a7b..259272f6 100644 --- a/scene/ground/script/c03/s04_closeup麻将出千游戏.tscn +++ b/scene/ground/script/c03/s04_closeup麻将出千游戏.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=27 format=3 uid="uid://cua3uqy4btxqn"] +[gd_scene load_steps=28 format=3 uid="uid://cua3uqy4btxqn"] [ext_resource type="Script" uid="uid://6ns5o344dgfo" path="res://scene/ground/script/c03/s04_closeup麻将出千游戏.gd" id="1_svv4b"] [ext_resource type="Texture2D" uid="uid://d0kaqrb600hxj" path="res://asset/art/scene/c03/s04_李癞房间/打麻将游戏/背景.png" id="2_12fte"] @@ -7,15 +7,16 @@ [ext_resource type="AudioStream" uid="uid://dcxn7dvq3805d" path="res://asset/audio/effect/casino/cardSlide2.ogg" id="3_dmkpy"] [ext_resource type="Texture2D" uid="uid://ddkrgrehgphkx" path="res://asset/art/scene/c03/s04_李癞房间/打麻将游戏/桌子.png" id="3_fkih2"] [ext_resource type="AudioStream" uid="uid://orwlj5usnlng" path="res://asset/audio/effect/casino/cardSlide4.ogg" id="4_cv0jt"] -[ext_resource type="AudioStream" uid="uid://txrow4x3dgoq" path="res://asset/audio/effect/casino/dieGrab1.ogg" id="4_dmkpy"] [ext_resource type="Texture2D" uid="uid://d3xg6rx5axcba" path="res://asset/art/scene/c03/s04_李癞房间/打麻将游戏/横着的麻将两侧.png" id="4_f3y72"] [ext_resource type="Texture2D" uid="uid://dc6sj2holh1gn" path="res://asset/art/scene/c03/s04_李癞房间/打麻将游戏/三万.png" id="4_k8d28"] [ext_resource type="Script" uid="uid://rq6w1vuhuq1m" path="res://scene/entity/audio/sfx.gd" id="5_cv0jt"] [ext_resource type="Texture2D" uid="uid://lyuhsi4v6w7d" path="res://asset/art/scene/c03/s04_李癞房间/打麻将游戏/竖着的麻将.png" id="5_g4w7h"] [ext_resource type="Texture2D" uid="uid://d10g7i8qw300u" path="res://asset/art/scene/c03/s04_李癞房间/打麻将游戏/横着的麻将.png" id="6_bydo0"] -[ext_resource type="AudioStream" uid="uid://blaqwkcfldic6" path="res://asset/audio/effect/casino/cardSlide3.ogg" id="6_dmkpy"] +[ext_resource type="AudioStream" uid="uid://be0crkj8aguk4" path="res://asset/audio/effect/casino/cardOpenPackage2.ogg" id="6_cv0jt"] +[ext_resource type="AudioStream" uid="uid://dijl1phxuagkx" path="res://asset/audio/effect/casino/cardPlace1.ogg" id="6_e4lq6"] [ext_resource type="AudioStream" uid="uid://cqkwtc7ui71xy" path="res://asset/audio/effect/casino/chipLay1.ogg" id="6_l8x8v"] [ext_resource type="AudioStream" uid="uid://cyh1ynixo2li" path="res://asset/audio/effect/casino/chipLay3.ogg" id="7_e4lq6"] +[ext_resource type="AudioStream" uid="uid://dutk2d7nilv3m" path="res://asset/audio/sfx/UI/令牌道具获取.wav" id="9_dmkpy"] [ext_resource type="Texture2D" uid="uid://bw625jmfn5o" path="res://asset/art/scene/c03/s04_李癞房间/打麻将游戏/手.png" id="9_l8x8v"] [sub_resource type="AudioStreamSynchronized" id="AudioStreamSynchronized_012pb"] @@ -27,14 +28,6 @@ stream_1/volume = 0.0 stream_2/stream = ExtResource("4_cv0jt") stream_2/volume = 0.0 -[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_cv0jt"] -playback_mode = 1 -streams_count = 4 -stream_0/stream = ExtResource("2_mqw3j") -stream_1/stream = ExtResource("3_dmkpy") -stream_2/stream = ExtResource("6_dmkpy") -stream_3/stream = ExtResource("4_cv0jt") - [sub_resource type="Animation" id="Animation_2kqht"] length = 0.001 tracks/0/type = "value" @@ -47,7 +40,19 @@ tracks/0/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, -"values": [Vector2(118, 240)] +"values": [Vector2(118, 226)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Hand:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] } [sub_resource type="Animation" id="Animation_qedsv"] @@ -61,16 +66,59 @@ tracks/0/path = NodePath("Hand:position") tracks/0/interp = 2 tracks/0/loop_wrap = true tracks/0/keys = { -"times": PackedFloat32Array(0, 1.23333, 3.9, 5), -"transitions": PackedFloat32Array(1, 1, 1, 1), +"times": PackedFloat32Array(0, 1.23333, 3.9), +"transitions": PackedFloat32Array(1, 1, 1), "update": 0, -"values": [Vector2(118, 225), Vector2(116, 223), Vector2(116, 227), Vector2(118, 225)] +"values": [Vector2(118, 226), Vector2(116, 223), Vector2(116, 227)] +} + +[sub_resource type="Animation" id="Animation_dmkpy"] +resource_name = "show_hand" +length = 3.0 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Hand:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Hand:position") +tracks/1/interp = 2 +tracks/1/loop_wrap = false +tracks/1/keys = { +"times": PackedFloat32Array(0, 3), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector2(80, 357), Vector2(118, 226)] +} +tracks/2/type = "method" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("AnimationPlayer") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(3), +"transitions": PackedFloat32Array(1), +"values": [{ +"args": [&"hand_swing"], +"method": &"play" +}] } [sub_resource type="AnimationLibrary" id="AnimationLibrary_dmkpy"] _data = { &"RESET": SubResource("Animation_2kqht"), -&"hand_swing": SubResource("Animation_qedsv") +&"hand_swing": SubResource("Animation_qedsv"), +&"show_hand": SubResource("Animation_dmkpy") } [sub_resource type="Gradient" id="Gradient_l8x8v"] @@ -89,8 +137,8 @@ colors = PackedColorArray(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0) [sub_resource type="GradientTexture2D" id="GradientTexture2D_dgp1q"] gradient = SubResource("Gradient_svv4b") -width = 31 -height = 48 +width = 28 +height = 45 fill = 2 fill_from = Vector2(0.5, 0.5) fill_to = Vector2(1, 1) @@ -105,8 +153,14 @@ bus = &"game_sfx" script = ExtResource("5_cv0jt") metadata/_custom_type_script = "uid://rq6w1vuhuq1m" -[node name="SfxSlide" type="AudioStreamPlayer" parent="."] -stream = SubResource("AudioStreamRandomizer_cv0jt") +[node name="SfxStart" type="AudioStreamPlayer" parent="."] +stream = ExtResource("6_cv0jt") +bus = &"game_sfx" +script = ExtResource("5_cv0jt") +metadata/_custom_type_script = "uid://rq6w1vuhuq1m" + +[node name="SfxPlace" type="AudioStreamPlayer" parent="."] +stream = ExtResource("6_e4lq6") bus = &"game_sfx" script = ExtResource("5_cv0jt") metadata/_custom_type_script = "uid://rq6w1vuhuq1m" @@ -124,7 +178,7 @@ script = ExtResource("5_cv0jt") metadata/_custom_type_script = "uid://rq6w1vuhuq1m" [node name="SfxSuccess" type="AudioStreamPlayer" parent="."] -stream = ExtResource("4_dmkpy") +stream = ExtResource("9_dmkpy") bus = &"game_sfx" script = ExtResource("5_cv0jt") metadata/_custom_type_script = "uid://rq6w1vuhuq1m" @@ -133,7 +187,6 @@ metadata/_custom_type_script = "uid://rq6w1vuhuq1m" libraries = { &"": SubResource("AnimationLibrary_dmkpy") } -autoplay = "hand_swing" [node name="BG" type="TextureRect" parent="."] anchors_preset = 15 @@ -145,19 +198,21 @@ mouse_filter = 2 texture = ExtResource("2_12fte") stretch_mode = 3 -[node name="Hand" type="Sprite2D" parent="."] -light_mask = 3 -position = Vector2(118, 240) -texture = ExtResource("9_l8x8v") - -[node name="阴影" type="PointLight2D" parent="Hand"] -position = Vector2(8, 3) +[node name="阴影" type="PointLight2D" parent="."] +position = Vector2(128, 245) +energy = 0.7 blend_mode = 1 range_layer_max = 10 range_item_cull_mask = 2 texture = SubResource("GradientTexture2D_mqw3j") -[node name="MarginContainer15" type="MarginContainer" parent="Hand"] +[node name="Hand" type="Sprite2D" parent="."] +visible = false +light_mask = 3 +position = Vector2(118, 226) +texture = ExtResource("9_l8x8v") + +[node name="MarginContainer14" type="MarginContainer" parent="Hand"] custom_minimum_size = Vector2(20, 54) offset_left = -40.0 offset_top = -6.0 @@ -168,6 +223,34 @@ size_flags_vertical = 3 theme_override_constants/margin_top = 0 theme_override_constants/margin_bottom = 8 +[node name="14" type="TextureButton" parent="Hand/MarginContainer14"] +unique_name_in_owner = true +self_modulate = Color(0.798366, 0.798366, 0.798366, 1) +light_mask = 3 +custom_minimum_size = Vector2(27, 47) +layout_mode = 2 +size_flags_vertical = 2 +texture_normal = ExtResource("4_k8d28") +ignore_texture_size = true +stretch_mode = 3 + +[node name="光束" type="PointLight2D" parent="Hand/MarginContainer14/14"] +position = Vector2(13.5, 22.5) +energy = 0.3 +range_layer_max = 10 +texture = SubResource("GradientTexture2D_dgp1q") + +[node name="MarginContainer15" type="MarginContainer" parent="Hand"] +custom_minimum_size = Vector2(20, 54) +offset_left = -2.0 +offset_top = -6.0 +offset_right = 25.0 +offset_bottom = 54.0 +rotation = 0.112722 +size_flags_vertical = 3 +theme_override_constants/margin_top = 0 +theme_override_constants/margin_bottom = 8 + [node name="15" type="TextureButton" parent="Hand/MarginContainer15"] unique_name_in_owner = true self_modulate = Color(0.798366, 0.798366, 0.798366, 1) @@ -187,11 +270,11 @@ texture = SubResource("GradientTexture2D_dgp1q") [node name="MarginContainer16" type="MarginContainer" parent="Hand"] custom_minimum_size = Vector2(20, 54) -offset_left = -2.0 -offset_top = -6.0 -offset_right = 25.0 -offset_bottom = 54.0 -rotation = 0.112722 +offset_left = 28.0 +offset_top = -2.0 +offset_right = 55.0 +offset_bottom = 58.0 +rotation = 0.0818219 size_flags_vertical = 3 theme_override_constants/margin_top = 0 theme_override_constants/margin_bottom = 8 @@ -213,34 +296,6 @@ energy = 0.3 range_layer_max = 10 texture = SubResource("GradientTexture2D_dgp1q") -[node name="MarginContainer17" type="MarginContainer" parent="Hand"] -custom_minimum_size = Vector2(20, 54) -offset_left = 28.0 -offset_top = -2.0 -offset_right = 55.0 -offset_bottom = 58.0 -rotation = 0.0818219 -size_flags_vertical = 3 -theme_override_constants/margin_top = 0 -theme_override_constants/margin_bottom = 8 - -[node name="17" type="TextureButton" parent="Hand/MarginContainer17"] -unique_name_in_owner = true -self_modulate = Color(0.798366, 0.798366, 0.798366, 1) -light_mask = 3 -custom_minimum_size = Vector2(27, 47) -layout_mode = 2 -size_flags_vertical = 2 -texture_normal = ExtResource("4_k8d28") -ignore_texture_size = true -stretch_mode = 3 - -[node name="光束" type="PointLight2D" parent="Hand/MarginContainer17/17"] -position = Vector2(13.5, 22.5) -energy = 0.3 -range_layer_max = 10 -texture = SubResource("GradientTexture2D_dgp1q") - [node name="Table" type="TextureRect" parent="."] anchors_preset = 15 anchor_right = 1.0 @@ -302,23 +357,36 @@ texture = ExtResource("4_f3y72") stretch_mode = 3 [node name="MahjongGrid" type="GridContainer" parent="Stand"] -layout_mode = 1 -anchors_preset = 8 -anchor_left = 0.5 -anchor_top = 0.5 -anchor_right = 0.5 -anchor_bottom = 0.5 -offset_left = -195.0 -offset_top = 25.5 -offset_right = 196.0 -offset_bottom = 79.5 -grow_horizontal = 2 -grow_vertical = 2 +custom_minimum_size = Vector2(0, 55) +layout_mode = 0 +offset_left = 86.0 +offset_top = 191.0 +offset_right = 477.0 +offset_bottom = 246.0 mouse_filter = 2 theme_override_constants/h_separation = 1 theme_override_constants/v_separation = 0 columns = 15 +[node name="MarginContainer" type="MarginContainer" parent="Stand/MahjongGrid"] +layout_mode = 2 +size_flags_vertical = 3 + +[node name="0" type="TextureButton" parent="Stand/MahjongGrid/MarginContainer"] +unique_name_in_owner = true +custom_minimum_size = Vector2(27, 47) +layout_mode = 2 +size_flags_vertical = 8 +texture_normal = ExtResource("4_k8d28") +ignore_texture_size = true +stretch_mode = 3 + +[node name="光束" type="PointLight2D" parent="Stand/MahjongGrid/MarginContainer/0"] +position = Vector2(13.5, 22.5) +energy = 0.3 +range_layer_max = 10 +texture = SubResource("GradientTexture2D_dgp1q") + [node name="1" type="TextureButton" parent="Stand/MahjongGrid"] unique_name_in_owner = true custom_minimum_size = Vector2(27, 47) @@ -514,21 +582,6 @@ energy = 0.3 range_layer_max = 10 texture = SubResource("GradientTexture2D_dgp1q") -[node name="14" type="TextureButton" parent="Stand/MahjongGrid"] -unique_name_in_owner = true -custom_minimum_size = Vector2(27, 47) -layout_mode = 2 -size_flags_vertical = 10 -texture_normal = ExtResource("4_k8d28") -ignore_texture_size = true -stretch_mode = 3 - -[node name="光束" type="PointLight2D" parent="Stand/MahjongGrid/14"] -position = Vector2(13.5, 22.5) -energy = 0.3 -range_layer_max = 10 -texture = SubResource("GradientTexture2D_dgp1q") - [node name="遮罩" type="TextureRect" parent="."] anchors_preset = 15 anchor_right = 1.0