From b2fe64c43316d17bc576018d4dc3aa3cdfaa3b7f Mon Sep 17 00:00:00 2001 From: cakipaul Date: Wed, 29 Jan 2025 22:05:27 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=20c01s11=20=E9=BB=84?= =?UTF-8?q?=E5=8C=85=E8=BD=A6=E6=BC=94=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vscode/settings.json | 2 +- .../{f_动画字幕1-05.png => f_动画字幕2.png} | Bin ...字幕1-05.png.import => f_动画字幕2.png.import} | 6 +- .../{f_动画字幕1-06.png => f_动画字幕3.png} | Bin ...字幕1-06.png.import => f_动画字幕3.png.import} | 6 +- asset/dialogue/c01.dialogue | 99 +++---- asset/dialogue/item_description.csv | 1 + asset/dialogue/item_description.dialogue | 1 + config/animation/entity_sprite_frames.tres | 2 +- config/art/static_sprite_frames.tres | 4 +- manager/scene/scene_manager.gd | 35 +++ scene/ground/ground.tscn | 11 +- scene/ground/ground_loader.gd | 1 + .../ground/scene/c01/s06_孤儿院长廊围墙.tscn | 2 +- scene/ground/scene/c01/s07_animation.gd | 17 ++ scene/ground/scene/c01/s07_书店长廊.tscn | 7 +- scene/ground/scene/c01/s08_animation.gd | 17 ++ scene/ground/scene/c01/s08_书店.tscn | 6 +- scene/ground/scene/c01/s09_animation.gd | 17 ++ scene/ground/scene/c01/s09_公寓楼外.tscn | 6 +- scene/ground/scene/c01/s10_animation.gd | 17 ++ scene/ground/scene/c01/s10_公寓楼道.tscn | 6 +- scene/ground/scene/c01/s11_animation.gd | 123 +++++++++ scene/ground/scene/c01/s11_黄包车演出.tscn | 244 ++++++++++++++++++ scene/ground/scene/c02/s01_animation.gd | 4 +- scene/little_game/拼凑信件.gd | 1 + scene/main.tscn | 5 - scene/notification/notification.gd | 14 +- scene/notification/notification.tscn | 29 ++- 29 files changed, 597 insertions(+), 86 deletions(-) rename asset/art/scene/c01/s04_旧版序章/{f_动画字幕1-05.png => f_动画字幕2.png} (100%) rename asset/art/scene/c01/s04_旧版序章/{f_动画字幕1-05.png.import => f_动画字幕2.png.import} (75%) rename asset/art/scene/c01/s04_旧版序章/{f_动画字幕1-06.png => f_动画字幕3.png} (100%) rename asset/art/scene/c01/s04_旧版序章/{f_动画字幕1-06.png.import => f_动画字幕3.png.import} (75%) create mode 100644 scene/ground/scene/c01/s07_animation.gd create mode 100644 scene/ground/scene/c01/s08_animation.gd create mode 100644 scene/ground/scene/c01/s09_animation.gd create mode 100644 scene/ground/scene/c01/s10_animation.gd create mode 100644 scene/ground/scene/c01/s11_animation.gd create mode 100644 scene/ground/scene/c01/s11_黄包车演出.tscn diff --git a/.vscode/settings.json b/.vscode/settings.json index aa424c33..ec4d2034 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,5 +1,5 @@ { - "workbench.colorTheme":"Bluloco Dark Godot", + "workbench.colorTheme":"Monospace Light", "editor.fontFamily": "'Consolas'", "editor.fontSize": 13, "debug.console.fontSize": 13, diff --git a/asset/art/scene/c01/s04_旧版序章/f_动画字幕1-05.png b/asset/art/scene/c01/s04_旧版序章/f_动画字幕2.png similarity index 100% rename from asset/art/scene/c01/s04_旧版序章/f_动画字幕1-05.png rename to asset/art/scene/c01/s04_旧版序章/f_动画字幕2.png diff --git a/asset/art/scene/c01/s04_旧版序章/f_动画字幕1-05.png.import b/asset/art/scene/c01/s04_旧版序章/f_动画字幕2.png.import similarity index 75% rename from asset/art/scene/c01/s04_旧版序章/f_动画字幕1-05.png.import rename to asset/art/scene/c01/s04_旧版序章/f_动画字幕2.png.import index 8df0a4dd..53366be7 100644 --- a/asset/art/scene/c01/s04_旧版序章/f_动画字幕1-05.png.import +++ b/asset/art/scene/c01/s04_旧版序章/f_动画字幕2.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://oq5ci80mkhih" -path="res://.godot/imported/f_动画字幕1-05.png-0557e772ddfbb44f861f897554f6ee86.ctex" +path="res://.godot/imported/f_动画字幕2.png-e5adbc73519cec234743e79532fc50f2.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://asset/art/scene/c01/s04_旧版序章/f_动画字幕1-05.png" -dest_files=["res://.godot/imported/f_动画字幕1-05.png-0557e772ddfbb44f861f897554f6ee86.ctex"] +source_file="res://asset/art/scene/c01/s04_旧版序章/f_动画字幕2.png" +dest_files=["res://.godot/imported/f_动画字幕2.png-e5adbc73519cec234743e79532fc50f2.ctex"] [params] diff --git a/asset/art/scene/c01/s04_旧版序章/f_动画字幕1-06.png b/asset/art/scene/c01/s04_旧版序章/f_动画字幕3.png similarity index 100% rename from asset/art/scene/c01/s04_旧版序章/f_动画字幕1-06.png rename to asset/art/scene/c01/s04_旧版序章/f_动画字幕3.png diff --git a/asset/art/scene/c01/s04_旧版序章/f_动画字幕1-06.png.import b/asset/art/scene/c01/s04_旧版序章/f_动画字幕3.png.import similarity index 75% rename from asset/art/scene/c01/s04_旧版序章/f_动画字幕1-06.png.import rename to asset/art/scene/c01/s04_旧版序章/f_动画字幕3.png.import index 52cfded2..fce9a15a 100644 --- a/asset/art/scene/c01/s04_旧版序章/f_动画字幕1-06.png.import +++ b/asset/art/scene/c01/s04_旧版序章/f_动画字幕3.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://dcjx3dqetfeqq" -path="res://.godot/imported/f_动画字幕1-06.png-1c93dc8e8c2ad06654144e97b0a0b535.ctex" +path="res://.godot/imported/f_动画字幕3.png-8e03f829d8ae44d43a82894743457788.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://asset/art/scene/c01/s04_旧版序章/f_动画字幕1-06.png" -dest_files=["res://.godot/imported/f_动画字幕1-06.png-1c93dc8e8c2ad06654144e97b0a0b535.ctex"] +source_file="res://asset/art/scene/c01/s04_旧版序章/f_动画字幕3.png" +dest_files=["res://.godot/imported/f_动画字幕3.png-8e03f829d8ae44d43a82894743457788.ctex"] [params] diff --git a/asset/dialogue/c01.dialogue b/asset/dialogue/c01.dialogue index e24c4d65..ea3111c7 100644 --- a/asset/dialogue/c01.dialogue +++ b/asset/dialogue/c01.dialogue @@ -20,62 +20,6 @@ => END -~ c01_s04_车夫对话1 -吕萍: “又是这个梦” [ID:c01_吕萍与车夫_01] -吕萍: “这个星期已经第三次了” [ID:c01_吕萍与车夫_02] -吕萍: “我到底是怎么了” [ID:c01_吕萍与车夫_03] -车夫: “小姐,你没事吧?” [ID:c01_吕萍与车夫_04] -吕萍: “啊?哦我没事” [ID:c01_吕萍与车夫_05] -吕萍: “师傅,刚刚什么事情啊?” [ID:c01_吕萍与车夫_06] -车夫: “人没事就好” [ID:c01_吕萍与车夫_07] -车夫: “刚有几个小孩儿突然从路边窜出来” [ID:c01_吕萍与车夫_08] -车夫: “还好我刹住了,大过年差点触霉头” [ID:c01_吕萍与车夫_09] -车夫: “不好意思,耽误你时间了” [ID:c01_吕萍与车夫_10] -吕萍: “没事没事,我其实也没有......那么赶时间” [ID:c01_吕萍与车夫_11] -车夫: “哈哈,小姐你坐好了,跑了“ [ID:c01_吕萍与车夫_12] -=> END - -~ c01_s04_车夫对话2 -车夫: “小姐,你这是回家过年是哇?” [ID:c01_吕萍与车夫_13] -=> END - -~ c01_s04_车夫对话3 -吕萍: “哦,不是的......” [ID:c01_吕萍与车夫_14] -=> END - -~ c01_s04_车夫对话4 -车夫: “啊?不会是工作吧” [ID:c01_吕萍与车夫_15] -=> END - -~ c01_s04_车夫对话5 -车夫: “这不行的,你这小年夜还要安排工作啊” [ID:c01_吕萍与车夫_16] -车夫: “你看我,拉完你这一趟,我也要准备收工了” [ID:c01_吕萍与车夫_17] -车夫: “工作什么的,今天肯定要统统结束掉的,你说对哇” [ID:c01_吕萍与车夫_18] -车夫: “这小年夜不行么,还有大年夜的呀” [ID:c01_吕萍与车夫_19] -车夫: “到时候回去和家里人一起好好吃个年夜饭” [ID:c01_吕萍与车夫_20] -车夫: “时间也差不多” [ID:c01_吕萍与车夫_21] -=> END - -~ c01_s04_车夫对话6 -吕萍: “......” [ID:c01_吕萍与车夫_22] -=> END - -~ c01_s04_车夫对话7 -吕萍: “是到了吗,师傅” [ID:c01_吕萍与车夫_23] -=> END - -~ c01_s04_车夫对话8 -车夫: “到了,芦昌路26弄3号,就是这里” [ID:c01_吕萍与车夫_24] -=> END - -~ c01_s04_车夫对话9 -车夫: “嗯,钱正好,那么我先跑了” [ID:c01_吕萍与车夫_25] -吕萍: “好的,谢谢师傅” [ID:c01_吕萍与车夫_26] -车夫: “哎哟,谢什么” [ID:c01_吕萍与车夫_27] -车夫: “哦,位子上这份信是你的吧,别忘记了” [ID:c01_吕萍与车夫_28] -吕萍: “对的对的,差点就忘记了,谢谢师傅,新年快乐” [ID:c01_吕萍与车夫_29] -车夫: “新年快乐” [ID:c01_吕萍与车夫_30] -=> END ~ c01_s05_院长房间_开场 吕萍: (念诵夜行船——)[#wait=4] [ID:c01_s05_夜行船1] @@ -96,3 +40,46 @@ 小蝶: 啊! [#wait=0.5] [ID:c01_s06_谈论鬼差8] 小胖孩: (台词设计)3...2...1... [#wait=3] [ID:c01_s06_谈论鬼差9] => END + + +~ c01_s11_车夫对话1 +吕萍: “又是这个梦” [ID:c01_吕萍与车夫_01] +吕萍: “这个星期已经第三次了” [ID:c01_吕萍与车夫_02] +吕萍: “我到底是怎么了” [ID:c01_吕萍与车夫_03] +车夫: “小姐,你没事吧?” [ID:c01_吕萍与车夫_04] +吕萍: “啊?哦我没事” [ID:c01_吕萍与车夫_05] +吕萍: “师傅,刚刚什么事情啊?” [ID:c01_吕萍与车夫_06] +车夫: “人没事就好” [ID:c01_吕萍与车夫_07] +车夫: “刚有几个小孩儿突然从路边窜出来” [ID:c01_吕萍与车夫_08] +车夫: “还好我刹住了,大过年差点触霉头” [ID:c01_吕萍与车夫_09] +车夫: “不好意思,耽误你时间了” [ID:c01_吕萍与车夫_10] +吕萍: “没事没事,我其实也没有......那么赶时间” [ID:c01_吕萍与车夫_11] +车夫: “哈哈,小姐你坐好了,跑了“ [ID:c01_吕萍与车夫_12] +=> END + +~ c01_s11_车夫对话2 +车夫: “小姐,你这是回家过年是哇?” [ID:c01_吕萍与车夫_13] +吕萍: “哦,不是的......” [ID:c01_吕萍与车夫_14] +车夫: “啊?不会是工作吧” [ID:c01_吕萍与车夫_15] +=> END + +~ c01_s11_车夫对话3 +车夫: “这不行的,你这小年夜还要安排工作啊” [ID:c01_吕萍与车夫_16] +车夫: “你看我,拉完你这一趟,我也要准备收工了” [ID:c01_吕萍与车夫_17] +车夫: “工作什么的,今天肯定要统统结束掉的,你说对哇” [ID:c01_吕萍与车夫_18] +车夫: “这小年夜不行么,还有大年夜的呀” [ID:c01_吕萍与车夫_19] +车夫: “到时候回去和家里人一起好好吃个年夜饭” [ID:c01_吕萍与车夫_20] +车夫: “时间也差不多” [ID:c01_吕萍与车夫_21] +吕萍: “......” [ID:c01_吕萍与车夫_22] +=> END + +~ c01_s11_车夫对话4 +吕萍: “是到了吗,师傅” [ID:c01_吕萍与车夫_23] +车夫: “到了,芦昌路26弄3号,就是这里” [ID:c01_吕萍与车夫_24] +车夫: “嗯,钱正好,那么我先跑了” [ID:c01_吕萍与车夫_25] +吕萍: “好的,谢谢师傅” [ID:c01_吕萍与车夫_26] +车夫: “哎哟,谢什么” [ID:c01_吕萍与车夫_27] +车夫: “哦,位子上这份信是你的吧,别忘记了” [ID:c01_吕萍与车夫_28] +吕萍: “对的对的,差点就忘记了,谢谢师傅,新年快乐” [ID:c01_吕萍与车夫_29] +车夫: “新年快乐” [ID:c01_吕萍与车夫_30] +=> END \ No newline at end of file diff --git a/asset/dialogue/item_description.csv b/asset/dialogue/item_description.csv index e63cdd6a..b7225ceb 100644 --- a/asset/dialogue/item_description.csv +++ b/asset/dialogue/item_description.csv @@ -38,6 +38,7 @@ ui_auto_saved,自动保存成功,,,, ui_press_e,按 E 与场景互动,,,, ui_press_b,按 B 打开背包,,,, ui_press_shift,按住 Shift 奔跑,,,, +input_拼凑信件,按 E 旋转,方向键移动,,,, ui_获得,获得,,,, ui_退出,退出,Exit,,, ui_阅读,阅读,Read,,, diff --git a/asset/dialogue/item_description.dialogue b/asset/dialogue/item_description.dialogue index 1cc23424..e77dd429 100644 --- a/asset/dialogue/item_description.dialogue +++ b/asset/dialogue/item_description.dialogue @@ -22,6 +22,7 @@ 按 E 与场景互动 [ID:ui_press_e] 按 B 打开背包 [ID:ui_press_b] 按住 Shift 奔跑 [ID:ui_press_shift] +按 E 旋转,方向键移动 [ID:input_拼凑信件] 获得 [ID:ui_获得] 退出 [ID:ui_退出] diff --git a/config/animation/entity_sprite_frames.tres b/config/animation/entity_sprite_frames.tres index 6de9c53a..1ed7b53a 100644 --- a/config/animation/entity_sprite_frames.tres +++ b/config/animation/entity_sprite_frames.tres @@ -1411,7 +1411,7 @@ animations = [{ "duration": 1.0, "texture": ExtResource("115_ct7bj") }], -"loop": true, +"loop": false, "name": &"c01_捡球男孩_关键帧", "speed": 8.0 }, { diff --git a/config/art/static_sprite_frames.tres b/config/art/static_sprite_frames.tres index 0c86b706..83c0e1f2 100644 --- a/config/art/static_sprite_frames.tres +++ b/config/art/static_sprite_frames.tres @@ -14,8 +14,8 @@ [ext_resource type="Texture2D" uid="uid://dgvu4jvbimpvs" path="res://asset/art/scene/c01/s04_旧版序章/e_树.png" id="12_tccdj"] [ext_resource type="Texture2D" uid="uid://dc07t8oud2dhv" path="res://asset/art/scene/c01/s04_旧版序章/e_轿车.png" id="13_1plt5"] [ext_resource type="Texture2D" uid="uid://b0f00retoqxyc" path="res://asset/art/scene/c01/s04_旧版序章/f_动画字幕1.png" id="14_vao82"] -[ext_resource type="Texture2D" uid="uid://oq5ci80mkhih" path="res://asset/art/scene/c01/s04_旧版序章/f_动画字幕1-05.png" id="15_bqgqw"] -[ext_resource type="Texture2D" uid="uid://dcjx3dqetfeqq" path="res://asset/art/scene/c01/s04_旧版序章/f_动画字幕1-06.png" id="16_o1kwd"] +[ext_resource type="Texture2D" uid="uid://oq5ci80mkhih" path="res://asset/art/scene/c01/s04_旧版序章/f_动画字幕2.png" id="15_bqgqw"] +[ext_resource type="Texture2D" uid="uid://dcjx3dqetfeqq" path="res://asset/art/scene/c01/s04_旧版序章/f_动画字幕3.png" id="16_o1kwd"] [ext_resource type="Texture2D" uid="uid://bppjrbdqm37k3" path="res://asset/art/scene/c01/s04_旧版序章/f_第一章标题.png" id="17_0dtov"] [ext_resource type="Texture2D" uid="uid://cjllurf1ouxf" path="res://asset/art/scene/c01/s04_旧版序章/fg_前景1.png" id="18_n1rqy"] [ext_resource type="Texture2D" uid="uid://c2rex8f1hh5xf" path="res://asset/art/scene/c01/s04_旧版序章/fg_前景2.png" id="19_1jd4o"] diff --git a/manager/scene/scene_manager.gd b/manager/scene/scene_manager.gd index a917c1bc..5e5cabbe 100644 --- a/manager/scene/scene_manager.gd +++ b/manager/scene/scene_manager.gd @@ -173,6 +173,10 @@ func pop_notification(msg: String, number := 1) -> void: var notification_node = get_node_or_null("/root/Main/UILayer/Notification") if notification_node: notification_node.show_notification(msg, number) + elif GlobalConfig.DEBUG: + # debug 模式,新建一个 + var n = _create_debug_notification() + n.call_deferred("show_notification", msg, number) else: printerr("pop_notification: Notification node not found") @@ -181,10 +185,41 @@ func pop_center_notification(msg: String) -> void: var notification_node = get_node_or_null("/root/Main/UILayer/Notification") if notification_node: notification_node.show_center_notification(msg) + elif GlobalConfig.DEBUG: + # debug 模式,新建一个 + var n = _create_debug_notification() + n.call_deferred("show_center_notification", msg) else: printerr("pop_center_notification: Notification node not found") +func pop_center_texture(texture: Texture2D, duration := 3.5) -> void: + var notification_node = get_node_or_null("/root/Main/UILayer/Notification") + if notification_node: + notification_node.show_center_texture(texture, duration) + elif GlobalConfig.DEBUG: + # debug 模式,新建一个 + var n = _create_debug_notification() + n.call_deferred("show_center_texture", texture) + else: + printerr("pop_center_texture: Notification node not found") + + +# debug 模式,新建一个 notification node +func _create_debug_notification() -> Notification: + if not GlobalConfig.DEBUG: + return null + var main = get_node_or_null("/root/Main") + if not main: + main = Control.new() + main.set_anchors_preset(Control.PRESET_FULL_RECT) + main.name = "Main" + get_tree().root.call_deferred("add_child", main) + var n = preload("res://scene/notification/notification.tscn").instantiate() + main.add_child(n) + return n + + func pop_dialog( character: String, content: String, diff --git a/scene/ground/ground.tscn b/scene/ground/ground.tscn index b70b4ae0..bdbd9826 100644 --- a/scene/ground/ground.tscn +++ b/scene/ground/ground.tscn @@ -19,16 +19,21 @@ script = ExtResource("1_0vrlo") [node name="AnimationPlayer" type="AnimationPlayer" parent="."] -[node name="BGColorRect" type="ColorRect" parent="."] +[node name="CanvasLayer" type="CanvasLayer" parent="."] +layer = -1 +offset = Vector2(0, -159) +transform = Transform2D(1, 0, 0, 1, 0, -159) + +[node name="BGColorRect" type="ColorRect" parent="CanvasLayer"] z_index = -10 custom_minimum_size = Vector2(664, 318) anchors_preset = 4 anchor_top = 0.5 anchor_bottom = 0.5 offset_left = -50.0 -offset_top = -159.0 +offset_top = -158.0 offset_right = 614.0 -offset_bottom = 159.0 +offset_bottom = 160.0 grow_vertical = 2 mouse_filter = 2 color = Color(0, 0, 0, 1) diff --git a/scene/ground/ground_loader.gd b/scene/ground/ground_loader.gd index 22a15ed7..f889bc62 100644 --- a/scene/ground/ground_loader.gd +++ b/scene/ground/ground_loader.gd @@ -219,4 +219,5 @@ func _on_resources_reload(res): print("resources_reload processing:", res) if not Engine.is_editor_hint() and res.ends_with(".tscn"): ArchiveManager.save_all() + first_entered = true transition_to_scene(current_scene, entrance_portal, true) diff --git a/scene/ground/scene/c01/s06_孤儿院长廊围墙.tscn b/scene/ground/scene/c01/s06_孤儿院长廊围墙.tscn index 76627c72..27974269 100644 --- a/scene/ground/scene/c01/s06_孤儿院长廊围墙.tscn +++ b/scene/ground/scene/c01/s06_孤儿院长廊围墙.tscn @@ -285,7 +285,7 @@ frame = 3 autostart = false move_configs = Array[Dictionary]([{ "animation": &"【墙上黑猫】跑步", -"velocity": Vector2(180, 0) +"velocity": Vector2(220, 0) }]) [node name="猫鼠游戏开始ambush" parent="Ground/DeployLayer" index="16" instance=ExtResource("11_tudob")] diff --git a/scene/ground/scene/c01/s07_animation.gd b/scene/ground/scene/c01/s07_animation.gd new file mode 100644 index 00000000..68319f6f --- /dev/null +++ b/scene/ground/scene/c01/s07_animation.gd @@ -0,0 +1,17 @@ +@tool +extends AnimationRoot + + +# 覆盖该方法 +func _default_data() -> Dictionary: + return {} + + +func _ready() -> void: + super._ready() + if Engine.is_editor_hint(): + return + + +func _on_ground_ready() -> void: + pass diff --git a/scene/ground/scene/c01/s07_书店长廊.tscn b/scene/ground/scene/c01/s07_书店长廊.tscn index a82ad55a..f7a22052 100644 --- a/scene/ground/scene/c01/s07_书店长廊.tscn +++ b/scene/ground/scene/c01/s07_书店长廊.tscn @@ -1,6 +1,7 @@ -[gd_scene load_steps=3 format=3 uid="uid://ds2iyfndwamiy"] +[gd_scene load_steps=4 format=3 uid="uid://ds2iyfndwamiy"] [ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_kbldb"] +[ext_resource type="Script" path="res://scene/ground/scene/c01/s07_animation.gd" id="2_0xomc"] [sub_resource type="LabelSettings" id="LabelSettings_7adaf"] font_size = 20 @@ -10,6 +11,10 @@ font_size = 20 [node name="Ground" parent="." instance=ExtResource("1_kbldb")] scene_name = "c01_s07" +[node name="AnimationPlayer" parent="Ground" index="0"] +script = ExtResource("2_0xomc") +oneshot_animation = "" + [node name="portal_right" parent="Ground/DeployLayer" index="1"] immediately = false target_scene = "c02_s08" diff --git a/scene/ground/scene/c01/s08_animation.gd b/scene/ground/scene/c01/s08_animation.gd new file mode 100644 index 00000000..68319f6f --- /dev/null +++ b/scene/ground/scene/c01/s08_animation.gd @@ -0,0 +1,17 @@ +@tool +extends AnimationRoot + + +# 覆盖该方法 +func _default_data() -> Dictionary: + return {} + + +func _ready() -> void: + super._ready() + if Engine.is_editor_hint(): + return + + +func _on_ground_ready() -> void: + pass diff --git a/scene/ground/scene/c01/s08_书店.tscn b/scene/ground/scene/c01/s08_书店.tscn index 0ad8f026..abc644e5 100644 --- a/scene/ground/scene/c01/s08_书店.tscn +++ b/scene/ground/scene/c01/s08_书店.tscn @@ -1,6 +1,7 @@ -[gd_scene load_steps=3 format=3 uid="uid://cwu4dhayra8pg"] +[gd_scene load_steps=4 format=3 uid="uid://cwu4dhayra8pg"] [ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_b3cca"] +[ext_resource type="Script" path="res://scene/ground/scene/c01/s08_animation.gd" id="2_0lque"] [sub_resource type="LabelSettings" id="LabelSettings_7adaf"] font_size = 20 @@ -10,6 +11,9 @@ font_size = 20 [node name="Ground" parent="." instance=ExtResource("1_b3cca")] scene_name = "c01_s08" +[node name="AnimationPlayer" parent="Ground" index="0"] +script = ExtResource("2_0lque") + [node name="portal_right" parent="Ground/DeployLayer" index="1"] immediately = false target_scene = "c02_s08" diff --git a/scene/ground/scene/c01/s09_animation.gd b/scene/ground/scene/c01/s09_animation.gd new file mode 100644 index 00000000..68319f6f --- /dev/null +++ b/scene/ground/scene/c01/s09_animation.gd @@ -0,0 +1,17 @@ +@tool +extends AnimationRoot + + +# 覆盖该方法 +func _default_data() -> Dictionary: + return {} + + +func _ready() -> void: + super._ready() + if Engine.is_editor_hint(): + return + + +func _on_ground_ready() -> void: + pass diff --git a/scene/ground/scene/c01/s09_公寓楼外.tscn b/scene/ground/scene/c01/s09_公寓楼外.tscn index b058a6fe..02e7e842 100644 --- a/scene/ground/scene/c01/s09_公寓楼外.tscn +++ b/scene/ground/scene/c01/s09_公寓楼外.tscn @@ -1,7 +1,8 @@ -[gd_scene load_steps=4 format=3 uid="uid://c777lv8mjojcw"] +[gd_scene load_steps=5 format=3 uid="uid://c777lv8mjojcw"] [ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_mrwu5"] [ext_resource type="PackedScene" uid="uid://ci34db7xool2n" path="res://scene/ground/script/c01/s01_自动枯萎的花朵.tscn" id="2_shnte"] +[ext_resource type="Script" path="res://scene/ground/scene/c01/s09_animation.gd" id="2_u053j"] [sub_resource type="LabelSettings" id="LabelSettings_7adaf"] font_size = 20 @@ -11,6 +12,9 @@ font_size = 20 [node name="Ground" parent="." instance=ExtResource("1_mrwu5")] scene_name = "c01_s09" +[node name="AnimationPlayer" parent="Ground" index="0"] +script = ExtResource("2_u053j") + [node name="portal_right" parent="Ground/DeployLayer" index="1"] immediately = false target_scene = "c02_s08" diff --git a/scene/ground/scene/c01/s10_animation.gd b/scene/ground/scene/c01/s10_animation.gd new file mode 100644 index 00000000..68319f6f --- /dev/null +++ b/scene/ground/scene/c01/s10_animation.gd @@ -0,0 +1,17 @@ +@tool +extends AnimationRoot + + +# 覆盖该方法 +func _default_data() -> Dictionary: + return {} + + +func _ready() -> void: + super._ready() + if Engine.is_editor_hint(): + return + + +func _on_ground_ready() -> void: + pass diff --git a/scene/ground/scene/c01/s10_公寓楼道.tscn b/scene/ground/scene/c01/s10_公寓楼道.tscn index de4ea87b..a76d0e36 100644 --- a/scene/ground/scene/c01/s10_公寓楼道.tscn +++ b/scene/ground/scene/c01/s10_公寓楼道.tscn @@ -1,6 +1,7 @@ -[gd_scene load_steps=3 format=3 uid="uid://be57l2o3vxxtm"] +[gd_scene load_steps=4 format=3 uid="uid://be57l2o3vxxtm"] [ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_hhs2q"] +[ext_resource type="Script" path="res://scene/ground/scene/c01/s10_animation.gd" id="2_4kx83"] [sub_resource type="LabelSettings" id="LabelSettings_7adaf"] font_size = 20 @@ -10,6 +11,9 @@ font_size = 20 [node name="Ground" parent="." instance=ExtResource("1_hhs2q")] scene_name = "c01_s10" +[node name="AnimationPlayer" parent="Ground" index="0"] +script = ExtResource("2_4kx83") + [node name="portal_right" parent="Ground/DeployLayer" index="1"] immediately = false target_scene = "c02_s08" diff --git a/scene/ground/scene/c01/s11_animation.gd b/scene/ground/scene/c01/s11_animation.gd new file mode 100644 index 00000000..efa546e8 --- /dev/null +++ b/scene/ground/scene/c01/s11_animation.gd @@ -0,0 +1,123 @@ +@tool +extends AnimationRoot + +var footstep_sfx: Sfx +var chapter_sfx: Sfx +var main_character: AnimatedSprite2D +# 2:33 ~ 3:44, 71s +var duration := 67.0 +var target_x := 9550.0 +var building_duration := 30.0 +var building_y := 450.0 + +var title_1 = preload("res://asset/art/scene/c01/s04_旧版序章/f_动画字幕1.png") +var title_2 = preload("res://asset/art/scene/c01/s04_旧版序章/f_动画字幕2.png") +var title_3 = preload("res://asset/art/scene/c01/s04_旧版序章/f_动画字幕3.png") +var chapter_title = preload("res://asset/art/scene/c01/s04_旧版序章/f_第一章标题.png") + + +# 覆盖该方法 +func _default_data() -> Dictionary: + return {} + + +func _ready() -> void: + super._ready() + if Engine.is_editor_hint(): + return + + +func _on_ground_ready() -> void: + main_character = $"../DeployLayer/车夫与吕萍" + footstep_sfx = $"黄包车Sfx" + chapter_sfx = $chapter_sfx + SceneManager.get_camera_marker().limit_bottom = 158 + SceneManager.get_camera_marker().limit_top = -158 + play("intro") + + # ## test 测试最后运镜 ## + # main_character.global_position.x = target_x + # call_deferred("_on_finished") + + +func pop_title_1(): + SceneManager.pop_center_texture(title_1) + + +func pop_title_2(): + SceneManager.pop_center_texture(title_2) + + +func pop_title_3(): + SceneManager.pop_center_texture(title_3) + + +# 又是这个梦.. 12句 +func dialog1() -> void: + DialogueManager.show_dialogue_balloon(dialogue_c01, "c01_s11_车夫对话1") + DialogueManager.dialogue_ended.connect(_start_running, CONNECT_ONE_SHOT) + + +func _start_running(_res = null): + main_character.play("c01_车夫_running") + footstep_sfx.play() + footstep_sfx.finished.connect(_loop_sfx) + var tween = create_tween() + tween.tween_property(main_character, "global_position:x", target_x, duration) + tween.tween_callback(_on_finished) + + +func _loop_sfx(): + footstep_sfx.play() + + +# 车夫: “小姐,你这是回家过年是哇?” +# 车夫: “啊?不会是工作吧” +func dialog2() -> void: + DialogueManager.show_dialogue_balloon(dialogue_c01, "c01_s11_车夫对话2") + + +# 6句 +# 车夫: “这不行的,你这小年夜还要安排工作啊” +# 吕萍: “......” +func dialog3() -> void: + DialogueManager.show_dialogue_balloon(dialogue_c01, "c01_s11_车夫对话3") + + +func _on_finished(): + SceneManager.get_camera_marker().limit_bottom = 158 + SceneManager.get_camera_marker().limit_top = -1000 + footstep_sfx.stop() + # 吕萍: “是到了吗,师傅” + # 车夫: “到了,芦昌路26弄3号,就是这里” + # 6句 + # 车夫: “嗯,钱正好,那么我先跑了” + DialogueManager.show_dialogue_balloon(dialogue_c01, "c01_s11_车夫对话4") + # 运镜 marker + var marker = Node2D.new() + get_parent().add_child(marker) + main_character.play("c01_车夫_idle") + marker.global_position = main_character.global_position + var target_y = marker.global_position.y - building_y + var camera = SceneManager.get_camera_marker() + camera.focus_node(marker) + camera.shake_enabled = true + camera.shake_strength = 0.5 + camera.shake_recovery_speed = 4.0 + # 运镜,上下打量公寓楼 + var tween = create_tween() + tween.tween_interval(3.0) + tween.tween_callback(camera.tween_zoom.bind(0.7, 3.0)) + tween.tween_property(marker, "global_position:y", target_y, building_duration) + tween.tween_callback(_show_chapter) + + +# 展示章节转场 +func _show_chapter(): + chapter_sfx.play() + SceneManager.pop_center_texture(chapter_title) + get_tree().create_timer(3.5).timeout.connect(_transition) + + +func _transition(): + SceneManager.get_ground_loader().transition_to_scene("c02_s01", "left", false) diff --git a/scene/ground/scene/c01/s11_黄包车演出.tscn b/scene/ground/scene/c01/s11_黄包车演出.tscn new file mode 100644 index 00000000..9c876b28 --- /dev/null +++ b/scene/ground/scene/c01/s11_黄包车演出.tscn @@ -0,0 +1,244 @@ +[gd_scene load_steps=18 format=3 uid="uid://coiumaaenimbc"] + +[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_1sveo"] +[ext_resource type="Texture2D" uid="uid://xiul48vc10fx" path="res://asset/art/scene/c01/s04_旧版序章/bg_底图带楼.png" id="2_e846h"] +[ext_resource type="Script" path="res://scene/ground/scene/c01/s11_animation.gd" id="2_espm6"] +[ext_resource type="Texture2D" uid="uid://cjllurf1ouxf" path="res://asset/art/scene/c01/s04_旧版序章/fg_前景1.png" id="3_fduds"] +[ext_resource type="SpriteFrames" uid="uid://b7fhheih1hbvf" path="res://config/animation/entity_sprite_frames.tres" id="3_hnnuc"] +[ext_resource type="Texture2D" uid="uid://dgvu4jvbimpvs" path="res://asset/art/scene/c01/s04_旧版序章/e_树.png" id="3_ivvgx"] +[ext_resource type="AudioStream" uid="uid://qu38tv548jhj" path="res://asset/audio/sfx/c01/拉黄包车_loop.wav" id="3_ummkx"] +[ext_resource type="Script" path="res://scene/entity/general/sfx.gd" id="3_vx53v"] +[ext_resource type="Texture2D" uid="uid://qbwh5si2owve" path="res://asset/art/scene/c01/s04_旧版序章/fg_前景3.png" id="4_1flr0"] +[ext_resource type="Texture2D" uid="uid://dc07t8oud2dhv" path="res://asset/art/scene/c01/s04_旧版序章/e_轿车.png" id="4_vaqc6"] +[ext_resource type="AudioStream" uid="uid://deexnwq1bkv6x" path="res://asset/audio/sfx/c01/序章标题出现.wav" id="5_nrdt8"] +[ext_resource type="Texture2D" uid="uid://c2rex8f1hh5xf" path="res://asset/art/scene/c01/s04_旧版序章/fg_前景2.png" id="5_rbgqg"] +[ext_resource type="PackedScene" uid="uid://bnf3lkcbpx1ar" path="res://scene/entity/ambush.tscn" id="6_3k8jj"] + +[sub_resource type="Animation" id="Animation_yijw1"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("DeployLayer/小孩捡球:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [0] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("DeployLayer/小孩捡球:offset") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(0, 0)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("DeployLayer/小孩捡球: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_blie8"] +resource_name = "intro" +length = 10.0 +capture_included = true +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("DeployLayer/小孩捡球:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 7.73333), +"transitions": PackedFloat32Array(1, 1), +"update": 2, +"values": [0, 60] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("DeployLayer/小孩捡球:offset") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0.0333333, 4.93333, 7.76667), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector2(0, 0), Vector2(0, 0), Vector2(200, 0)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("DeployLayer/小孩捡球:visible") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0, 7.8), +"transitions": PackedFloat32Array(1, 1), +"update": 1, +"values": [true, false] +} +tracks/3/type = "method" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("AnimationPlayer") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(4.63333), +"transitions": PackedFloat32Array(1), +"values": [{ +"args": [], +"method": &"dialog1" +}] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_6ojod"] +_data = { +"RESET": SubResource("Animation_yijw1"), +"intro": SubResource("Animation_blie8") +} + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_b0oon"] +size = Vector2(200, 100) + +[node name="S11" type="Node2D"] + +[node name="Ground" parent="." instance=ExtResource("1_1sveo")] +scene_name = "c01_s11" +player_y = 40 + +[node name="AnimationPlayer" parent="Ground" index="0"] +libraries = { +"": SubResource("AnimationLibrary_6ojod") +} +script = ExtResource("2_espm6") +oneshot_animation = "" + +[node name="黄包车Sfx" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="0"] +stream = ExtResource("3_ummkx") +bus = &"game_sfx" +script = ExtResource("3_vx53v") +dir = "c01" +file = "拉黄包车_loop.wav" + +[node name="chapter_sfx" type="AudioStreamPlayer" parent="Ground/AnimationPlayer" index="1"] +stream = ExtResource("5_nrdt8") +bus = &"game_sfx" +script = ExtResource("3_vx53v") +dir = "c01" +file = "序章标题出现.wav" + +[node name="BGSprite2D" parent="Ground" index="2"] +position = Vector2(0, 6) +texture = ExtResource("2_e846h") +offset = Vector2(0, -624) + +[node name="portal_left" parent="Ground/DeployLayer" index="0"] +position = Vector2(95, 40) + +[node name="portal_right" parent="Ground/DeployLayer" index="1"] +immediately = false +target_scene = "c02_s01" + +[node name="车夫与吕萍" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="2"] +position = Vector2(161, 51) +sprite_frames = ExtResource("3_hnnuc") +animation = &"c01_车夫_idle" +autoplay = "c01_车夫_idle" + +[node name="Area2D" type="Area2D" parent="Ground/DeployLayer/车夫与吕萍"] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Ground/DeployLayer/车夫与吕萍/Area2D"] +shape = SubResource("RectangleShape2D_b0oon") + +[node name="小孩捡球" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="3"] +position = Vector2(461, 80) +sprite_frames = ExtResource("3_hnnuc") +animation = &"c01_捡球男孩_关键帧" +autoplay = "c01_捡球男孩_关键帧" + +[node name="ambush_title1" parent="Ground/DeployLayer" index="4" instance=ExtResource("6_3k8jj")] +position = Vector2(1569, 21) +trigger_mode = "area_enter" +one_shot = false +freeze_time = 1.0 +hook_method = "pop_title_1" + +[node name="ambush_title2" parent="Ground/DeployLayer" index="5" instance=ExtResource("6_3k8jj")] +position = Vector2(4730, 11) +trigger_mode = "area_enter" +one_shot = false +hook_method = "pop_title_2" + +[node name="ambush_title3" parent="Ground/DeployLayer" index="6" instance=ExtResource("6_3k8jj")] +position = Vector2(5527, 2) +trigger_mode = "area_enter" +one_shot = false +hook_method = "pop_title_3" + +[node name="ambush_dialog2" parent="Ground/DeployLayer" index="7" instance=ExtResource("6_3k8jj")] +position = Vector2(1956, 5) +trigger_mode = "area_enter" +one_shot = false +hook_method = "dialog2" + +[node name="ambush_dialog3" parent="Ground/DeployLayer" index="8" instance=ExtResource("6_3k8jj")] +position = Vector2(5009, -15) +trigger_mode = "area_enter" +one_shot = false +hook_method = "dialog3" + +[node name="MainPlayer" parent="Ground" index="5"] +visible = false +position = Vector2(26, 118) +character = "小小蝶" +action_locked = true +action_freezed = true + +[node name="CameraFocusMarker" parent="Ground" index="6" node_paths=PackedStringArray("focusing_node")] +focusing_node = NodePath("../DeployLayer/车夫与吕萍") +force_offset = Vector2(50, -48) + +[node name="Sprite2D" type="Sprite2D" parent="Ground/ParallaxForeground/BGParallaxLayer" index="0"] +position = Vector2(3556, 6) +texture = ExtResource("3_ivvgx") + +[node name="Sprite2D2" type="Sprite2D" parent="Ground/ParallaxForeground/BGParallaxLayer" index="1"] +position = Vector2(2549, 60) +texture = ExtResource("4_vaqc6") + +[node name="FGSprite2D" parent="Ground/ParallaxForeground/FGParallaxLayer" index="0"] +position = Vector2(871, -143) +scale = Vector2(1.18, 1.18) +texture = ExtResource("3_fduds") + +[node name="Sprite2D3" type="Sprite2D" parent="Ground/ParallaxForeground/FGParallaxLayer" index="1"] +unique_name_in_owner = true +position = Vector2(4867, -134) +scale = Vector2(1.14, 1.14) +texture = ExtResource("4_1flr0") +centered = false + +[node name="Sprite2D2" type="Sprite2D" parent="Ground/ParallaxForeground/FGParallaxLayer" index="2"] +unique_name_in_owner = true +position = Vector2(6924, 31) +texture = ExtResource("5_rbgqg") +centered = false + +[editable path="Ground"] diff --git a/scene/ground/scene/c02/s01_animation.gd b/scene/ground/scene/c02/s01_animation.gd index 23c3542c..306566d8 100644 --- a/scene/ground/scene/c02/s01_animation.gd +++ b/scene/ground/scene/c02/s01_animation.gd @@ -12,8 +12,8 @@ func _ready() -> void: if Engine.is_editor_hint(): return if not data["received_letter"]: - SceneManager.freeze_player(0.5) - get_tree().create_timer(0.5).timeout.connect(_give_letter) + SceneManager.freeze_player(1.5) + get_tree().create_timer(1.5).timeout.connect(_give_letter) elif GlobalConfig.DEBUG: print("_give_letter 已发放") diff --git a/scene/little_game/拼凑信件.gd b/scene/little_game/拼凑信件.gd index dd01f024..e407cc20 100644 --- a/scene/little_game/拼凑信件.gd +++ b/scene/little_game/拼凑信件.gd @@ -19,6 +19,7 @@ func _ready() -> void: _shuffle() _display_selected() whole.visible = false + SceneManager.pop_center_notification(tr("input_拼凑信件")) func _select_part(part) -> void: diff --git a/scene/main.tscn b/scene/main.tscn index 154c2237..8fcd933f 100644 --- a/scene/main.tscn +++ b/scene/main.tscn @@ -62,11 +62,6 @@ mouse_filter = 2 color = Color(0, 0, 0, 1) [node name="Notification" parent="UILayer" instance=ExtResource("5_3gg5t")] -offset_left = -12.0 -offset_top = -2.0 -offset_right = -12.0 -offset_bottom = -2.0 -metadata/_edit_use_anchors_ = true [node name="PropHUD" parent="UILayer" instance=ExtResource("4_t7gb2")] scale = Vector2(0.24, 0.24) diff --git a/scene/notification/notification.gd b/scene/notification/notification.gd index 4205fe9e..464029b2 100644 --- a/scene/notification/notification.gd +++ b/scene/notification/notification.gd @@ -1,7 +1,8 @@ -extends Control +class_name Notification extends Control @onready var top_right_label := %RichTextLabel as RichTextLabel @onready var top_center_label := %CenterLabel as Label +@onready var center_texture := %CenterTexture as TextureRect var pending_notifications = [] var tweening_top_left := false @@ -10,6 +11,7 @@ var tweening_top_left := false func _ready() -> void: top_right_label.modulate.a = 0 top_center_label.modulate.a = 0 + center_texture.modulate.a = 0 # # test notification in editor @@ -27,6 +29,16 @@ func _ready() -> void: # show_notification(tr("ui_saved_all"), 1) +func show_center_texture(texture, duration := 3.0): + if not center_texture: + return + center_texture.texture = texture + var tween = create_tween() + tween.tween_property(center_texture, "modulate:a", 1, 0.4) + tween.tween_interval(max(0.1, duration - .8)) + tween.tween_property(center_texture, "modulate:a", 0, 0.4) + + func show_center_notification(msg, duration := 3.0): if not top_center_label: return diff --git a/scene/notification/notification.tscn b/scene/notification/notification.tscn index 0c6ddf20..85c706fa 100644 --- a/scene/notification/notification.tscn +++ b/scene/notification/notification.tscn @@ -1,7 +1,8 @@ -[gd_scene load_steps=4 format=3 uid="uid://5g07x6q7wwr1"] +[gd_scene load_steps=5 format=3 uid="uid://5g07x6q7wwr1"] [ext_resource type="Script" path="res://scene/notification/notification.gd" id="1_j0g80"] [ext_resource type="FontFile" uid="uid://dr8bp6p7byb37" path="res://asset/font/字体/方正楷体简体.TTF" id="2_eh7gu"] +[ext_resource type="Texture2D" uid="uid://b0f00retoqxyc" path="res://asset/art/scene/c01/s04_旧版序章/f_动画字幕1.png" id="3_wqejl"] [sub_resource type="LabelSettings" id="LabelSettings_ycsas"] font = ExtResource("2_eh7gu") @@ -48,9 +49,9 @@ layout_mode = 1 anchors_preset = 5 anchor_left = 0.5 anchor_right = 0.5 -offset_left = -20.0 -offset_right = 20.0 -offset_bottom = 40.0 +offset_left = -40.0 +offset_right = 40.0 +offset_bottom = 75.0 grow_horizontal = 2 mouse_filter = 2 theme_override_constants/margin_top = 52 @@ -60,3 +61,23 @@ unique_name_in_owner = true layout_mode = 2 text = "互动提示" label_settings = SubResource("LabelSettings_ycsas") + +[node name="MarginContainer3" type="MarginContainer" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/margin_left = 32 +theme_override_constants/margin_top = 64 +theme_override_constants/margin_right = 32 +theme_override_constants/margin_bottom = 64 + +[node name="CenterTexture" type="TextureRect" parent="MarginContainer3"] +unique_name_in_owner = true +layout_mode = 2 +mouse_filter = 2 +texture = ExtResource("3_wqejl") +expand_mode = 1 +stretch_mode = 5