实现书架小游戏玩法

This commit is contained in:
cakipaul 2025-01-08 15:59:27 +08:00
parent 872f3da0a3
commit 48d9d0e737
2 changed files with 737 additions and 133 deletions

View File

@ -1,14 +1,15 @@
@tool
extends Control
const NON_SELECTED = [-1, -1]
# 3 layers, original order is the correct answer
@export var current_answer := [[0, 1, 2, 3, 4], [0, 1, 2, 3], [0, 1, 2, 3]]
@export var shuffle_times := 20
@onready var sfx_select = $SfxSelect as Sfx
@onready var sfx_interchange = $SfxInterchange as Sfx
var current_answer := []
var book_width_by_row := []
var suffling := false
# [row, col]
var selected_book := NON_SELECTED:
@ -26,10 +27,27 @@ var selected_book := NON_SELECTED:
func _ready() -> void:
# init answer first
_init_answer_and_connect_signals()
_measure_width_by_row()
_connect_signals()
# shuffle at the end
_shuffle_books()
if Engine.is_editor_hint():
for row in range(3):
_relocate_books(row)
else:
_shuffle_books()
func _init_answer_and_connect_signals() -> void:
for row in range(3):
var r_size = get_node("./Shelf/Layer" + str(row)).get_child_count()
# current_answer append a r_size arr
var arr = []
for id in range(r_size):
arr.append(id)
var book = _get_book_by_id(row, id)
book.get_node("BookButton").pressed.connect(_on_book_pressed.bind(row, id))
current_answer.append(arr)
func _measure_width_by_row() -> void:
@ -48,10 +66,11 @@ func _measure_width_by_row() -> void:
func _shuffle_books() -> void:
selected_book = NON_SELECTED
suffling = true
rand_from_seed(Time.get_ticks_usec())
for row in range(3):
# shuffle each row 20 times
var r_size = current_answer[row].size()
for _i in range(20):
for _i in range(shuffle_times):
var col_1 = randi() % r_size
var col_2 = randi() % r_size
selected_book = [row, col_1]
@ -61,14 +80,6 @@ func _shuffle_books() -> void:
suffling = false
func _connect_signals() -> void:
for row in range(3):
var r_size = current_answer[row].size()
for id in range(r_size):
var book = _get_book_by_id(row, id)
book.get_node("BookButton").pressed.connect(_on_book_pressed.bind(row, id))
func _on_book_pressed(row: int, id: int) -> void:
var col = current_answer[row].find(id)
if selected_book == NON_SELECTED:
@ -90,12 +101,15 @@ func _get_book_by_id(row: int, id: int) -> Node2D:
# var layer = get_node("./Shelf/Layer" + str(row))
# return layer.get_child(col)
var mute_toggle = false
func _toggle_book(selected: bool, row: int, col: int) -> void:
var id = current_answer[row][col]
var book = _get_book_by_id(row, id)
var book_tween = create_tween()
sfx_select.play()
if not mute_toggle:
sfx_select.play()
if selected:
book_tween.parallel().tween_property(book, "position:y", -10.0, 0.2)
else:
@ -112,7 +126,9 @@ func _interchange_book(row: int, col: int, relocate := true) -> void:
current_answer[row][col] = current_answer[row][col2]
current_answer[row][col2] = temp
# reset selected_book
mute_toggle = true
selected_book = NON_SELECTED
mute_toggle = false
# relocate after reset selected_book
if relocate:
_relocate_books(row)
@ -133,17 +149,56 @@ func _relocate_books(row: int) -> void:
func _check_answer() -> void:
for row in range(3):
var r_size = current_answer[row].size()
for col in range(r_size):
if current_answer[row][col] != col:
# 第一行需要顺序排列
var row1 = current_answer[0]
for col in range(row1.size()):
if row1[col] != col:
return
# 第二行正序或者倒序都可以
var row2 = current_answer[1]
var size2 = row2.size()
if row2[0] == 0:
# 正序
for col in range(1, size2):
if row2[col] != col:
return
else:
# 倒序
for col in range(size2):
if row2[col] != size2 - 1 - col:
return
# 最后一行按色块排列0-6 蓝色7个在一起7-11 红色5个在一起12-17 黄色6个在一起
var row3 = current_answer[2]
# 0: blue, 1: red, 2: yellow
var visited = [7, 5, 6]
var visiting_init = true
var visiting = -1
for col in range(row3.size()):
var color = _get_color(row3[col])
if visiting_init:
visiting = color
visiting_init = false
if color != visiting:
return
visited[color] -= 1
if visited[color] == 0:
visiting_init = true
# success
_success()
# 0: blue, 1: red, 2: yellow
func _get_color(index: int) -> int:
# 0-6 蓝色7个在一起7-11 红色5个在一起12-17 黄色6个在一起
if index < 7:
return 0
elif index < 12:
return 1
else:
return 2
func _success() -> void:
print("Success!")
$Success.visible = true
#TODO
pass

