完善打麻将游戏

This commit is contained in:
cakipaul 2025-07-11 00:29:46 +08:00
parent 7d345caad1
commit 23a0391046
28 changed files with 873 additions and 1133 deletions

View File

@ -182,4 +182,3 @@ current_scene 是通过 GroundLoader 加载的,在 ground loader 加载 ground
- 转场 process 机制优化:暂停 & AnimationPlayer 保持运行 - 转场 process 机制优化:暂停 & AnimationPlayer 保持运行
- EventManager 控制事件,使用 Event2D 控制绑定关系 - EventManager 控制事件,使用 Event2D 控制绑定关系
- Vibe Control 控制氛围情绪音乐 - Vibe Control 控制氛围情绪音乐

Binary file not shown.

After

Width:  |  Height:  |  Size: 689 B

View File

@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 695 B

View File

@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 709 B

View File

@ -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

View File

@ -3,3 +3,102 @@
小蝶: (小蝶想请小蝉来家里吃饭,写了请柬) 小蝶: (小蝶想请小蝉来家里吃饭,写了请柬)
陆仁: (父母让小蝶去送请柬,顺便带肉回家做饭) 陆仁: (父母让小蝶去送请柬,顺便带肉回家做饭)
=> END => 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

View File

@ -49,7 +49,7 @@
按住 S 躲藏 [ID:ui_boxcat_press_s] 按住 S 躲藏 [ID:ui_boxcat_press_s]
点击选择信件碎片方向键移动E 旋碎片转Q 退出 [ID:input_拼凑信件] 点击选择信件碎片方向键移动E 旋碎片转Q 退出 [ID:input_拼凑信件]
点击书本可选中或交换Q 退出 [ID:input_书架游戏] 点击书本可选中或交换Q 退出 [ID:input_书架游戏]
还缺一块麻将(幺鸡) [ID:input_麻将游戏_麻将不足] 还缺一块麻将 [ID:input_麻将游戏_麻将不足]
依次点击两块麻将可进行交换 [ID:input_麻将游戏_操作规则] 依次点击两块麻将可进行交换 [ID:input_麻将游戏_操作规则]

View File

@ -20,6 +20,8 @@ const CURRENT_VERSION = 5
var archives := {} var archives := {}
var autosave_timer := Timer.new() var autosave_timer := Timer.new()
# 供运行时缓存跨场景数据
var _runtime_global_dictionary: Dictionary[String, Variant] = {}
func _ready() -> void: func _ready() -> void:
# 禁用默认退出行为,在 _notification 处理 NOTIFICATION_WM_CLOSE_REQUEST 时保存数据 # 禁用默认退出行为,在 _notification 处理 NOTIFICATION_WM_CLOSE_REQUEST 时保存数据
@ -295,3 +297,20 @@ func unlock_memory(id: int) -> void:
SceneManager.pop_notification("ui_notify_mem_update") SceneManager.pop_notification("ui_notify_mem_update")
else: else:
printerr("Archive is null, cannot unlock memory. id=", id) 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)

View File

@ -430,8 +430,9 @@ func show_black_hand(play_sfx := true, queue_free_delay := 0.0) -> void:
var transition_scene = preload("uid://7dxvwqm53ugh") 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() var scene = transition_scene.instantiate()
scene.name = "Transition" scene.name = "Transition"
await get_tree().process_frame
get_tree().current_scene.add_child(scene) get_tree().current_scene.add_child(scene)
scene.run_effect(half_duration) scene.run_effect(half_duration, wait_time)

View File

@ -99,7 +99,7 @@ func _apply_tags() -> void:
var translation_key = dialogue_line.translation_key var translation_key = dialogue_line.translation_key
var text var text
if translation_key: if not translation_key.is_empty():
text = tr(translation_key, "dialogue") text = tr(translation_key, "dialogue")
if text == translation_key: if text == translation_key:
text = dialogue_line.text text = dialogue_line.text

View File

@ -5,12 +5,13 @@ func _ready() -> void:
layer = GlobalConfig.CANVAS_LAYER_EFFECT 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(): if not is_node_ready():
await ready await ready
var rect = $ColorRect as ColorRect var rect = $ColorRect as ColorRect
var tween = create_tween() var tween = create_tween()
rect.modulate.a = 0 rect.modulate.a = 0
tween.tween_property(rect, "modulate:a", 1.0, half_duration) 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_property(rect, "modulate:a", 0.0, half_duration)
tween.tween_callback(queue_free) tween.tween_callback(queue_free)

