整理麻将&打麻将游戏

This commit is contained in:
cakipaul 2025-07-10 17:13:31 +08:00
parent 82e560e089
commit d621728c26
8 changed files with 749 additions and 66 deletions

View File

Before

Width:  |  Height:  |  Size: 615 B

After

Width:  |  Height:  |  Size: 615 B

View File

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

View File

Before

Width:  |  Height:  |  Size: 756 B

After

Width:  |  Height:  |  Size: 756 B

View File

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

View File

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

View File

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

View File

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

View File

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