View File

@ -1,54 +1,197 @@
[gd_scene load_steps=17 format=3 uid="uid://fwfr0b2sylwx"]
[gd_scene load_steps=54 format=3 uid="uid://fwfr0b2sylwx"]
[ext_resource type="Script" path="res://scene/little_game/书架.gd" id="1_8af23"]
[ext_resource type="Texture2D" uid="uid://csrb0kuf5qx80" path="res://asset/art/little_game/书架/书架与书.png" id="1_bap6w"]
[ext_resource type="AudioStream" uid="uid://bxfm22t1rj2cq" path="res://asset/audio/sfx/ui/收起纸条.mp3" id="2_glfpo"]
[ext_resource type="PackedScene" uid="uid://c85t6stvytvjn" path="res://scene/entity/ux/sfx.tscn" id="3_03tyv"]
[ext_resource type="AudioStream" uid="uid://bpdot5dxm6vwi" path="res://asset/audio/sfx/ui/挂画查看.mp3" id="3_elhhm"]
[sub_resource type="AtlasTexture" id="AtlasTexture_goijy"]
atlas = ExtResource("1_bap6w")
region = Rect2(1, 14, 417, 224)
[ext_resource type="Texture2D" uid="uid://sl60ixmks0pi" path="res://asset/art/little_game/书架/书架框.png" id="5_i131t"]
[ext_resource type="Texture2D" uid="uid://1fpafer5flqw" path="res://asset/art/little_game/书架/合并.png" id="6_pxxx5"]
[sub_resource type="AtlasTexture" id="AtlasTexture_c3g4t"]
atlas = ExtResource("1_bap6w")
region = Rect2(12, 254, 15, 61)
atlas = ExtResource("6_pxxx5")
region = Rect2(22, 484, 15, 104)
[sub_resource type="AtlasTexture" id="AtlasTexture_pmg84"]
atlas = ExtResource("1_bap6w")
region = Rect2(34, 261, 13, 54)
atlas = ExtResource("6_pxxx5")
region = Rect2(57, 512, 14, 76)
[sub_resource type="AtlasTexture" id="AtlasTexture_5xs8h"]
atlas = ExtResource("1_bap6w")
region = Rect2(58, 264, 13, 49)
atlas = ExtResource("6_pxxx5")
region = Rect2(89, 512, 14, 76)
[sub_resource type="AtlasTexture" id="AtlasTexture_4cxbt"]
atlas = ExtResource("1_bap6w")
region = Rect2(80, 272, 10, 41)
atlas = ExtResource("6_pxxx5")
region = Rect2(126, 495, 14, 93)
[sub_resource type="AtlasTexture" id="AtlasTexture_x1voy"]
atlas = ExtResource("1_bap6w")
region = Rect2(95, 277, 9, 35)
atlas = ExtResource("6_pxxx5")
region = Rect2(173, 507, 15, 81)
[sub_resource type="AtlasTexture" id="AtlasTexture_4i6n2"]
atlas = ExtResource("1_bap6w")
region = Rect2(12, 254, 15, 61)
[sub_resource type="AtlasTexture" id="AtlasTexture_s637y"]
atlas = ExtResource("6_pxxx5")
region = Rect2(225, 506, 28, 82)
[sub_resource type="AtlasTexture" id="AtlasTexture_3jfnd"]
atlas = ExtResource("1_bap6w")
region = Rect2(34, 261, 13, 54)
[sub_resource type="AtlasTexture" id="AtlasTexture_2rk7g"]
atlas = ExtResource("6_pxxx5")
region = Rect2(279, 495, 14, 93)
[sub_resource type="AtlasTexture" id="AtlasTexture_uo0qb"]
atlas = ExtResource("6_pxxx5")
region = Rect2(320, 489, 14, 99)
[sub_resource type="AtlasTexture" id="AtlasTexture_v6h51"]
atlas = ExtResource("6_pxxx5")
region = Rect2(487, 489, 14, 99)
[sub_resource type="CompressedTexture2D" id="CompressedTexture2D_dg6aw"]
load_path = "res://.godot/imported/合并.png-ea1ae3da49b64e2d990320d50cc99cb7.ctex"
[sub_resource type="AtlasTexture" id="AtlasTexture_fno8t"]
atlas = SubResource("CompressedTexture2D_dg6aw")
region = Rect2(443, 486, 14, 102)
[sub_resource type="CompressedTexture2D" id="CompressedTexture2D_86iw8"]
load_path = "res://.godot/imported/合并.png-ea1ae3da49b64e2d990320d50cc99cb7.ctex"
[sub_resource type="AtlasTexture" id="AtlasTexture_sqqma"]
atlas = SubResource("CompressedTexture2D_86iw8")
region = Rect2(531, 493, 15, 95)
[sub_resource type="AtlasTexture" id="AtlasTexture_2v8gr"]
atlas = SubResource("CompressedTexture2D_86iw8")
region = Rect2(579, 495, 19, 93)
[sub_resource type="AtlasTexture" id="AtlasTexture_g33pn"]
atlas = SubResource("CompressedTexture2D_86iw8")
region = Rect2(629, 495, 14, 93)
[sub_resource type="AtlasTexture" id="AtlasTexture_7bg4e"]
atlas = SubResource("CompressedTexture2D_86iw8")
region = Rect2(671, 519, 14, 69)
[sub_resource type="AtlasTexture" id="AtlasTexture_yyofn"]
atlas = SubResource("CompressedTexture2D_86iw8")
region = Rect2(712, 502, 14, 85)
[sub_resource type="AtlasTexture" id="AtlasTexture_il3nv"]
atlas = SubResource("CompressedTexture2D_86iw8")
region = Rect2(755, 505, 16, 82)
[sub_resource type="AtlasTexture" id="AtlasTexture_b3xvs"]
atlas = ExtResource("1_bap6w")
region = Rect2(12, 254, 15, 61)
atlas = ExtResource("6_pxxx5")
region = Rect2(21, 649, 18, 62)
[sub_resource type="AtlasTexture" id="AtlasTexture_7ejmc"]
atlas = ExtResource("6_pxxx5")
region = Rect2(58, 646, 12, 65)
[sub_resource type="AtlasTexture" id="AtlasTexture_pv5xt"]
atlas = ExtResource("1_bap6w")
region = Rect2(80, 272, 10, 41)
atlas = ExtResource("6_pxxx5")
region = Rect2(86, 643, 11, 68)
[sub_resource type="AtlasTexture" id="AtlasTexture_0m1py"]
atlas = ExtResource("1_bap6w")
region = Rect2(112, 279, 9, 32)
atlas = ExtResource("6_pxxx5")
region = Rect2(112, 639, 15, 72)
[sub_resource type="AtlasTexture" id="AtlasTexture_ewy65"]
atlas = ExtResource("6_pxxx5")
region = Rect2(146, 635, 17, 76)
[sub_resource type="AtlasTexture" id="AtlasTexture_p1i0i"]
atlas = ExtResource("6_pxxx5")
region = Rect2(180, 628, 16, 83)
[sub_resource type="AtlasTexture" id="AtlasTexture_qjlqs"]
atlas = ExtResource("6_pxxx5")
region = Rect2(219, 625, 9, 86)
[sub_resource type="AtlasTexture" id="AtlasTexture_bef8d"]
atlas = ExtResource("6_pxxx5")
region = Rect2(247, 620, 9, 91)
[sub_resource type="AtlasTexture" id="AtlasTexture_tmibm"]
atlas = ExtResource("6_pxxx5")
region = Rect2(274, 616, 24, 95)
[sub_resource type="AtlasTexture" id="AtlasTexture_niqsg"]
atlas = ExtResource("6_pxxx5")
region = Rect2(317, 612, 25, 99)
[sub_resource type="AtlasTexture" id="AtlasTexture_lqh8e"]
atlas = ExtResource("6_pxxx5")
region = Rect2(361, 609, 11, 102)
[sub_resource type="AtlasTexture" id="AtlasTexture_4i6n2"]
atlas = ExtResource("6_pxxx5")
region = Rect2(414, 624, 13, 87)
[sub_resource type="AtlasTexture" id="AtlasTexture_3jfnd"]
atlas = ExtResource("6_pxxx5")
region = Rect2(445, 628, 15, 83)
[sub_resource type="AtlasTexture" id="AtlasTexture_5j1oq"]
atlas = ExtResource("6_pxxx5")
region = Rect2(479, 613, 12, 98)
[sub_resource type="AtlasTexture" id="AtlasTexture_e5eo5"]
atlas = ExtResource("6_pxxx5")
region = Rect2(512, 621, 13, 90)
[sub_resource type="AtlasTexture" id="AtlasTexture_sungh"]
atlas = ExtResource("6_pxxx5")
region = Rect2(544, 621, 13, 90)
[sub_resource type="AtlasTexture" id="AtlasTexture_yqrs8"]
atlas = ExtResource("6_pxxx5")
region = Rect2(574, 621, 13, 90)
[sub_resource type="AtlasTexture" id="AtlasTexture_jrkcq"]
atlas = ExtResource("6_pxxx5")
region = Rect2(610, 624, 13, 87)
[sub_resource type="AtlasTexture" id="AtlasTexture_2g3qi"]
atlas = ExtResource("6_pxxx5")
region = Rect2(646, 628, 15, 83)
[sub_resource type="AtlasTexture" id="AtlasTexture_tf04m"]
atlas = ExtResource("6_pxxx5")
region = Rect2(683, 613, 13, 98)
[sub_resource type="AtlasTexture" id="AtlasTexture_wsiwo"]
atlas = ExtResource("6_pxxx5")
region = Rect2(723, 621, 13, 90)
[sub_resource type="AtlasTexture" id="AtlasTexture_qbqho"]
atlas = ExtResource("6_pxxx5")
region = Rect2(767, 621, 13, 90)
[sub_resource type="AtlasTexture" id="AtlasTexture_ik73b"]
atlas = ExtResource("6_pxxx5")
region = Rect2(811, 621, 13, 90)
[sub_resource type="AtlasTexture" id="AtlasTexture_rwsmd"]
atlas = ExtResource("6_pxxx5")
region = Rect2(858, 624, 13, 87)
[sub_resource type="AtlasTexture" id="AtlasTexture_2tddc"]
atlas = ExtResource("6_pxxx5")
region = Rect2(895, 628, 14, 83)
[sub_resource type="AtlasTexture" id="AtlasTexture_mdq4x"]
atlas = ExtResource("6_pxxx5")
region = Rect2(944, 616, 13, 95)
[sub_resource type="AtlasTexture" id="AtlasTexture_iwv1b"]
atlas = ExtResource("6_pxxx5")
region = Rect2(988, 621, 12, 90)
[sub_resource type="AtlasTexture" id="AtlasTexture_lhfli"]
atlas = ExtResource("6_pxxx5")
region = Rect2(1030, 621, 13, 90)
[sub_resource type="AtlasTexture" id="AtlasTexture_6p2po"]
atlas = ExtResource("6_pxxx5")
region = Rect2(1077, 621, 13, 90)
[node name="书架" type="Control"]
layout_mode = 3
@ -59,6 +202,7 @@ grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
script = ExtResource("1_8af23")
shuffle_times = 1
[node name="SfxInterchange" parent="." instance=ExtResource("3_03tyv")]
stream = ExtResource("3_elhhm")
@ -66,32 +210,20 @@ file = "挂画查看.mp3"
[node name="SfxSelect" parent="." instance=ExtResource("3_03tyv")]
stream = ExtResource("2_glfpo")
file = "收起纸条.mp3"
[node name="BG" type="ColorRect" parent="."]
layout_mode = 1
anchors_preset = 14
anchor_top = 0.5
anchor_right = 1.0
anchor_bottom = 0.5
offset_top = -120.0
offset_bottom = 120.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
color = Color(0.0404907, 0.185259, 0.00063979, 1)
file = "物品查看.mp3"
[node name="Shelf" type="Sprite2D" parent="."]
position = Vector2(283, 160)
texture = SubResource("AtlasTexture_goijy")
texture = ExtResource("5_i131t")
[node name="Layer0" type="Control" parent="Shelf"]
layout_mode = 3
anchors_preset = 0
offset_left = -125.0
offset_top = -9.0
offset_right = -125.0
offset_bottom = -9.0
offset_left = -126.0
offset_top = -10.0
offset_right = -126.0
offset_bottom = -10.0
scale = Vector2(0.9, 0.9)
[node name="Book0" type="Node2D" parent="Shelf/Layer0"]
@ -100,74 +232,229 @@ clip_contents = true
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_top = -49.0
offset_right = 13.0
offset_top = -104.0
offset_right = 15.0
grow_vertical = 0
texture_normal = SubResource("AtlasTexture_c3g4t")
metadata/_edit_use_anchors_ = true
[node name="Book1" type="Node2D" parent="Shelf/Layer0"]
position = Vector2(50.5455, 0.818183)
position = Vector2(16, 0)
[node name="BookButton" type="TextureButton" parent="Shelf/Layer0/Book1"]
clip_contents = true
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_top = -49.0
offset_right = 13.0
offset_top = -76.0
offset_right = 14.0
grow_vertical = 0
texture_normal = SubResource("AtlasTexture_pmg84")
metadata/_edit_use_anchors_ = true
[node name="Book2" type="Node2D" parent="Shelf/Layer0"]
position = Vector2(98.2728, 0.818183)
position = Vector2(31, 0)
[node name="BookButton" type="TextureButton" parent="Shelf/Layer0/Book2"]
clip_contents = true
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_top = -49.0
offset_right = 13.0
offset_top = -76.0
offset_right = 14.0
grow_vertical = 0
texture_normal = SubResource("AtlasTexture_5xs8h")
metadata/_edit_use_anchors_ = true
[node name="Book3" type="Node2D" parent="Shelf/Layer0"]
position = Vector2(98.2728, 0.818183)
position = Vector2(46, 0)
[node name="BookButton" type="TextureButton" parent="Shelf/Layer0/Book3"]
clip_contents = true
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_top = -41.0
offset_right = 10.0
offset_top = -93.0
offset_right = 14.0
grow_vertical = 0
texture_normal = SubResource("AtlasTexture_4cxbt")
metadata/_edit_use_anchors_ = true
[node name="Book4" type="Node2D" parent="Shelf/Layer0"]
position = Vector2(98.2728, 0.818183)
position = Vector2(61, 0)
[node name="BookButton" type="TextureButton" parent="Shelf/Layer0/Book4"]
clip_contents = true
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_top = -35.0
offset_right = 9.0
offset_top = -81.0
offset_right = 15.0
grow_vertical = 0
texture_normal = SubResource("AtlasTexture_x1voy")
[node name="Book5" type="Node2D" parent="Shelf/Layer0"]
position = Vector2(77, 0)
[node name="BookButton" type="TextureButton" parent="Shelf/Layer0/Book5"]
clip_contents = true
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_top = -82.0
offset_right = 28.0
grow_vertical = 0
texture_normal = SubResource("AtlasTexture_s637y")
[node name="Book6" type="Node2D" parent="Shelf/Layer0"]
position = Vector2(106, 0)
[node name="BookButton" type="TextureButton" parent="Shelf/Layer0/Book6"]
clip_contents = true
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_top = -93.0
offset_right = 14.0
grow_vertical = 0
texture_normal = SubResource("AtlasTexture_2rk7g")
[node name="Book7" type="Node2D" parent="Shelf/Layer0"]
position = Vector2(121, 0)
[node name="BookButton" type="TextureButton" parent="Shelf/Layer0/Book7"]
clip_contents = true
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_top = -99.0
offset_right = 14.0
grow_vertical = 0
texture_normal = SubResource("AtlasTexture_uo0qb")
[node name="Book8" type="Node2D" parent="Shelf/Layer0"]
position = Vector2(136, 0)
[node name="BookButton" type="TextureButton" parent="Shelf/Layer0/Book8"]
clip_contents = true
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_top = -99.0
offset_right = 14.0
grow_vertical = 0
texture_normal = SubResource("AtlasTexture_v6h51")
[node name="Book9" type="Node2D" parent="Shelf/Layer0"]
position = Vector2(151, 0)
[node name="BookButton" type="TextureButton" parent="Shelf/Layer0/Book9"]
clip_contents = true
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_top = -102.0
offset_right = 14.0
grow_vertical = 0
texture_normal = SubResource("AtlasTexture_fno8t")
[node name="Book10" type="Node2D" parent="Shelf/Layer0"]
position = Vector2(166, 0)
[node name="BookButton" type="TextureButton" parent="Shelf/Layer0/Book10"]
clip_contents = true
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_top = -99.0
offset_right = 14.0
grow_vertical = 0
texture_normal = SubResource("AtlasTexture_v6h51")
[node name="Book11" type="Node2D" parent="Shelf/Layer0"]
position = Vector2(181, 0)
[node name="BookButton" type="TextureButton" parent="Shelf/Layer0/Book11"]
clip_contents = true
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_top = -95.0
offset_right = 15.0
grow_vertical = 0
texture_normal = SubResource("AtlasTexture_sqqma")
[node name="Book12" type="Node2D" parent="Shelf/Layer0"]
position = Vector2(197, 0)
[node name="BookButton" type="TextureButton" parent="Shelf/Layer0/Book12"]
clip_contents = true
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_top = -93.0
offset_right = 19.0
grow_vertical = 0
texture_normal = SubResource("AtlasTexture_2v8gr")
[node name="Book13" type="Node2D" parent="Shelf/Layer0"]
position = Vector2(217, 0)
[node name="BookButton" type="TextureButton" parent="Shelf/Layer0/Book13"]
clip_contents = true
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_top = -93.0
offset_right = 14.0
grow_vertical = 0
texture_normal = SubResource("AtlasTexture_g33pn")
[node name="Book14" type="Node2D" parent="Shelf/Layer0"]
position = Vector2(232, 0)
[node name="BookButton" type="TextureButton" parent="Shelf/Layer0/Book14"]
clip_contents = true
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_top = -69.0
offset_right = 14.0
grow_vertical = 0
texture_normal = SubResource("AtlasTexture_7bg4e")
[node name="Book15" type="Node2D" parent="Shelf/Layer0"]
position = Vector2(247, 0)
[node name="BookButton" type="TextureButton" parent="Shelf/Layer0/Book15"]
clip_contents = true
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_top = -85.0
offset_right = 14.0
grow_vertical = 0
texture_normal = SubResource("AtlasTexture_yyofn")
[node name="Book16" type="Node2D" parent="Shelf/Layer0"]
position = Vector2(262, 0)
[node name="BookButton" type="TextureButton" parent="Shelf/Layer0/Book16"]
clip_contents = true
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_left = -0.888879
offset_top = -82.2222
offset_right = 15.1111
offset_bottom = -0.222221
grow_vertical = 0
texture_normal = SubResource("AtlasTexture_il3nv")
[node name="Layer1" type="Control" parent="Shelf"]
layout_mode = 3
anchors_preset = 0
offset_left = -167.0
offset_top = 97.0
offset_right = -167.0
offset_bottom = 97.0
offset_left = -226.0
offset_top = 112.0
offset_right = -226.0
offset_bottom = 112.0
scale = Vector2(0.9, 0.9)
[node name="Book0" type="Node2D" parent="Shelf/Layer1"]
@ -176,57 +463,147 @@ clip_contents = true
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_top = -49.0
offset_right = 13.0
offset_top = -62.0
offset_right = 18.0
grow_vertical = 0
texture_normal = SubResource("AtlasTexture_4i6n2")
texture_normal = SubResource("AtlasTexture_b3xvs")
[node name="Book1" type="Node2D" parent="Shelf/Layer1"]
position = Vector2(50.5455, 0.818183)
position = Vector2(19, 0)
[node name="BookButton" type="TextureButton" parent="Shelf/Layer1/Book1"]
clip_contents = true
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_top = -49.0
offset_right = 13.0
offset_top = -65.0
offset_right = 12.0
grow_vertical = 0
texture_normal = SubResource("AtlasTexture_3jfnd")
texture_normal = SubResource("AtlasTexture_7ejmc")
[node name="Book2" type="Node2D" parent="Shelf/Layer1"]
position = Vector2(98.2728, 0.818183)
position = Vector2(32, 0)
[node name="BookButton" type="TextureButton" parent="Shelf/Layer1/Book2"]
clip_contents = true
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_top = -49.0
offset_right = 13.0
offset_top = -68.0
offset_right = 11.0
grow_vertical = 0
texture_normal = SubResource("AtlasTexture_5xs8h")
texture_normal = SubResource("AtlasTexture_pv5xt")
[node name="Book3" type="Node2D" parent="Shelf/Layer1"]
position = Vector2(98.2728, 0.818183)
position = Vector2(44, 0)
[node name="BookButton" type="TextureButton" parent="Shelf/Layer1/Book3"]
clip_contents = true
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_top = -41.0
offset_right = 10.0
offset_top = -72.0
offset_right = 15.0
grow_vertical = 0
texture_normal = SubResource("AtlasTexture_4cxbt")
texture_normal = SubResource("AtlasTexture_0m1py")
[node name="Book4" type="Node2D" parent="Shelf/Layer1"]
position = Vector2(60, 0)
[node name="BookButton" type="TextureButton" parent="Shelf/Layer1/Book4"]
clip_contents = true
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_top = -76.0
offset_right = 17.0
grow_vertical = 0
texture_normal = SubResource("AtlasTexture_ewy65")
[node name="Book5" type="Node2D" parent="Shelf/Layer1"]
position = Vector2(78, 0)
[node name="BookButton" type="TextureButton" parent="Shelf/Layer1/Book5"]
clip_contents = true
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_top = -83.0
offset_right = 16.0
grow_vertical = 0
texture_normal = SubResource("AtlasTexture_p1i0i")
[node name="Book6" type="Node2D" parent="Shelf/Layer1"]
position = Vector2(95, 0)
[node name="BookButton" type="TextureButton" parent="Shelf/Layer1/Book6"]
clip_contents = true
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_top = -86.0
offset_right = 9.0
grow_vertical = 0
texture_normal = SubResource("AtlasTexture_qjlqs")
[node name="Book7" type="Node2D" parent="Shelf/Layer1"]
position = Vector2(105, 0)
[node name="BookButton" type="TextureButton" parent="Shelf/Layer1/Book7"]
clip_contents = true
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_top = -91.0
offset_right = 9.0
grow_vertical = 0
texture_normal = SubResource("AtlasTexture_bef8d")
[node name="Book8" type="Node2D" parent="Shelf/Layer1"]
position = Vector2(115, 0)
[node name="BookButton" type="TextureButton" parent="Shelf/Layer1/Book8"]
clip_contents = true
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_top = -95.0
offset_right = 24.0
grow_vertical = 0
texture_normal = SubResource("AtlasTexture_tmibm")
[node name="Book9" type="Node2D" parent="Shelf/Layer1"]
position = Vector2(140, 0)
[node name="BookButton" type="TextureButton" parent="Shelf/Layer1/Book9"]
clip_contents = true
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_top = -99.0
offset_right = 25.0
grow_vertical = 0
texture_normal = SubResource("AtlasTexture_niqsg")
[node name="Book10" type="Node2D" parent="Shelf/Layer1"]
position = Vector2(166, 0)
[node name="BookButton" type="TextureButton" parent="Shelf/Layer1/Book10"]
clip_contents = true
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_top = -102.0
offset_right = 11.0
grow_vertical = 0
texture_normal = SubResource("AtlasTexture_lqh8e")
[node name="Layer2" type="Control" parent="Shelf"]
layout_mode = 3
anchors_preset = 0
offset_left = 28.0
offset_top = 97.0
offset_right = 28.0
offset_bottom = 97.0
offset_top = 112.0
offset_bottom = 112.0
scale = Vector2(0.9, 0.9)
[node name="Book0" type="Node2D" parent="Shelf/Layer2"]
@ -235,49 +612,231 @@ clip_contents = true
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_top = -61.0
offset_right = 15.0
offset_top = -87.0
offset_right = 13.0
grow_vertical = 0
texture_normal = SubResource("AtlasTexture_b3xvs")
texture_normal = SubResource("AtlasTexture_4i6n2")
[node name="Book1" type="Node2D" parent="Shelf/Layer2"]
position = Vector2(50.5455, 0.818183)
position = Vector2(14, 0)
[node name="BookButton" type="TextureButton" parent="Shelf/Layer2/Book1"]
clip_contents = true
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_top = -49.0
offset_right = 13.0
offset_top = -83.0
offset_right = 15.0
grow_vertical = 0
texture_normal = SubResource("AtlasTexture_5xs8h")
texture_normal = SubResource("AtlasTexture_3jfnd")
[node name="Book2" type="Node2D" parent="Shelf/Layer2"]
position = Vector2(98.2728, 0.818183)
position = Vector2(30, 0)
[node name="BookButton" type="TextureButton" parent="Shelf/Layer2/Book2"]
clip_contents = true
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_top = -41.0
offset_right = 10.0
offset_top = -98.0
offset_right = 12.0
grow_vertical = 0
texture_normal = SubResource("AtlasTexture_pv5xt")
texture_normal = SubResource("AtlasTexture_5j1oq")
[node name="Book3" type="Node2D" parent="Shelf/Layer2"]
position = Vector2(98.2728, 0.818183)
position = Vector2(43, 0)
[node name="BookButton" type="TextureButton" parent="Shelf/Layer2/Book3"]
clip_contents = true
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_top = -32.0
offset_right = 9.0
offset_top = -90.0
offset_right = 13.0
grow_vertical = 0
texture_normal = SubResource("AtlasTexture_0m1py")
texture_normal = SubResource("AtlasTexture_e5eo5")
[node name="Book4" type="Node2D" parent="Shelf/Layer2"]
position = Vector2(57, 0)
[node name="BookButton" type="TextureButton" parent="Shelf/Layer2/Book4"]
clip_contents = true
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_top = -90.0
offset_right = 13.0
grow_vertical = 0
texture_normal = SubResource("AtlasTexture_sungh")
[node name="Book5" type="Node2D" parent="Shelf/Layer2"]
position = Vector2(71, 0)
[node name="BookButton" type="TextureButton" parent="Shelf/Layer2/Book5"]
clip_contents = true
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_top = -90.0
offset_right = 13.0
grow_vertical = 0
texture_normal = SubResource("AtlasTexture_yqrs8")
[node name="Book6" type="Node2D" parent="Shelf/Layer2"]
position = Vector2(85, 0)
[node name="BookButton" type="TextureButton" parent="Shelf/Layer2/Book6"]
clip_contents = true
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_top = -87.0
offset_right = 13.0
grow_vertical = 0
texture_normal = SubResource("AtlasTexture_jrkcq")
[node name="Book7" type="Node2D" parent="Shelf/Layer2"]
position = Vector2(99, 0)
[node name="BookButton" type="TextureButton" parent="Shelf/Layer2/Book7"]
clip_contents = true
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_top = -83.0
offset_right = 15.0
grow_vertical = 0
texture_normal = SubResource("AtlasTexture_2g3qi")
[node name="Book8" type="Node2D" parent="Shelf/Layer2"]
position = Vector2(115, 0)
[node name="BookButton" type="TextureButton" parent="Shelf/Layer2/Book8"]
clip_contents = true
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_top = -98.0
offset_right = 13.0
grow_vertical = 0
texture_normal = SubResource("AtlasTexture_tf04m")
[node name="Book9" type="Node2D" parent="Shelf/Layer2"]
position = Vector2(129, 0)
[node name="BookButton" type="TextureButton" parent="Shelf/Layer2/Book9"]
clip_contents = true
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_top = -90.0
offset_right = 13.0
grow_vertical = 0
texture_normal = SubResource("AtlasTexture_wsiwo")
[node name="Book10" type="Node2D" parent="Shelf/Layer2"]
position = Vector2(143, 0)
[node name="BookButton" type="TextureButton" parent="Shelf/Layer2/Book10"]
clip_contents = true
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_top = -90.0
offset_right = 13.0
grow_vertical = 0
texture_normal = SubResource("AtlasTexture_qbqho")
[node name="Book11" type="Node2D" parent="Shelf/Layer2"]
position = Vector2(157, 0)
[node name="BookButton" type="TextureButton" parent="Shelf/Layer2/Book11"]
clip_contents = true
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_top = -90.0
offset_right = 13.0
grow_vertical = 0
texture_normal = SubResource("AtlasTexture_ik73b")
[node name="Book12" type="Node2D" parent="Shelf/Layer2"]
position = Vector2(171, 0)
[node name="BookButton" type="TextureButton" parent="Shelf/Layer2/Book12"]
clip_contents = true
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_top = -87.0
offset_right = 13.0
grow_vertical = 0
texture_normal = SubResource("AtlasTexture_rwsmd")
[node name="Book13" type="Node2D" parent="Shelf/Layer2"]
position = Vector2(185, 0)
[node name="BookButton" type="TextureButton" parent="Shelf/Layer2/Book13"]
clip_contents = true
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_top = -83.0
offset_right = 14.0
grow_vertical = 0
texture_normal = SubResource("AtlasTexture_2tddc")
[node name="Book14" type="Node2D" parent="Shelf/Layer2"]
position = Vector2(200, 0)
[node name="BookButton" type="TextureButton" parent="Shelf/Layer2/Book14"]
clip_contents = true
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_top = -95.0
offset_right = 13.0
grow_vertical = 0
texture_normal = SubResource("AtlasTexture_mdq4x")
[node name="Book15" type="Node2D" parent="Shelf/Layer2"]
position = Vector2(214, 0)
[node name="BookButton" type="TextureButton" parent="Shelf/Layer2/Book15"]
clip_contents = true
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_top = -90.0
offset_right = 12.0
grow_vertical = 0
texture_normal = SubResource("AtlasTexture_iwv1b")
[node name="Book16" type="Node2D" parent="Shelf/Layer2"]
position = Vector2(227, 0)
[node name="BookButton" type="TextureButton" parent="Shelf/Layer2/Book16"]
clip_contents = true
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_top = -90.0
offset_right = 13.0
grow_vertical = 0
texture_normal = SubResource("AtlasTexture_lhfli")
[node name="Book17" type="Node2D" parent="Shelf/Layer2"]
position = Vector2(241, 0)
[node name="BookButton" type="TextureButton" parent="Shelf/Layer2/Book17"]
clip_contents = true
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_top = -90.0
offset_right = 13.0
grow_vertical = 0
texture_normal = SubResource("AtlasTexture_6p2po")
[node name="ColorRectTop" type="ColorRect" parent="."]
unique_name_in_owner = true
@ -311,13 +870,3 @@ grow_horizontal = 2
grow_vertical = 0
mouse_filter = 2
color = Color(0, 0, 0, 1)
[node name="Success" type="Label" parent="."]
visible = false
layout_mode = 0
offset_left = 230.0
offset_top = 142.0
offset_right = 310.0
offset_bottom = 191.0
theme_override_font_sizes/font_size = 40
text = "成功"