View File

@ -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="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="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="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"] [sub_resource type="Animation" id="Animation_k01ve"]
length = 0.001 length = 0.001

View File

@ -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="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"] [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="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"] [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"] [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"] [sub_resource type="Gradient" id="Gradient_krvxg"]
interpolation_mode = 2 interpolation_mode = 2
@ -385,7 +285,6 @@ points = PackedVector2Array(30, 151, 723, 150)
[node name="DirectionalLight2D" parent="Ground" index="8"] [node name="DirectionalLight2D" parent="Ground" index="8"]
visible = false visible = false
energy = 0.9
blend_mode = 1 blend_mode = 1
[editable path="Ground"] [editable path="Ground"]

View File

@ -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="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="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://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"] [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="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://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="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="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://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://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="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"] [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"] [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"] [node name="S02" type="Node2D"]
metadata/_edit_horizontal_guides_ = [-627.0] metadata/_edit_horizontal_guides_ = [-627.0]
@ -262,7 +162,6 @@ points = PackedVector2Array(17, 150, 509, 150)
[node name="DirectionalLight2D" parent="Ground" index="8"] [node name="DirectionalLight2D" parent="Ground" index="8"]
visible = false visible = false
energy = 0.9
blend_mode = 1 blend_mode = 1
[editable path="Ground"] [editable path="Ground"]

View File

@ -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="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"] [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="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"] [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"] [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"] [node name="S03" type="Node2D"]
metadata/_edit_horizontal_guides_ = [-627.0] metadata/_edit_horizontal_guides_ = [-627.0]
@ -180,7 +80,9 @@ position = Vector2(501, 46)
title_filter = "c03" title_filter = "c03"
[node name="MainPlayer" parent="Ground" index="5"] [node name="MainPlayer" parent="Ground" index="5"]
visible = false
position = Vector2(34, 98) position = Vector2(34, 98)
hide_sprite = true
catty_light_energy = 0.5 catty_light_energy = 0.5
player_movement_rect = Rect2(35, -158, 506, 316) player_movement_rect = Rect2(35, -158, 506, 316)
facing_direction = Vector2(1, 0) facing_direction = Vector2(1, 0)
@ -201,7 +103,6 @@ points = PackedVector2Array(35, 151, 541, 151)
[node name="DirectionalLight2D" parent="Ground" index="8"] [node name="DirectionalLight2D" parent="Ground" index="8"]
visible = false visible = false
energy = 0.9
blend_mode = 1 blend_mode = 1
[editable path="Ground"] [editable path="Ground"]

View File

