diff --git a/asset/art/scene/c03/s04_李癞房间/打麻将游戏/四桶.png b/asset/art/scene/c03/s04_李癞房间/打麻将游戏/四筒.png similarity index 100% rename from asset/art/scene/c03/s04_李癞房间/打麻将游戏/四桶.png rename to asset/art/scene/c03/s04_李癞房间/打麻将游戏/四筒.png diff --git a/asset/art/scene/c03/s04_李癞房间/打麻将游戏/四桶.png.import b/asset/art/scene/c03/s04_李癞房间/打麻将游戏/四筒.png.import similarity index 77% rename from asset/art/scene/c03/s04_李癞房间/打麻将游戏/四桶.png.import rename to asset/art/scene/c03/s04_李癞房间/打麻将游戏/四筒.png.import index ee5e6906..35dfb5c4 100644 --- a/asset/art/scene/c03/s04_李癞房间/打麻将游戏/四桶.png.import +++ b/asset/art/scene/c03/s04_李癞房间/打麻将游戏/四筒.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://da50cog64b0tb" -path="res://.godot/imported/四桶.png-716f85707f9d72b94c894ebf4726941c.ctex" +path="res://.godot/imported/四筒.png-c6d5d9a67497ab219949e8d2e94c4ede.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://asset/art/scene/c03/s04_李癞房间/打麻将游戏/四桶.png" -dest_files=["res://.godot/imported/四桶.png-716f85707f9d72b94c894ebf4726941c.ctex"] +source_file="res://asset/art/scene/c03/s04_李癞房间/打麻将游戏/四筒.png" +dest_files=["res://.godot/imported/四筒.png-c6d5d9a67497ab219949e8d2e94c4ede.ctex"] [params] diff --git a/asset/art/scene/c03/s04_李癞房间/打麻将游戏/妖姬.png b/asset/art/scene/c03/s04_李癞房间/打麻将游戏/幺鸡.png similarity index 100% rename from asset/art/scene/c03/s04_李癞房间/打麻将游戏/妖姬.png rename to asset/art/scene/c03/s04_李癞房间/打麻将游戏/幺鸡.png diff --git a/asset/art/scene/c03/s04_李癞房间/打麻将游戏/妖姬.png.import b/asset/art/scene/c03/s04_李癞房间/打麻将游戏/幺鸡.png.import similarity index 77% rename from asset/art/scene/c03/s04_李癞房间/打麻将游戏/妖姬.png.import rename to asset/art/scene/c03/s04_李癞房间/打麻将游戏/幺鸡.png.import index ef2dbc38..64afc827 100644 --- a/asset/art/scene/c03/s04_李癞房间/打麻将游戏/妖姬.png.import +++ b/asset/art/scene/c03/s04_李癞房间/打麻将游戏/幺鸡.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://batbu02i8svf6" -path="res://.godot/imported/妖姬.png-828e1fbdcccc53881b642f7131aa8141.ctex" +path="res://.godot/imported/幺鸡.png-03805b660a5d1183de9de44e50af3a6a.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://asset/art/scene/c03/s04_李癞房间/打麻将游戏/妖姬.png" -dest_files=["res://.godot/imported/妖姬.png-828e1fbdcccc53881b642f7131aa8141.ctex"] +source_file="res://asset/art/scene/c03/s04_李癞房间/打麻将游戏/幺鸡.png" +dest_files=["res://.godot/imported/幺鸡.png-03805b660a5d1183de9de44e50af3a6a.ctex"] [params] diff --git a/scene/ground/script/c03/s04_closeup整理麻将游戏.gd b/scene/ground/script/c03/s04_closeup整理麻将游戏.gd index 79560af7..8c21260a 100644 --- a/scene/ground/script/c03/s04_closeup整理麻将游戏.gd +++ b/scene/ground/script/c03/s04_closeup整理麻将游戏.gd @@ -2,7 +2,9 @@ extends CanvasLayer signal exit(success: bool) -@onready var bg = $BG as TextureRect +@onready var bg = $BG as CanvasItem +@onready var hand = $Hand as CanvasItem +@onready var hand_success = $HandSuccess as CanvasItem var mahjongs = { "三条": preload("uid://b2ectbek7vksi"), @@ -36,8 +38,8 @@ func _ready() -> void: exit.emit(false) return box_init_btn.pressed.connect(_start_game) - box_init_btn.mouse_entered.connect(_toggle_activation_modulate.bind(box_init_btn, true)) - box_init_btn.mouse_exited.connect(_toggle_activation_modulate.bind(box_init_btn, false)) + box_init_btn.mouse_entered.connect(_toggle_activation.bind(box_init_btn, true)) + box_init_btn.mouse_exited.connect(_toggle_activation.bind(box_init_btn, false)) for b in box_mahjongs_btn: b.mouse_entered.connect(_toggel_hover.bind(b, true)) b.mouse_exited.connect(_toggel_hover.bind(b, false)) @@ -60,7 +62,7 @@ func _toggel_hover(btn: TextureButton, hovering: bool) -> void: return if activated_btn and btn == activated_btn: return - _toggle_activation_modulate(btn, hovering) + _toggle_activation(btn, hovering) var activated_btn: TextureButton @@ -71,16 +73,16 @@ func _on_btn_pressed(btn: TextureButton) -> void: if btn != activated_btn: if activated_btn: _exchange_texture(btn, activated_btn) - _toggle_activation_modulate(btn, false) - _toggle_activation_modulate(activated_btn, false) + _toggle_activation(btn, false) + _toggle_activation(activated_btn, false) activated_btn = null else: $SfxSelect.play() - _toggle_activation_modulate(btn, true) + _toggle_activation(btn, true) activated_btn = btn else: $SfxSelect.play() - _toggle_activation_modulate(btn, false) + _toggle_activation(btn, false) activated_btn = null _check_if_success() @@ -93,19 +95,19 @@ func _exchange_texture(btn1: TextureButton, btn2: TextureButton) -> void: btn2.texture_normal = texture -func _toggle_activation_modulate(btn: TextureButton, activated: bool) -> void: +func _toggle_activation(btn: TextureButton, hightlight: bool) -> void: if null == btn: return - btn.get_node("光束").enabled = activated + btn.get_node("光束").enabled = hightlight func _toggle_activation_for_all(activated: bool) -> void: if box_init_btn: - _toggle_activation_modulate(box_init_btn, activated) + _toggle_activation(box_init_btn, activated) for b in box_mahjongs_btn: - _toggle_activation_modulate(b, activated) + _toggle_activation(b, activated) for b in hand_mahjongs_btn: - _toggle_activation_modulate(b, activated) + _toggle_activation(b, activated) func _check_if_success() -> void: @@ -121,6 +123,12 @@ func _check_if_success() -> void: SceneManager.disable_prop_item("prop_麻将2") # 下一阶段 EventManager.set_stage_if_greater("c03_mahjong_game", 1) - await Util.wait(3.0) + hand_success.show() + hand_success.modulate.a = 0.0 + var tween = create_tween() + tween.tween_property(hand, "modulate:a", 0.0, 1.5) + tween.parallel().tween_property(hand_success, "modulate:a", 1.0, 1.5) + tween.tween_interval(3.5) + await tween.finished exit.emit(true) diff --git a/scene/ground/script/c03/s04_closeup整理麻将游戏.tscn b/scene/ground/script/c03/s04_closeup整理麻将游戏.tscn index ba13f88b..36fe216e 100644 --- a/scene/ground/script/c03/s04_closeup整理麻将游戏.tscn +++ b/scene/ground/script/c03/s04_closeup整理麻将游戏.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=20 format=3 uid="uid://n75766ui6udi"] +[gd_scene load_steps=24 format=3 uid="uid://n75766ui6udi"] [ext_resource type="Script" uid="uid://5r8bu30xpb6m" path="res://scene/ground/script/c03/s04_closeup整理麻将游戏.gd" id="1_npctd"] [ext_resource type="AudioStream" uid="uid://cj2wd18uh67sc" path="res://asset/audio/effect/casino/chipLay2.ogg" id="2_oafpr"] @@ -12,18 +12,57 @@ [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://b2pypf81rgqkw" path="res://asset/art/scene/c03/s04_李癞房间/麻将游戏整理/三筒.png" id="8_ib3cx"] +[ext_resource type="Texture2D" uid="uid://dtatrr7yiptwe" path="res://asset/art/scene/c03/s04_李癞房间/麻将游戏整理/整理成功.png" id="8_qedsv"] [ext_resource type="Texture2D" uid="uid://bo4hrg3sqpoou" path="res://asset/art/scene/c03/s04_李癞房间/麻将游戏整理/伍万.png" id="9_axqt4"] [ext_resource type="Texture2D" uid="uid://dduhqah1p81tb" path="res://asset/art/scene/c03/s04_李癞房间/麻将游戏整理/初始一条.png" id="15_ta1cv"] [ext_resource type="Texture2D" uid="uid://dwyk0e1c2eg37" path="res://asset/art/scene/c03/s04_李癞房间/麻将游戏整理/初始一筒.png" id="16_8hre4"] [ext_resource type="Texture2D" uid="uid://bsqp5gfgplgrv" path="res://asset/art/scene/c03/s04_李癞房间/麻将游戏整理/麻将整理游戏视觉引导光影.png" id="16_ivruk"] [ext_resource type="Texture2D" uid="uid://doxc87cp3e8i4" path="res://asset/art/scene/c03/s04_李癞房间/麻将游戏整理/二筒.png" id="17_b56iy"] -[sub_resource type="Gradient" id="Gradient_oarv7"] +[sub_resource type="Animation" id="Animation_qedsv"] +resource_name = "hand_swing" +length = 5.0 +loop_mode = 1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Hand:position") +tracks/0/interp = 2 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 1.23333, 3.9, 5), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 0, +"values": [Vector2(118, 225), Vector2(116, 223), Vector2(116, 227), Vector2(118, 225)] +} + +[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)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_0b7mu"] +_data = { +&"RESET": SubResource("Animation_2kqht"), +&"hand_swing": SubResource("Animation_qedsv") +} + +[sub_resource type="Gradient" id="Gradient_vspel"] offsets = PackedFloat32Array(0, 0.78811, 1) colors = PackedColorArray(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0) [sub_resource type="GradientTexture2D" id="GradientTexture2D_ta1cv"] -gradient = SubResource("Gradient_oarv7") +gradient = SubResource("Gradient_vspel") width = 90 height = 72 fill = 2 @@ -32,6 +71,7 @@ fill_to = Vector2(1, 1) [node name="Closeup整理麻将游戏" type="CanvasLayer"] script = ExtResource("1_npctd") +metadata/_edit_horizontal_guides_ = [278.0] [node name="SfxStart" type="AudioStreamPlayer" parent="."] stream = ExtResource("2_oarv7") @@ -57,6 +97,12 @@ bus = &"game_sfx" script = ExtResource("3_oarv7") metadata/_custom_type_script = "uid://rq6w1vuhuq1m" +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +libraries = { +&"": SubResource("AnimationLibrary_0b7mu") +} +autoplay = "hand_swing" + [node name="BG" type="TextureRect" parent="."] anchors_preset = 15 anchor_right = 1.0 @@ -66,6 +112,21 @@ grow_vertical = 2 mouse_filter = 0 texture = ExtResource("7_ta1cv") +[node name="HandSuccess" type="TextureRect" parent="."] +visible = false +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = 84.0 +offset_top = 202.0 +offset_right = 84.0 +offset_bottom = 202.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +texture = ExtResource("8_qedsv") +stretch_mode = 2 + [node name="Box" type="TextureRect" parent="."] anchors_preset = 15 anchor_right = 1.0 @@ -261,29 +322,16 @@ energy = 0.3 range_layer_max = 10 texture = SubResource("GradientTexture2D_ta1cv") -[node name="Hand" type="TextureRect" parent="."] -anchors_preset = 7 -anchor_left = 0.5 -anchor_top = 1.0 -anchor_right = 0.5 -anchor_bottom = 1.0 -offset_left = -217.0 -offset_top = -153.0 -offset_right = -105.0 -offset_bottom = -6.0 -grow_horizontal = 2 -grow_vertical = 0 -mouse_filter = 0 +[node name="Hand" type="Sprite2D" parent="."] +position = Vector2(118, 240) texture = ExtResource("7_rp00l") -stretch_mode = 3 [node name="12" type="TextureButton" parent="Hand"] unique_name_in_owner = true -layout_mode = 0 -offset_left = 41.0561 -offset_top = 60.0 -offset_right = 63.0561 -offset_bottom = 80.0 +offset_left = -12.9439 +offset_top = -15.0 +offset_right = 9.05612 +offset_bottom = 4.99999 rotation = 1.26235 texture_normal = ExtResource("15_ta1cv") @@ -296,11 +344,10 @@ texture = SubResource("GradientTexture2D_ta1cv") [node name="13" type="TextureButton" parent="Hand"] unique_name_in_owner = true -layout_mode = 0 -offset_left = 64.0561 -offset_top = 72.0 -offset_right = 86.0561 -offset_bottom = 92.0 +offset_left = 10.0561 +offset_top = -3.00001 +offset_right = 32.0561 +offset_bottom = 17.0 rotation = 0.943099 texture_normal = ExtResource("16_8hre4") diff --git a/scene/ground/script/c03/s04_closeup麻将出千游戏.gd b/scene/ground/script/c03/s04_closeup麻将出千游戏.gd index fe62835b..c16ebcf3 100644 --- a/scene/ground/script/c03/s04_closeup麻将出千游戏.gd +++ b/scene/ground/script/c03/s04_closeup麻将出千游戏.gd @@ -3,6 +3,131 @@ extends CanvasLayer signal exit(arg) @onready var bg = $BG as TextureRect +@onready var front_lay = $MahjongsFrontLay as CanvasItem +@onready var stand = $Stand as CanvasItem +@onready var grid = $Stand/MahjongGrid as GridContainer + +@onready var stand_mahjongs_btn: Array[TextureButton] = [%"1", %"2", %"3", %"4", %"5", %"6", %"7", %"8", %"9", %"10", %"11", %"12", %"13"] +@onready var stand_right_mahjong: TextureButton = %"14" +@onready var hand_mahjongs_btn: Array[TextureButton] = [%"15", %"16", %"17"] + +var mahjongs = { + "南": preload("uid://6hdekasuabnm"), + "三万": preload("uid://dc6sj2holh1gn"), + "五万": preload("uid://bd12rrssmrdbs"), + "幺鸡": preload("uid://batbu02i8svf6"), + "二条": preload("uid://cbn74yc8j72v6"), + "三条": preload("uid://b66kqhy1mmhc5"), + "二筒": preload("uid://djefka3gyhxsv"), + "四筒": preload("uid://da50cog64b0tb"), + "八筒": preload("uid://cr6404ghilc7u"), + "九筒": preload("uid://iovhne3h5dqe"), +} + +# 回合1-3摸牌:南风B、3万、2筒 +# 回合1-3自动打出的牌(不可换):2万、3万、南风A +# 密码:替换南风B、4筒、2筒 +# 玩家初始牌型(13张):2筒x1,5万x2,南风Ax1,2万x1,4筒x4,1条x1,2条x1,7筒x1,8筒x1 +# 胜利牌型:2筒x2、5万x3、4筒x2、123条x1、789筒x1 +var initial_cards = ["二筒", "五万", "五万", "南", "二条", "四筒", "四筒", "四筒", "四筒", "一条", "二条", "七筒", "八筒"] + +# 2万 +# 7筒 + +var freezing = false +var success = false +var selected_btn: TextureButton func _ready() -> void: layer = GlobalConfig.CANVAS_LAYER_LITTLE_GAME + _toggle_hightlight_for_all(false) + stand_right_mahjong.pressed.connect(_on_btn_pressed.bind(stand_right_mahjong)) + stand_right_mahjong.mouse_entered.connect(_toggle_hightlight.bind(stand_right_mahjong, true)) + stand_right_mahjong.mouse_exited.connect(_toggle_hightlight.bind(stand_right_mahjong, false)) + for b in stand_mahjongs_btn: + b.mouse_entered.connect(_toggel_hover.bind(b, true)) + b.mouse_exited.connect(_toggel_hover.bind(b, false)) + b.pressed.connect(_on_btn_pressed.bind(b)) + for b in hand_mahjongs_btn: + b.mouse_entered.connect(_toggel_hover.bind(b, true)) + b.mouse_exited.connect(_toggel_hover.bind(b, false)) + b.pressed.connect(_on_btn_pressed.bind(b)) + + +func _toggel_hover(btn: TextureButton, hovering: bool) -> void: + if freezing: + return + _toggle_hightlight(btn, hovering) + +func _on_btn_pressed(btn: TextureButton) -> void: + if freezing: + return + if btn != selected_btn: + if selected_btn: + _toggle_selected(selected_btn, false) + _exchange_texture(btn, selected_btn) + selected_btn = null + else: + $SfxSelect.play() + _toggle_selected(btn, true) + selected_btn = btn + else: + $SfxSelect.play() + _toggle_selected(btn, false) + selected_btn = null + _check_if_success() + + +func _toggle_selected(btn:TextureButton, selected: bool) -> void: + # 1-14 push up. 15-17 in hand, push down. + var front := int(btn.name) <= 14 + if (front and selected) or (not front and not selected): + btn.size_flags_vertical = Control.SIZE_SHRINK_BEGIN + else: + btn.size_flags_vertical = Control.SIZE_SHRINK_END + + +func _exchange_texture(btn1: TextureButton, btn2: TextureButton) -> void: + if btn1 and btn2: + $SfxSwitch.play() + var texture = btn1.texture_normal + btn1.texture_normal = btn2.texture_normal + btn2.texture_normal = texture + +func _toggle_hightlight(btn: TextureButton, hightlight: bool) -> void: + if null == btn: + return + btn.get_node("光束").enabled = hightlight + + +func _toggle_hightlight_for_all(hightlighted: bool) -> void: + if stand_right_mahjong: + _toggle_hightlight(stand_right_mahjong, hightlighted) + for b in stand_mahjongs_btn: + _toggle_hightlight(b, hightlighted) + for b in hand_mahjongs_btn: + _toggle_hightlight(b, hightlighted) + + +func _check_if_success() -> void: + success = true + # for hb in hand_mahjongs_btn: + # if not hb.texture_normal in answer_of_in_hand_mahjongs: + success = false + # break + # if success: + # $SfxSuccess.play() + # freezing = true + # SceneManager.disable_prop_item("prop_麻将") + # SceneManager.disable_prop_item("prop_麻将2") + # # 下一阶段 + # EventManager.set_stage_if_greater("c03_mahjong_game", 1) + # hand_success.show() + # hand_success.modulate.a = 0.0 + # var tween = create_tween() + # tween.tween_property(hand, "modulate:a", 0.0, 1.5) + # tween.parallel().tween_property(hand_success, "modulate:a", 1.0, 1.5) + # tween.tween_interval(3.5) + # await tween.finished + # exit.emit(true) + diff --git a/scene/ground/script/c03/s04_closeup麻将出千游戏.tscn b/scene/ground/script/c03/s04_closeup麻将出千游戏.tscn index 84700fe2..587e0a7b 100644 --- a/scene/ground/script/c03/s04_closeup麻将出千游戏.tscn +++ b/scene/ground/script/c03/s04_closeup麻将出千游戏.tscn @@ -1,12 +1,139 @@ -[gd_scene load_steps=5 format=3 uid="uid://cua3uqy4btxqn"] +[gd_scene load_steps=27 format=3 uid="uid://cua3uqy4btxqn"] [ext_resource type="Script" uid="uid://6ns5o344dgfo" path="res://scene/ground/script/c03/s04_closeup麻将出千游戏.gd" id="1_svv4b"] -[ext_resource type="Texture2D" uid="uid://tdo5xxovhljp" path="res://asset/art/scene/c03/s04_李癞房间/麻将游戏整理/麻将游戏桌面背景.png" id="2_a527u"] +[ext_resource type="Texture2D" uid="uid://d0kaqrb600hxj" path="res://asset/art/scene/c03/s04_李癞房间/打麻将游戏/背景.png" id="2_12fte"] [ext_resource type="Texture2D" uid="uid://cbql1i4hblmt1" path="res://asset/art/ui/遮罩/inspect特写通用遮罩.png" id="2_dgp1q"] -[ext_resource type="Texture2D" uid="uid://y15vgb2gq2r3" path="res://asset/art/scene/c03/s04_李癞房间/麻将游戏整理/手.png" id="3_k8d28"] +[ext_resource type="AudioStream" uid="uid://cxnu37nliruep" path="res://asset/audio/effect/casino/cardSlide1.ogg" id="2_mqw3j"] +[ext_resource type="AudioStream" uid="uid://dcxn7dvq3805d" path="res://asset/audio/effect/casino/cardSlide2.ogg" id="3_dmkpy"] +[ext_resource type="Texture2D" uid="uid://ddkrgrehgphkx" path="res://asset/art/scene/c03/s04_李癞房间/打麻将游戏/桌子.png" id="3_fkih2"] +[ext_resource type="AudioStream" uid="uid://orwlj5usnlng" path="res://asset/audio/effect/casino/cardSlide4.ogg" id="4_cv0jt"] +[ext_resource type="AudioStream" uid="uid://txrow4x3dgoq" path="res://asset/audio/effect/casino/dieGrab1.ogg" id="4_dmkpy"] +[ext_resource type="Texture2D" uid="uid://d3xg6rx5axcba" path="res://asset/art/scene/c03/s04_李癞房间/打麻将游戏/横着的麻将两侧.png" id="4_f3y72"] +[ext_resource type="Texture2D" uid="uid://dc6sj2holh1gn" path="res://asset/art/scene/c03/s04_李癞房间/打麻将游戏/三万.png" id="4_k8d28"] +[ext_resource type="Script" uid="uid://rq6w1vuhuq1m" path="res://scene/entity/audio/sfx.gd" id="5_cv0jt"] +[ext_resource type="Texture2D" uid="uid://lyuhsi4v6w7d" path="res://asset/art/scene/c03/s04_李癞房间/打麻将游戏/竖着的麻将.png" id="5_g4w7h"] +[ext_resource type="Texture2D" uid="uid://d10g7i8qw300u" path="res://asset/art/scene/c03/s04_李癞房间/打麻将游戏/横着的麻将.png" id="6_bydo0"] +[ext_resource type="AudioStream" uid="uid://blaqwkcfldic6" path="res://asset/audio/effect/casino/cardSlide3.ogg" id="6_dmkpy"] +[ext_resource type="AudioStream" uid="uid://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="Texture2D" uid="uid://bw625jmfn5o" path="res://asset/art/scene/c03/s04_李癞房间/打麻将游戏/手.png" id="9_l8x8v"] + +[sub_resource type="AudioStreamSynchronized" id="AudioStreamSynchronized_012pb"] +stream_count = 3 +stream_0/stream = ExtResource("2_mqw3j") +stream_0/volume = 0.0 +stream_1/stream = ExtResource("3_dmkpy") +stream_1/volume = 0.0 +stream_2/stream = ExtResource("4_cv0jt") +stream_2/volume = 0.0 + +[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_cv0jt"] +playback_mode = 1 +streams_count = 4 +stream_0/stream = ExtResource("2_mqw3j") +stream_1/stream = ExtResource("3_dmkpy") +stream_2/stream = ExtResource("6_dmkpy") +stream_3/stream = ExtResource("4_cv0jt") + +[sub_resource type="Animation" id="Animation_2kqht"] +length = 0.001 +tracks/0/type = "value" +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)] +} + +[sub_resource type="Animation" id="Animation_qedsv"] +resource_name = "hand_swing" +length = 5.0 +loop_mode = 1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Hand:position") +tracks/0/interp = 2 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 1.23333, 3.9, 5), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 0, +"values": [Vector2(118, 225), Vector2(116, 223), Vector2(116, 227), Vector2(118, 225)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_dmkpy"] +_data = { +&"RESET": SubResource("Animation_2kqht"), +&"hand_swing": SubResource("Animation_qedsv") +} + +[sub_resource type="Gradient" id="Gradient_l8x8v"] +offsets = PackedFloat32Array(0, 0.606707, 0.998476) +colors = PackedColorArray(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0) + +[sub_resource type="GradientTexture2D" id="GradientTexture2D_mqw3j"] +gradient = SubResource("Gradient_l8x8v") +width = 200 +height = 100 +fill_to = Vector2(0, 1) + +[sub_resource type="Gradient" id="Gradient_svv4b"] +offsets = PackedFloat32Array(0, 0.78811, 1) +colors = PackedColorArray(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0) + +[sub_resource type="GradientTexture2D" id="GradientTexture2D_dgp1q"] +gradient = SubResource("Gradient_svv4b") +width = 31 +height = 48 +fill = 2 +fill_from = Vector2(0.5, 0.5) +fill_to = Vector2(1, 1) [node name="Closeup麻将出千游戏" type="CanvasLayer"] script = ExtResource("1_svv4b") +metadata/_edit_horizontal_guides_ = [38.0, 278.0] + +[node name="SfxShuffle" type="AudioStreamPlayer" parent="."] +stream = SubResource("AudioStreamSynchronized_012pb") +bus = &"game_sfx" +script = ExtResource("5_cv0jt") +metadata/_custom_type_script = "uid://rq6w1vuhuq1m" + +[node name="SfxSlide" type="AudioStreamPlayer" parent="."] +stream = SubResource("AudioStreamRandomizer_cv0jt") +bus = &"game_sfx" +script = ExtResource("5_cv0jt") +metadata/_custom_type_script = "uid://rq6w1vuhuq1m" + +[node name="SfxSelect" type="AudioStreamPlayer" parent="."] +stream = ExtResource("6_l8x8v") +bus = &"game_sfx" +script = ExtResource("5_cv0jt") +metadata/_custom_type_script = "uid://rq6w1vuhuq1m" + +[node name="SfxSwitch" type="AudioStreamPlayer" parent="."] +stream = ExtResource("7_e4lq6") +bus = &"game_sfx" +script = ExtResource("5_cv0jt") +metadata/_custom_type_script = "uid://rq6w1vuhuq1m" + +[node name="SfxSuccess" type="AudioStreamPlayer" parent="."] +stream = ExtResource("4_dmkpy") +bus = &"game_sfx" +script = ExtResource("5_cv0jt") +metadata/_custom_type_script = "uid://rq6w1vuhuq1m" + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +libraries = { +&"": SubResource("AnimationLibrary_dmkpy") +} +autoplay = "hand_swing" [node name="BG" type="TextureRect" parent="."] anchors_preset = 15 @@ -14,28 +141,404 @@ anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 -mouse_filter = 0 -texture = ExtResource("2_a527u") - -[node name="BG2" type="TextureRect" parent="."] -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -offset_left = 3.0 -offset_top = 26.0 -offset_right = 3.0 -offset_bottom = 26.0 -grow_horizontal = 2 -grow_vertical = 2 -mouse_filter = 0 -texture = ExtResource("3_k8d28") +mouse_filter = 2 +texture = ExtResource("2_12fte") stretch_mode = 3 -[node name="遮罩" type="TextureRect" parent="."] +[node name="Hand" type="Sprite2D" parent="."] +light_mask = 3 +position = Vector2(118, 240) +texture = ExtResource("9_l8x8v") + +[node name="阴影" type="PointLight2D" parent="Hand"] +position = Vector2(8, 3) +blend_mode = 1 +range_layer_max = 10 +range_item_cull_mask = 2 +texture = SubResource("GradientTexture2D_mqw3j") + +[node name="MarginContainer15" type="MarginContainer" parent="Hand"] +custom_minimum_size = Vector2(20, 54) +offset_left = -40.0 +offset_top = -6.0 +offset_right = -13.0 +offset_bottom = 54.0 +rotation = -0.0367687 +size_flags_vertical = 3 +theme_override_constants/margin_top = 0 +theme_override_constants/margin_bottom = 8 + +[node name="15" type="TextureButton" parent="Hand/MarginContainer15"] +unique_name_in_owner = true +self_modulate = Color(0.798366, 0.798366, 0.798366, 1) +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/MarginContainer15/15"] +position = Vector2(13.5, 22.5) +energy = 0.3 +range_layer_max = 10 +texture = SubResource("GradientTexture2D_dgp1q") + +[node name="MarginContainer16" type="MarginContainer" parent="Hand"] +custom_minimum_size = Vector2(20, 54) +offset_left = -2.0 +offset_top = -6.0 +offset_right = 25.0 +offset_bottom = 54.0 +rotation = 0.112722 +size_flags_vertical = 3 +theme_override_constants/margin_top = 0 +theme_override_constants/margin_bottom = 8 + +[node name="16" type="TextureButton" parent="Hand/MarginContainer16"] +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/MarginContainer16/16"] +position = Vector2(13.5, 22.5) +energy = 0.3 +range_layer_max = 10 +texture = SubResource("GradientTexture2D_dgp1q") + +[node name="MarginContainer17" type="MarginContainer" parent="Hand"] +custom_minimum_size = Vector2(20, 54) +offset_left = 28.0 +offset_top = -2.0 +offset_right = 55.0 +offset_bottom = 58.0 +rotation = 0.0818219 +size_flags_vertical = 3 +theme_override_constants/margin_top = 0 +theme_override_constants/margin_bottom = 8 + +[node name="17" type="TextureButton" parent="Hand/MarginContainer17"] +unique_name_in_owner = true +self_modulate = Color(0.798366, 0.798366, 0.798366, 1) +light_mask = 3 +custom_minimum_size = Vector2(27, 47) +layout_mode = 2 +size_flags_vertical = 2 +texture_normal = ExtResource("4_k8d28") +ignore_texture_size = true +stretch_mode = 3 + +[node name="光束" type="PointLight2D" parent="Hand/MarginContainer17/17"] +position = Vector2(13.5, 22.5) +energy = 0.3 +range_layer_max = 10 +texture = SubResource("GradientTexture2D_dgp1q") + +[node name="Table" type="TextureRect" parent="."] anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 mouse_filter = 2 +texture = ExtResource("3_fkih2") +stretch_mode = 2 + +[node name="MahjongsSidesLay" type="TextureRect" parent="."] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_top = -76.0 +offset_bottom = -76.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +texture = ExtResource("5_g4w7h") +expand_mode = 5 +stretch_mode = 3 + +[node name="MahjongsFrontLay" type="TextureRect" parent="."] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_top = -26.0 +offset_bottom = -26.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +texture = ExtResource("6_bydo0") +expand_mode = 5 +stretch_mode = 3 + +[node name="Stand" type="Control" parent="."] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_top = -57.0 +offset_bottom = -57.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 + +[node name="MahjongsSidesStand" type="TextureRect" parent="Stand"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_top = -19.0 +offset_bottom = -19.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +texture = ExtResource("4_f3y72") +stretch_mode = 3 + +[node name="MahjongGrid" type="GridContainer" parent="Stand"] +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -195.0 +offset_top = 25.5 +offset_right = 196.0 +offset_bottom = 79.5 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +theme_override_constants/h_separation = 1 +theme_override_constants/v_separation = 0 +columns = 15 + +[node name="1" 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/1"] +position = Vector2(13.5, 22.5) +energy = 0.3 +range_layer_max = 10 +texture = SubResource("GradientTexture2D_dgp1q") + +[node name="2" 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/2"] +position = Vector2(13.5, 22.5) +energy = 0.3 +range_layer_max = 10 +texture = SubResource("GradientTexture2D_dgp1q") + +[node name="3" 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/3"] +position = Vector2(13.5, 22.5) +energy = 0.3 +range_layer_max = 10 +texture = SubResource("GradientTexture2D_dgp1q") + +[node name="4" 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/4"] +position = Vector2(13.5, 22.5) +energy = 0.3 +range_layer_max = 10 +texture = SubResource("GradientTexture2D_dgp1q") + +[node name="5" 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/5"] +position = Vector2(13.5, 22.5) +energy = 0.3 +range_layer_max = 10 +texture = SubResource("GradientTexture2D_dgp1q") + +[node name="6" 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/6"] +position = Vector2(13.5, 22.5) +energy = 0.3 +range_layer_max = 10 +texture = SubResource("GradientTexture2D_dgp1q") + +[node name="7" 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/7"] +position = Vector2(13.5, 22.5) +energy = 0.3 +range_layer_max = 10 +texture = SubResource("GradientTexture2D_dgp1q") + +[node name="8" 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/8"] +position = Vector2(13.5, 22.5) +energy = 0.3 +range_layer_max = 10 +texture = SubResource("GradientTexture2D_dgp1q") + +[node name="9" 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/9"] +position = Vector2(13.5, 22.5) +energy = 0.3 +range_layer_max = 10 +texture = SubResource("GradientTexture2D_dgp1q") + +[node name="10" 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/10"] +position = Vector2(13.5, 22.5) +energy = 0.3 +range_layer_max = 10 +texture = SubResource("GradientTexture2D_dgp1q") + +[node name="11" 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/11"] +position = Vector2(13.5, 22.5) +energy = 0.3 +range_layer_max = 10 +texture = SubResource("GradientTexture2D_dgp1q") + +[node name="12" 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/12"] +position = Vector2(13.5, 22.5) +energy = 0.3 +range_layer_max = 10 +texture = SubResource("GradientTexture2D_dgp1q") + +[node name="13" 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/13"] +position = Vector2(13.5, 22.5) +energy = 0.3 +range_layer_max = 10 +texture = SubResource("GradientTexture2D_dgp1q") + +[node name="14" type="TextureButton" parent="Stand/MahjongGrid"] +unique_name_in_owner = true +custom_minimum_size = Vector2(27, 47) +layout_mode = 2 +size_flags_vertical = 10 +texture_normal = ExtResource("4_k8d28") +ignore_texture_size = true +stretch_mode = 3 + +[node name="光束" type="PointLight2D" parent="Stand/MahjongGrid/14"] +position = Vector2(13.5, 22.5) +energy = 0.3 +range_layer_max = 10 +texture = SubResource("GradientTexture2D_dgp1q") + +[node name="遮罩" type="TextureRect" parent="."] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = -120.0 +offset_top = -3.0 +offset_right = 116.0 +offset_bottom = -3.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 texture = ExtResource("2_dgp1q") +expand_mode = 3