@ -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="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"] [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://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"] [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"] [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"] [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")] [node name="Ground" parent="." instance=ExtResource("1_byh4s")]
scene_name = "c03_s04" scene_name = "c03_s04"
player_y = 60 player_y = 58
[node name="AnimationPlayer" parent="Ground" index="0"] [node name="AnimationPlayer" parent="Ground" index="0"]
libraries = { libraries = {
@ -137,16 +37,16 @@ offset = Vector2(0, -158)
[node name="portal_left" parent="Ground/DeployLayer" index="0"] [node name="portal_left" parent="Ground/DeployLayer" index="0"]
position = Vector2(18, 29) position = Vector2(18, 29)
target_scene = "c02_s07"
target_portal = "1"
[node name="portal_right" parent="Ground/DeployLayer" index="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")] [node name="portal_1" parent="Ground/DeployLayer" index="2" instance=ExtResource("5_4efpk")]
position = Vector2(632, 30) position = Vector2(404, 28)
debug_note = "通往院子" debug_note = "通往院子"
portal_name = "1" portal_name = "1"
target_scene = "c02_s03"
target_portal = "5"
[node name="Closeup整理麻将游戏" parent="Ground/DeployLayer" index="3" instance=ExtResource("6_dbkw8")] [node name="Closeup整理麻将游戏" parent="Ground/DeployLayer" index="3" instance=ExtResource("6_dbkw8")]
unique_name_in_owner = true unique_name_in_owner = true
@ -158,10 +58,11 @@ quit_closeup_on_cancel = false
unique_name_in_owner = true unique_name_in_owner = true
position = Vector2(219, 63) position = Vector2(219, 63)
packed_scene = ExtResource("8_jmyby") packed_scene = ExtResource("8_jmyby")
quit_closeup_on_cancel = false
enabled = false enabled = false
[node name="MainPlayer" parent="Ground" index="5"] [node name="MainPlayer" parent="Ground" index="5"]
position = Vector2(63, 95) position = Vector2(63, 100)
catty_light_energy = 0.5 catty_light_energy = 0.5
player_movement_rect = Rect2(26, -158, 587, 316) player_movement_rect = Rect2(26, -158, 587, 316)
facing_direction = Vector2(1, 0) facing_direction = Vector2(1, 0)
@ -173,15 +74,15 @@ limit_right = 648
limit_bottom = 158 limit_bottom = 158
[node name="FGSprite2D" parent="Ground/ParallaxForeground/FGParallaxLayer" index="0"] [node name="FGSprite2D" parent="Ground/ParallaxForeground/FGParallaxLayer" index="0"]
visible = false
texture = ExtResource("5_vjibx") texture = ExtResource("5_vjibx")
offset = Vector2(0, -158) offset = Vector2(0, -158)
[node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"] [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"] [node name="DirectionalLight2D" parent="Ground" index="8"]
visible = false visible = false
energy = 0.9
blend_mode = 1 blend_mode = 1
[editable path="Ground"] [editable path="Ground"]

View File

@ -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="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="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://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"] [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"] [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"] [node name="S06" type="Node2D"]
metadata/_edit_horizontal_guides_ = [-627.0] metadata/_edit_horizontal_guides_ = [-627.0]
@ -162,7 +62,6 @@ points = PackedVector2Array(26, 150, 513, 150)
[node name="DirectionalLight2D" parent="Ground" index="8"] [node name="DirectionalLight2D" parent="Ground" index="8"]
visible = false visible = false
energy = 0.9
blend_mode = 1 blend_mode = 1
[editable path="Ground"] [editable path="Ground"]

View File

@ -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="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="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://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"] [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"] [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"] [node name="S06" type="Node2D"]
metadata/_edit_horizontal_guides_ = [-627.0] metadata/_edit_horizontal_guides_ = [-627.0]
@ -162,7 +62,6 @@ points = PackedVector2Array(26, 150, 481, 149)
[node name="DirectionalLight2D" parent="Ground" index="8"] [node name="DirectionalLight2D" parent="Ground" index="8"]
visible = false visible = false
energy = 0.9
blend_mode = 1 blend_mode = 1
[editable path="Ground"] [editable path="Ground"]

View File

@ -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="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="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://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"] [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"] [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"] [node name="S07" type="Node2D"]
metadata/_edit_horizontal_guides_ = [-627.0] metadata/_edit_horizontal_guides_ = [-627.0]
@ -161,7 +61,6 @@ points = PackedVector2Array(26, 150, 723, 150)
[node name="DirectionalLight2D" parent="Ground" index="8"] [node name="DirectionalLight2D" parent="Ground" index="8"]
visible = false visible = false
energy = 0.9
blend_mode = 1 blend_mode = 1
[editable path="Ground"] [editable path="Ground"]

View File

@ -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="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="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://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"] [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"] [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"] [node name="S08" type="Node2D"]
metadata/_edit_horizontal_guides_ = [-627.0] metadata/_edit_horizontal_guides_ = [-627.0]
@ -143,7 +43,7 @@ position = Vector2(533, 26)
[node name="MainPlayer" parent="Ground" index="5"] [node name="MainPlayer" parent="Ground" index="5"]
position = Vector2(63, 95) position = Vector2(63, 95)
catty_light_energy = 0.5 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) facing_direction = Vector2(1, 0)
[node name="CameraFocusMarker" parent="Ground" index="6"] [node name="CameraFocusMarker" parent="Ground" index="6"]
@ -162,7 +62,6 @@ points = PackedVector2Array(37, 149, 539, 149)
[node name="DirectionalLight2D" parent="Ground" index="8"] [node name="DirectionalLight2D" parent="Ground" index="8"]
visible = false visible = false
energy = 0.9
blend_mode = 1 blend_mode = 1
[editable path="Ground"] [editable path="Ground"]

View File

@ -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="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="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://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"] [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"] [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"] [node name="S09" type="Node2D"]
metadata/_edit_horizontal_guides_ = [-627.0] metadata/_edit_horizontal_guides_ = [-627.0]
@ -163,7 +63,6 @@ points = PackedVector2Array(80, 150, 474, 151)
[node name="DirectionalLight2D" parent="Ground" index="8"] [node name="DirectionalLight2D" parent="Ground" index="8"]
visible = false visible = false
energy = 0.9
blend_mode = 1 blend_mode = 1
[editable path="Ground"] [editable path="Ground"]

View File

@ -78,8 +78,8 @@ func start():
await create_tween().tween_interval(3.0).finished await create_tween().tween_interval(3.0).finished
# 瞎子打断 # 瞎子打断
DialogueManager.show_dialogue_balloon(dialogue_c02, "c02_s11_谢幕交谈3") DialogueManager.show_dialogue_balloon(dialogue_c02, "c02_s11_谢幕交谈3")
# 1.0 渐入 ~ 1.0 渐出 # 0.7 渐入 ~ 0.5 ~ 0.7 渐出
SceneManager.black_transition(1.0) SceneManager.black_transition(0.7, 0.5)
# 对话过程中提前退出 # 对话过程中提前退出
await create_tween().tween_interval(1.0).finished await create_tween().tween_interval(1.0).finished
$Root.visible = false $Root.visible = false

View File

@ -2,9 +2,8 @@ extends CanvasLayer
signal exit(success: bool) signal exit(success: bool)
@onready var bg = $BG as CanvasItem
@onready var hand = $Hand as CanvasItem var c03_dialog = preload("uid://b66v5hsf3tdox")
@onready var hand_success = $HandSuccess as CanvasItem
var mahjongs = { var mahjongs = {
"三条": preload("uid://b2ectbek7vksi"), "三条": preload("uid://b2ectbek7vksi"),
@ -117,18 +116,21 @@ func _check_if_success() -> void:
success = false success = false
break break
if success: if success:
var animation_player = $AnimationPlayer as AnimationPlayer
$SfxSuccess.play() $SfxSuccess.play()
freezing = true freezing = true
SceneManager.disable_prop_item("prop_麻将") SceneManager.disable_prop_item("prop_麻将")
SceneManager.disable_prop_item("prop_麻将2") SceneManager.disable_prop_item("prop_麻将2")
# 下一阶段 # 下一阶段
EventManager.set_stage_if_greater("c03_mahjong_game", 1) EventManager.set_stage_if_greater("c03_mahjong_game", 1)
hand_success.show() DialogueManager.show_dialogue_balloon(c03_dialog, "c03_s04_整理麻将游戏0")
hand_success.modulate.a = 0.0 animation_player.play("take_to_the_desk")
var tween = create_tween() await DialogueManager.dialogue_ended
tween.tween_property(hand, "modulate:a", 0.0, 1.5) if animation_player.is_playing():
tween.parallel().tween_property(hand_success, "modulate:a", 1.0, 1.5) await animation_player.animation_finished
tween.tween_interval(3.5) DialogueManager.show_dialogue_balloon(c03_dialog, "c03_s04_整理麻将游戏1", [GlobalConfig.DIALOG_IGNORE_INPUT])
await tween.finished 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) exit.emit(true)

View File

@ -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="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"] [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://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://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="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://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://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"] [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://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"] [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"] [sub_resource type="Animation" id="Animation_qedsv"]
resource_name = "hand_swing" resource_name = "hand_swing"
length = 5.0 length = 5.0
@ -36,25 +138,99 @@ tracks/0/keys = {
"values": [Vector2(118, 225), Vector2(116, 223), Vector2(116, 227), Vector2(118, 225)] "values": [Vector2(118, 225), Vector2(116, 223), Vector2(116, 227), Vector2(118, 225)]
} }
[sub_resource type="Animation" id="Animation_2kqht"] [sub_resource type="Animation" id="Animation_0b7mu"]
length = 0.001 resource_name = "take_to_the_desk"
length = 10.0
tracks/0/type = "value" tracks/0/type = "value"
tracks/0/imported = false tracks/0/imported = false
tracks/0/enabled = true tracks/0/enabled = true
tracks/0/path = NodePath("Hand:position") tracks/0/path = NodePath("BG地板:modulate")
tracks/0/interp = 1 tracks/0/interp = 1
tracks/0/loop_wrap = true tracks/0/loop_wrap = true
tracks/0/keys = { tracks/0/keys = {
"times": PackedFloat32Array(0), "times": PackedFloat32Array(0, 7.8, 8.3),
"transitions": PackedFloat32Array(1), "transitions": PackedFloat32Array(1, 1, 1),
"update": 0, "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"] [sub_resource type="AnimationLibrary" id="AnimationLibrary_0b7mu"]
_data = { _data = {
&"RESET": SubResource("Animation_2kqht"), &"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"] [sub_resource type="Gradient" id="Gradient_vspel"]
@ -97,13 +273,25 @@ bus = &"game_sfx"
script = ExtResource("3_oarv7") script = ExtResource("3_oarv7")
metadata/_custom_type_script = "uid://rq6w1vuhuq1m" 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="."] [node name="AnimationPlayer" type="AnimationPlayer" parent="."]
libraries = { libraries = {
&"": SubResource("AnimationLibrary_0b7mu") &"": SubResource("AnimationLibrary_0b7mu")
} }
autoplay = "hand_swing" autoplay = "hand_swing"
[node name="BG" type="TextureRect" parent="."] [node name="BG桌面" type="TextureRect" parent="."]
anchors_preset = 15 anchors_preset = 15
anchor_right = 1.0 anchor_right = 1.0
anchor_bottom = 1.0 anchor_bottom = 1.0
@ -112,32 +300,20 @@ grow_vertical = 2
mouse_filter = 0 mouse_filter = 0
texture = ExtResource("7_ta1cv") texture = ExtResource("7_ta1cv")
[node name="HandSuccess" type="TextureRect" parent="."] [node name="BG地板" 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="."]
anchors_preset = 15 anchors_preset = 15
anchor_right = 1.0 anchor_right = 1.0
anchor_bottom = 1.0 anchor_bottom = 1.0
grow_horizontal = 2 grow_horizontal = 2
grow_vertical = 2 grow_vertical = 2
mouse_filter = 0 mouse_filter = 0
texture = ExtResource("8_2kqht")
[node name="Box" type="Sprite2D" parent="."]
texture = ExtResource("3_f6p4s") texture = ExtResource("3_f6p4s")
centered = false
[node name="Right" type="GridContainer" parent="Box"] [node name="Right" type="GridContainer" parent="Box"]
layout_mode = 0
offset_left = 287.0 offset_left = 287.0
offset_top = 193.0 offset_top = 193.0
offset_right = 351.0 offset_right = 351.0
@ -273,7 +449,6 @@ range_layer_max = 10
texture = SubResource("GradientTexture2D_ta1cv") texture = SubResource("GradientTexture2D_ta1cv")
[node name="Left" type="GridContainer" parent="Box"] [node name="Left" type="GridContainer" parent="Box"]
layout_mode = 0
offset_left = 241.0 offset_left = 241.0
offset_top = 227.0 offset_top = 227.0
offset_right = 286.0 offset_right = 286.0
@ -308,7 +483,6 @@ texture = SubResource("GradientTexture2D_ta1cv")
[node name="0" type="TextureButton" parent="Box"] [node name="0" type="TextureButton" parent="Box"]
unique_name_in_owner = true unique_name_in_owner = true
layout_mode = 2
offset_left = 319.0 offset_left = 319.0
offset_top = 214.0 offset_top = 214.0
offset_right = 341.0 offset_right = 341.0
@ -322,6 +496,23 @@ energy = 0.3
range_layer_max = 10 range_layer_max = 10
texture = SubResource("GradientTexture2D_ta1cv") 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="."] [node name="Hand" type="Sprite2D" parent="."]
position = Vector2(118, 240) position = Vector2(118, 240)
texture = ExtResource("7_rp00l") texture = ExtResource("7_rp00l")

View File

@ -4,68 +4,92 @@ signal exit(arg)
@onready var bg = $BG as TextureRect @onready var bg = $BG as TextureRect
@onready var front_lay = $MahjongsFrontLay as CanvasItem @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 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 = { var mahjongs = {
"": preload("uid://6hdekasuabnm"), # [type][number]
"三万": preload("uid://dc6sj2holh1gn"), "风南": preload("uid://6hdekasuabnm"),
"五万": preload("uid://bd12rrssmrdbs"), "万2": preload("uid://c6xcefh4x2t5h"),
"幺鸡": preload("uid://batbu02i8svf6"), "万3": preload("uid://dc6sj2holh1gn"),
"二条": preload("uid://cbn74yc8j72v6"), "万5": preload("uid://bd12rrssmrdbs"),
"三条": preload("uid://b66kqhy1mmhc5"), "条1": preload("uid://batbu02i8svf6"),
"二筒": preload("uid://djefka3gyhxsv"), "条2": preload("uid://cbn74yc8j72v6"),
"四筒": preload("uid://da50cog64b0tb"), "条3": preload("uid://b66kqhy1mmhc5"),
"八筒": preload("uid://cr6404ghilc7u"), "筒1": preload("uid://ccpexjd64s5nn"),
"九筒": preload("uid://iovhne3h5dqe"), "筒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筒 @onready var standing_mahjongs_btn: Array[TextureButton] = [%"0", %"1", %"2", %"3", %"4", %"5", %"6", %"7", %"8", %"9", %"10", %"11", %"12", %"13"]
# 回合1-3自动打出的牌不可换2万、3万、南风A # 替换后会从数组中移除
# 密码替换南风B、4筒、2筒 @onready var holding_mahjongs_btn_dict: Dictionary[int, TextureButton] = {14: %"14", 15: %"15", 16: %"16"}
# 玩家初始牌型13张2筒x15万x2南风Ax12万x14筒x41条x12条x17筒x18筒x1
# 胜利牌型2筒x2、5万x3、4筒x2、123条x1、789筒x1
var initial_cards = ["二筒", "五万", "五万", "", "二条", "四筒", "四筒", "四筒", "四筒", "一条", "二条", "七筒", "八筒"]
# 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 success = false
var selected_btn: TextureButton var selected_btn: TextureButton
var c03_dialog = preload("uid://b66v5hsf3tdox")
func _ready() -> void: func _ready() -> void:
layer = GlobalConfig.CANVAS_LAYER_LITTLE_GAME layer = GlobalConfig.CANVAS_LAYER_LITTLE_GAME
stand_root.hide()
hand.hide()
_toggle_hightlight_for_all(false) _toggle_hightlight_for_all(false)
stand_right_mahjong.pressed.connect(_on_btn_pressed.bind(stand_right_mahjong)) for b in standing_mahjongs_btn:
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:
b.mouse_entered.connect(_toggel_hover.bind(b, true)) b.mouse_entered.connect(_toggel_hover.bind(b, true))
b.mouse_exited.connect(_toggel_hover.bind(b, false)) b.mouse_exited.connect(_toggel_hover.bind(b, false))
b.pressed.connect(_on_btn_pressed.bind(b)) 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_entered.connect(_toggel_hover.bind(b, true))
b.mouse_exited.connect(_toggel_hover.bind(b, false)) b.mouse_exited.connect(_toggel_hover.bind(b, false))
b.pressed.connect(_on_btn_pressed.bind(b)) 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: func _toggel_hover(btn: TextureButton, hovering: bool) -> void:
if freezing: if freezing:
return return
if btn.disabled:
hovering = false
_toggle_hightlight(btn, hovering) _toggle_hightlight(btn, hovering)
func _on_btn_pressed(btn: TextureButton) -> void: func _on_btn_pressed(btn: TextureButton) -> void:
if freezing: if freezing:
return return
if btn != selected_btn: if btn != selected_btn:
if selected_btn: if selected_btn:
_toggle_selected(selected_btn, false) _toggle_selected(selected_btn, false)
_exchange_texture(btn, selected_btn) _exchange_texture_and_card(btn, selected_btn)
selected_btn = null selected_btn = null
else: else:
$SfxSelect.play() $SfxSelect.play()
@ -75,24 +99,204 @@ func _on_btn_pressed(btn: TextureButton) -> void:
$SfxSelect.play() $SfxSelect.play()
_toggle_selected(btn, false) _toggle_selected(btn, false)
selected_btn = null selected_btn = null
_check_if_success()
func _toggle_selected(btn:TextureButton, selected: bool) -> void: func _toggle_selected(btn:TextureButton, selected: bool) -> void:
# 1-14 push up. 15-17 in hand, push down. # 0-13 push up. 14-16 in hand, push down.
var front := int(btn.name) <= 14 var front := int(btn.name) <= 13
if (front and selected) or (not front and not selected): if (front and selected) or (not front and not selected):
btn.size_flags_vertical = Control.SIZE_SHRINK_BEGIN btn.size_flags_vertical = Control.SIZE_SHRINK_BEGIN
else: else:
btn.size_flags_vertical = Control.SIZE_SHRINK_END 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: if btn1 and btn2:
$SfxSwitch.play() $SfxSwitch.play()
# exchange texture
var texture = btn1.texture_normal var texture = btn1.texture_normal
btn1.texture_normal = btn2.texture_normal btn1.texture_normal = btn2.texture_normal
btn2.texture_normal = texture 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: func _toggle_hightlight(btn: TextureButton, hightlight: bool) -> void:
if null == btn: if null == btn:
@ -101,33 +305,7 @@ func _toggle_hightlight(btn: TextureButton, hightlight: bool) -> void:
func _toggle_hightlight_for_all(hightlighted: bool) -> void: func _toggle_hightlight_for_all(hightlighted: bool) -> void:
if stand_right_mahjong: for b in standing_mahjongs_btn:
_toggle_hightlight(stand_right_mahjong, hightlighted)
for b in stand_mahjongs_btn:
_toggle_hightlight(b, hightlighted) _toggle_hightlight(b, hightlighted)
for b in hand_mahjongs_btn: for b in holding_mahjongs_btn_dict.values():
_toggle_hightlight(b, hightlighted) _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)

View File

@ -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="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"] [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="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="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://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://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="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="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://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="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://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://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"] [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"] [sub_resource type="AudioStreamSynchronized" id="AudioStreamSynchronized_012pb"]
@ -27,14 +28,6 @@ stream_1/volume = 0.0
stream_2/stream = ExtResource("4_cv0jt") stream_2/stream = ExtResource("4_cv0jt")
stream_2/volume = 0.0 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"] [sub_resource type="Animation" id="Animation_2kqht"]
length = 0.001 length = 0.001
tracks/0/type = "value" tracks/0/type = "value"
@ -47,7 +40,19 @@ tracks/0/keys = {
"times": PackedFloat32Array(0), "times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1), "transitions": PackedFloat32Array(1),
"update": 0, "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"] [sub_resource type="Animation" id="Animation_qedsv"]
@ -61,16 +66,59 @@ tracks/0/path = NodePath("Hand:position")
tracks/0/interp = 2 tracks/0/interp = 2
tracks/0/loop_wrap = true tracks/0/loop_wrap = true
tracks/0/keys = { tracks/0/keys = {
"times": PackedFloat32Array(0, 1.23333, 3.9, 5), "times": PackedFloat32Array(0, 1.23333, 3.9),
"transitions": PackedFloat32Array(1, 1, 1, 1), "transitions": PackedFloat32Array(1, 1, 1),
"update": 0, "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"] [sub_resource type="AnimationLibrary" id="AnimationLibrary_dmkpy"]
_data = { _data = {
&"RESET": SubResource("Animation_2kqht"), &"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"] [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"] [sub_resource type="GradientTexture2D" id="GradientTexture2D_dgp1q"]
gradient = SubResource("Gradient_svv4b") gradient = SubResource("Gradient_svv4b")
width = 31 width = 28
height = 48 height = 45
fill = 2 fill = 2
fill_from = Vector2(0.5, 0.5) fill_from = Vector2(0.5, 0.5)
fill_to = Vector2(1, 1) fill_to = Vector2(1, 1)
@ -105,8 +153,14 @@ bus = &"game_sfx"
script = ExtResource("5_cv0jt") script = ExtResource("5_cv0jt")
metadata/_custom_type_script = "uid://rq6w1vuhuq1m" metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
[node name="SfxSlide" type="AudioStreamPlayer" parent="."] [node name="SfxStart" type="AudioStreamPlayer" parent="."]
stream = SubResource("AudioStreamRandomizer_cv0jt") 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" bus = &"game_sfx"
script = ExtResource("5_cv0jt") script = ExtResource("5_cv0jt")
metadata/_custom_type_script = "uid://rq6w1vuhuq1m" metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
@ -124,7 +178,7 @@ script = ExtResource("5_cv0jt")
metadata/_custom_type_script = "uid://rq6w1vuhuq1m" metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
[node name="SfxSuccess" type="AudioStreamPlayer" parent="."] [node name="SfxSuccess" type="AudioStreamPlayer" parent="."]
stream = ExtResource("4_dmkpy") stream = ExtResource("9_dmkpy")
bus = &"game_sfx" bus = &"game_sfx"
script = ExtResource("5_cv0jt") script = ExtResource("5_cv0jt")
metadata/_custom_type_script = "uid://rq6w1vuhuq1m" metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
@ -133,7 +187,6 @@ metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
libraries = { libraries = {
&"": SubResource("AnimationLibrary_dmkpy") &"": SubResource("AnimationLibrary_dmkpy")
} }
autoplay = "hand_swing"
[node name="BG" type="TextureRect" parent="."] [node name="BG" type="TextureRect" parent="."]
anchors_preset = 15 anchors_preset = 15
@ -145,19 +198,21 @@ mouse_filter = 2
texture = ExtResource("2_12fte") texture = ExtResource("2_12fte")
stretch_mode = 3 stretch_mode = 3
[node name="Hand" type="Sprite2D" parent="."] [node name="阴影" type="PointLight2D" parent="."]
light_mask = 3 position = Vector2(128, 245)
position = Vector2(118, 240) energy = 0.7
texture = ExtResource("9_l8x8v")
[node name="阴影" type="PointLight2D" parent="Hand"]
position = Vector2(8, 3)
blend_mode = 1 blend_mode = 1
range_layer_max = 10 range_layer_max = 10
range_item_cull_mask = 2 range_item_cull_mask = 2
texture = SubResource("GradientTexture2D_mqw3j") 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) custom_minimum_size = Vector2(20, 54)
offset_left = -40.0 offset_left = -40.0
offset_top = -6.0 offset_top = -6.0
@ -168,6 +223,34 @@ size_flags_vertical = 3
theme_override_constants/margin_top = 0 theme_override_constants/margin_top = 0
theme_override_constants/margin_bottom = 8 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"] [node name="15" type="TextureButton" parent="Hand/MarginContainer15"]
unique_name_in_owner = true unique_name_in_owner = true
self_modulate = Color(0.798366, 0.798366, 0.798366, 1) 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"] [node name="MarginContainer16" type="MarginContainer" parent="Hand"]
custom_minimum_size = Vector2(20, 54) custom_minimum_size = Vector2(20, 54)
offset_left = -2.0 offset_left = 28.0
offset_top = -6.0 offset_top = -2.0
offset_right = 25.0 offset_right = 55.0
offset_bottom = 54.0 offset_bottom = 58.0
rotation = 0.112722 rotation = 0.0818219
size_flags_vertical = 3 size_flags_vertical = 3
theme_override_constants/margin_top = 0 theme_override_constants/margin_top = 0
theme_override_constants/margin_bottom = 8 theme_override_constants/margin_bottom = 8
@ -213,34 +296,6 @@ energy = 0.3
range_layer_max = 10 range_layer_max = 10
texture = SubResource("GradientTexture2D_dgp1q") 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="."] [node name="Table" type="TextureRect" parent="."]
anchors_preset = 15 anchors_preset = 15
anchor_right = 1.0 anchor_right = 1.0
@ -302,23 +357,36 @@ texture = ExtResource("4_f3y72")
stretch_mode = 3 stretch_mode = 3
[node name="MahjongGrid" type="GridContainer" parent="Stand"] [node name="MahjongGrid" type="GridContainer" parent="Stand"]
layout_mode = 1 custom_minimum_size = Vector2(0, 55)
anchors_preset = 8 layout_mode = 0
anchor_left = 0.5 offset_left = 86.0
anchor_top = 0.5 offset_top = 191.0
anchor_right = 0.5 offset_right = 477.0
anchor_bottom = 0.5 offset_bottom = 246.0
offset_left = -195.0
offset_top = 25.5
offset_right = 196.0
offset_bottom = 79.5
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2 mouse_filter = 2
theme_override_constants/h_separation = 1 theme_override_constants/h_separation = 1
theme_override_constants/v_separation = 0 theme_override_constants/v_separation = 0
columns = 15 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"] [node name="1" type="TextureButton" parent="Stand/MahjongGrid"]
unique_name_in_owner = true unique_name_in_owner = true
custom_minimum_size = Vector2(27, 47) custom_minimum_size = Vector2(27, 47)
@ -514,21 +582,6 @@ energy = 0.3
range_layer_max = 10 range_layer_max = 10
texture = SubResource("GradientTexture2D_dgp1q") 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="."] [node name="遮罩" type="TextureRect" parent="."]
anchors_preset = 15 anchors_preset = 15
anchor_right = 1.0 anchor_right = 1.0