feat: update shop

This commit is contained in:
2026-04-17 00:17:37 +08:00
parent f10d777c90
commit ff0a2e0f41
5 changed files with 914 additions and 130 deletions
+419 -57
View File
@@ -1,93 +1,455 @@
[gd_scene format=3 uid="uid://c018oue81jm44"]
[ext_resource type="Script" path="res://scripts/ui/shop_panel.gd" id="1"]
[ext_resource type="Script" uid="uid://w0ddjofws4ib" path="res://scripts/ui/shop_panel.gd" id="1"]
[ext_resource type="Theme" uid="uid://da337sh5qxi0s" path="res://assets/themes/ui_theme.tres" id="1_jr3vq"]
[ext_resource type="Texture2D" uid="uid://2d1ks5pmblc7" path="res://assets/graphics/main_menu/bg_back.png" id="3_qjhny"]
[ext_resource type="FontFile" uid="uid://xnjx058n4tsw" path="res://assets/fonts/Nougat-ExtraBlack.ttf" id="3_udh10"]
[ext_resource type="PackedScene" uid="uid://ejeamn0pyey4" path="res://assets/characters/Bob.glb" id="4_bob"]
[ext_resource type="PackedScene" uid="uid://d4cul3w3wem5w" path="res://assets/characters/Gatot.glb" id="4_gatot"]
[ext_resource type="PackedScene" uid="uid://1vk0mjnwkngi" path="res://assets/characters/Masbro.glb" id="4_masbro"]
[ext_resource type="PackedScene" uid="uid://bmln7v6v5kvxg" path="res://assets/characters/Oldpop.glb" id="4_oldpop"]
[ext_resource type="AnimationLibrary" uid="uid://c3pyopnwibckj" path="res://assets/characters/animations/animation-pack.res" id="5_animlib"]
[node name="ShopPanel" type="Control"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_bg"]
bg_color = Color(0.08, 0.09, 0.12, 1)
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_card"]
content_margin_left = 12.0
content_margin_top = 12.0
content_margin_right = 12.0
content_margin_bottom = 12.0
bg_color = Color(0.91, 0.86, 0.61, 1)
border_width_left = 4
border_width_top = 4
border_width_right = 4
border_width_bottom = 4
border_color = Color(0.72, 0.52, 0.1, 1)
corner_radius_top_left = 10
corner_radius_top_right = 10
corner_radius_bottom_right = 10
corner_radius_bottom_left = 10
[node name="ShopPanel" type="Control" unique_id=1967851868]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme = ExtResource("1_jr3vq")
script = ExtResource("1")
[node name="ColorRect" type="ColorRect" parent="."]
[node name="Background" type="Panel" parent="." unique_id=2035775033]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
color = Color(0.12, 0.12, 0.12, 0.95)
theme_override_styles/panel = SubResource("StyleBoxFlat_bg")
[node name="Panel" type="PanelContainer" parent="."]
[node name="Background2" type="TextureRect" parent="." unique_id=1682487151]
modulate = Color(1, 1, 1, 0.28235295)
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -300.0
offset_top = -250.0
offset_right = 300.0
offset_bottom = 250.0
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
texture = ExtResource("3_qjhny")
expand_mode = 2
[node name="MainMargin" type="MarginContainer" parent="." unique_id=1416392345]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme_override_constants/margin_left = 30
theme_override_constants/margin_top = 30
theme_override_constants/margin_right = 30
theme_override_constants/margin_bottom = 30
[node name="MainVBox" type="VBoxContainer" parent="MainMargin" unique_id=298123419]
layout_mode = 2
theme_override_constants/separation = 20
[node name="TopBar" type="HBoxContainer" parent="MainMargin/MainVBox" unique_id=1421665563]
layout_mode = 2
[node name="Wallet" type="HBoxContainer" parent="MainMargin/MainVBox/TopBar" unique_id=382704727]
layout_mode = 2
theme_override_constants/separation = 15
[node name="StarPanel" type="PanelContainer" parent="MainMargin/MainVBox/TopBar/Wallet" unique_id=1049443997]
custom_minimum_size = Vector2(150, 50)
layout_mode = 2
theme = ExtResource("1_jr3vq")
[node name="StarLabel" type="Label" parent="MainMargin/MainVBox/TopBar/Wallet/StarPanel" unique_id=593135182]
unique_name_in_owner = true
layout_mode = 2
theme_override_colors/font_color = Color(0, 0, 0, 1)
theme_override_fonts/font = ExtResource("3_udh10")
theme_override_font_sizes/font_size = 18
text = "✦ 0"
horizontal_alignment = 1
[node name="GoldPanel" type="PanelContainer" parent="MainMargin/MainVBox/TopBar/Wallet" unique_id=132289]
custom_minimum_size = Vector2(150, 50)
layout_mode = 2
theme = ExtResource("1_jr3vq")
[node name="GoldLabel" type="Label" parent="MainMargin/MainVBox/TopBar/Wallet/GoldPanel" unique_id=1638818024]
unique_name_in_owner = true
layout_mode = 2
theme_override_colors/font_color = Color(0, 0, 0, 1)
theme_override_fonts/font = ExtResource("3_udh10")
theme_override_font_sizes/font_size = 18
text = "⭐ 0"
horizontal_alignment = 1
[node name="Spacer" type="Control" parent="MainMargin/MainVBox/TopBar" unique_id=1578035202]
layout_mode = 2
size_flags_horizontal = 3
[node name="TabsHBox" type="HBoxContainer" parent="MainMargin/MainVBox/TopBar" unique_id=805731541]
layout_mode = 2
theme_override_constants/separation = 10
[node name="TabHead" type="Button" parent="MainMargin/MainVBox/TopBar/TabsHBox" unique_id=212253926]
unique_name_in_owner = true
custom_minimum_size = Vector2(60, 50)
layout_mode = 2
theme_override_fonts/font = ExtResource("3_udh10")
text = "HAT"
[node name="TabCostume" type="Button" parent="MainMargin/MainVBox/TopBar/TabsHBox" unique_id=1953478397]
unique_name_in_owner = true
custom_minimum_size = Vector2(60, 50)
layout_mode = 2
theme_override_fonts/font = ExtResource("3_udh10")
text = "CLOTHING"
[node name="TabGlove" type="Button" parent="MainMargin/MainVBox/TopBar/TabsHBox" unique_id=1900195629]
unique_name_in_owner = true
custom_minimum_size = Vector2(60, 50)
layout_mode = 2
theme_override_fonts/font = ExtResource("3_udh10")
text = "GLOVES"
[node name="TabAccessory" type="Button" parent="MainMargin/MainVBox/TopBar/TabsHBox" unique_id=228390814]
unique_name_in_owner = true
custom_minimum_size = Vector2(60, 50)
layout_mode = 2
theme_override_fonts/font = ExtResource("3_udh10")
text = "COSTUME"
[node name="TabGold" type="Button" parent="MainMargin/MainVBox/TopBar/TabsHBox" unique_id=1246468211]
unique_name_in_owner = true
custom_minimum_size = Vector2(60, 50)
layout_mode = 2
theme_override_fonts/font = ExtResource("3_udh10")
text = "GET GOLD"
[node name="TabStar" type="Button" parent="MainMargin/MainVBox/TopBar/TabsHBox" unique_id=378819506]
unique_name_in_owner = true
custom_minimum_size = Vector2(60, 50)
layout_mode = 2
theme_override_fonts/font = ExtResource("3_udh10")
text = "GET STAR"
[node name="ContentHBox" type="HBoxContainer" parent="MainMargin/MainVBox" unique_id=908636948]
layout_mode = 2
size_flags_vertical = 3
theme_override_constants/separation = 30
[node name="LeftSidebar" type="VBoxContainer" parent="MainMargin/MainVBox/ContentHBox" unique_id=1308912288]
custom_minimum_size = Vector2(200, 0)
layout_mode = 2
theme_override_constants/separation = 20
[node name="Banner1" type="Button" parent="MainMargin/MainVBox/ContentHBox/LeftSidebar" unique_id=785866623]
custom_minimum_size = Vector2(0, 100)
layout_mode = 2
theme_override_fonts/font = ExtResource("3_udh10")
disabled = true
text = "Banner Slot"
[node name="Banner2" type="Button" parent="MainMargin/MainVBox/ContentHBox/LeftSidebar" unique_id=1108522673]
custom_minimum_size = Vector2(0, 100)
layout_mode = 2
theme_override_fonts/font = ExtResource("3_udh10")
disabled = true
text = "Banner Slot"
[node name="Banner3" type="Button" parent="MainMargin/MainVBox/ContentHBox/LeftSidebar" unique_id=1479545458]
custom_minimum_size = Vector2(0, 100)
layout_mode = 2
theme_override_fonts/font = ExtResource("3_udh10")
disabled = true
text = "Banner Slot"
[node name="Spacer" type="Control" parent="MainMargin/MainVBox/ContentHBox/LeftSidebar" unique_id=1808260178]
layout_mode = 2
size_flags_vertical = 3
[node name="BackBtn" type="Button" parent="MainMargin/MainVBox/ContentHBox/LeftSidebar" unique_id=1287390655]
unique_name_in_owner = true
custom_minimum_size = Vector2(80, 60)
layout_mode = 2
size_flags_horizontal = 0
text = "←"
[node name="CenterScroll" type="ScrollContainer" parent="MainMargin/MainVBox/ContentHBox" unique_id=953911053]
layout_mode = 2
size_flags_horizontal = 3
horizontal_scroll_mode = 0
[node name="ItemGrid" type="GridContainer" parent="MainMargin/MainVBox/ContentHBox/CenterScroll" unique_id=1867424471]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
theme_override_constants/h_separation = 20
theme_override_constants/v_separation = 20
columns = 2
[node name="Divider" type="ColorRect" parent="MainMargin/MainVBox/ContentHBox" unique_id=221156668]
custom_minimum_size = Vector2(8, 0)
layout_direction = 2
layout_mode = 2
color = Color(0.85, 0.72, 0.35, 1)
[node name="RightPanel" type="VBoxContainer" parent="MainMargin/MainVBox/ContentHBox" unique_id=472452762]
custom_minimum_size = Vector2(350, 0)
layout_mode = 2
theme_override_constants/separation = 15
[node name="SubViewportContainer" type="SubViewportContainer" parent="MainMargin/MainVBox/ContentHBox/RightPanel" unique_id=916953792]
layout_mode = 2
size_flags_vertical = 3
stretch = true
[node name="SubViewport" type="SubViewport" parent="MainMargin/MainVBox/ContentHBox/RightPanel/SubViewportContainer" unique_id=1223822678]
transparent_bg = true
handle_input_locally = false
size = Vector2i(350, 450)
render_target_update_mode = 4
[node name="Camera3D" type="Camera3D" parent="MainMargin/MainVBox/ContentHBox/RightPanel/SubViewportContainer/SubViewport" unique_id=24602145]
transform = Transform3D(1, 0, 0, 0, 0.9659259, 0.25881898, 0, -0.25881898, 0.9659259, 0, 0.5795684, 1.7936413)
fov = 55.0
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="MainMargin/MainVBox/ContentHBox/RightPanel/SubViewportContainer/SubViewport" unique_id=72453875]
transform = Transform3D(0.866025, -0.433013, 0.25, 0, 0.5, 0.866025, -0.5, -0.75, 0.433013, 0, 0, 0)
[node name="CharacterRoot" type="Node3D" parent="MainMargin/MainVBox/ContentHBox/RightPanel/SubViewportContainer/SubViewport" unique_id=222752607]
unique_name_in_owner = true
[node name="Bob" parent="MainMargin/MainVBox/ContentHBox/RightPanel/SubViewportContainer/SubViewport/CharacterRoot" unique_id=1096946192 instance=ExtResource("4_bob")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.484, 0)
visible = false
[node name="Gatot" parent="MainMargin/MainVBox/ContentHBox/RightPanel/SubViewportContainer/SubViewport/CharacterRoot" unique_id=49313654 instance=ExtResource("4_gatot")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.485, 0)
visible = false
[node name="Masbro" parent="MainMargin/MainVBox/ContentHBox/RightPanel/SubViewportContainer/SubViewport/CharacterRoot" unique_id=1131149145 instance=ExtResource("4_masbro")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.485, 0)
visible = false
[node name="Oldpop" parent="MainMargin/MainVBox/ContentHBox/RightPanel/SubViewportContainer/SubViewport/CharacterRoot" unique_id=1364644723 instance=ExtResource("4_oldpop")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.485, 0)
[node name="AnimationPlayer" type="AnimationPlayer" parent="MainMargin/MainVBox/ContentHBox/RightPanel/SubViewportContainer/SubViewport/CharacterRoot" unique_id=245373446]
unique_name_in_owner = true
root_node = NodePath("../Oldpop")
libraries/animation-pack = ExtResource("5_animlib")
autoplay = &"animation-pack/idle"
[node name="CharSelector" type="HBoxContainer" parent="MainMargin/MainVBox/ContentHBox/RightPanel" unique_id=1613160498]
layout_mode = 2
theme_override_constants/separation = 15
alignment = 1
[node name="PrevBtn" type="Button" parent="MainMargin/MainVBox/ContentHBox/RightPanel/CharSelector" unique_id=754085432]
unique_name_in_owner = true
custom_minimum_size = Vector2(40, 40)
layout_mode = 2
text = "<"
[node name="CharName" type="Label" parent="MainMargin/MainVBox/ContentHBox/RightPanel/CharSelector" unique_id=1410054360]
unique_name_in_owner = true
custom_minimum_size = Vector2(100, 0)
layout_mode = 2
theme_override_fonts/font = ExtResource("3_udh10")
text = "Masbro"
horizontal_alignment = 1
[node name="NextBtn" type="Button" parent="MainMargin/MainVBox/ContentHBox/RightPanel/CharSelector" unique_id=1382801465]
unique_name_in_owner = true
custom_minimum_size = Vector2(40, 40)
layout_mode = 2
text = ">"
[node name="Label" type="Label" parent="MainMargin/MainVBox/ContentHBox/RightPanel" unique_id=2080778318]
layout_mode = 2
theme_override_fonts/font = ExtResource("3_udh10")
text = "Drag to rotate"
horizontal_alignment = 1
[node name="StatusLabel" type="Label" parent="MainMargin/MainVBox" unique_id=1749562194]
unique_name_in_owner = true
layout_mode = 2
horizontal_alignment = 1
[node name="Templates" type="Control" parent="." unique_id=842512015]
visible = false
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="VBoxContainer" type="VBoxContainer" parent="Panel"]
layout_mode = 2
[node name="GoldCard" type="PanelContainer" parent="Templates" unique_id=376422212]
unique_name_in_owner = true
custom_minimum_size = Vector2(319, 150)
layout_mode = 0
offset_right = 319.0
offset_bottom = 150.0
theme_override_styles/panel = SubResource("StyleBoxFlat_card")
[node name="Header" type="HBoxContainer" parent="Panel/VBoxContainer"]
[node name="HBox" type="HBoxContainer" parent="Templates/GoldCard" unique_id=2018445885]
layout_mode = 2
alignment = 1
theme_override_constants/separation = 14
[node name="BackBtn" type="Button" parent="Panel/VBoxContainer/Header"]
[node name="Icon" type="ColorRect" parent="Templates/GoldCard/HBox" unique_id=1987319256]
custom_minimum_size = Vector2(125, 125)
layout_mode = 2
text = "Back"
color = Color(0.8, 0.7, 0.4, 1)
[node name="Title" type="Label" parent="Panel/VBoxContainer/Header"]
[node name="VBox" type="VBoxContainer" parent="Templates/GoldCard/HBox" unique_id=1510531971]
layout_mode = 2
size_flags_horizontal = 3
text = "SHOP"
alignment = 1
[node name="AmountLabel" type="Label" parent="Templates/GoldCard/HBox/VBox" unique_id=581128094]
layout_mode = 2
theme_override_colors/font_color = Color(0.15, 0.1, 0.05, 1)
theme_override_font_sizes/font_size = 18
text = "⭐ 100"
horizontal_alignment = 2
[node name="BonusLabel" type="Label" parent="Templates/GoldCard/HBox/VBox" unique_id=31159053]
layout_mode = 2
theme_override_colors/font_color = Color(0.9, 0.45, 0.1, 1)
text = "+50"
horizontal_alignment = 2
[node name="PriceLabel" type="Label" parent="Templates/GoldCard/HBox/VBox" unique_id=2125761085]
layout_mode = 2
theme_override_colors/font_color = Color(0.15, 0.55, 0.2, 1)
text = "$ 0.99"
horizontal_alignment = 1
[node name="TabContainer" type="TabContainer" parent="Panel/VBoxContainer"]
[node name="BuyBtn" type="Button" parent="Templates/GoldCard/HBox/VBox" unique_id=417610366]
layout_mode = 2
text = "Buy"
[node name="StarCard" type="PanelContainer" parent="Templates" unique_id=1034862492]
unique_name_in_owner = true
custom_minimum_size = Vector2(319, 150)
layout_mode = 0
offset_right = 319.0
offset_bottom = 150.0
theme_override_styles/panel = SubResource("StyleBoxFlat_card")
[node name="HBox" type="HBoxContainer" parent="Templates/StarCard" unique_id=1343953464]
layout_mode = 2
theme_override_constants/separation = 14
[node name="Icon" type="ColorRect" parent="Templates/StarCard/HBox" unique_id=914113873]
custom_minimum_size = Vector2(125, 125)
layout_mode = 2
color = Color(0.65, 0.5, 0.9, 1)
[node name="VBox" type="VBoxContainer" parent="Templates/StarCard/HBox" unique_id=1883407781]
layout_mode = 2
size_flags_horizontal = 3
alignment = 1
[node name="AmountLabel" type="Label" parent="Templates/StarCard/HBox/VBox" unique_id=1276779551]
layout_mode = 2
theme_override_colors/font_color = Color(0.15, 0.1, 0.05, 1)
theme_override_font_sizes/font_size = 18
text = "✦ 100"
horizontal_alignment = 2
[node name="HSeparator" type="Control" parent="Templates/StarCard/HBox/VBox" unique_id=1627096153]
clip_contents = true
layout_mode = 2
size_flags_vertical = 3
current_tab = 0
[node name="Head" type="MarginContainer" parent="Panel/VBoxContainer/TabContainer"]
[node name="CostLabel" type="Label" parent="Templates/StarCard/HBox/VBox" unique_id=1937011106]
layout_mode = 2
[node name="GridContainer" type="GridContainer" parent="Panel/VBoxContainer/TabContainer/Head"]
layout_mode = 2
columns = 3
[node name="Costume" type="MarginContainer" parent="Panel/VBoxContainer/TabContainer"]
visible = false
layout_mode = 2
[node name="GridContainer" type="GridContainer" parent="Panel/VBoxContainer/TabContainer/Costume"]
layout_mode = 2
columns = 3
[node name="Glove" type="MarginContainer" parent="Panel/VBoxContainer/TabContainer"]
visible = false
layout_mode = 2
[node name="GridContainer" type="GridContainer" parent="Panel/VBoxContainer/TabContainer/Glove"]
layout_mode = 2
columns = 3
[node name="Accessory" type="MarginContainer" parent="Panel/VBoxContainer/TabContainer"]
visible = false
layout_mode = 2
[node name="GridContainer" type="GridContainer" parent="Panel/VBoxContainer/TabContainer/Accessory"]
layout_mode = 2
columns = 3
[node name="StatusLabel" type="Label" parent="Panel/VBoxContainer"]
layout_mode = 2
text = "Welcome to the Store!"
theme_override_colors/font_color = Color(0.55, 0.35, 0.05, 1)
text = "⭐ 500 Gold"
horizontal_alignment = 1
[node name="BuyBtn" type="Button" parent="Templates/StarCard/HBox/VBox" unique_id=1523983544]
layout_mode = 2
text = "Convert"
[node name="CosmeticCard" type="PanelContainer" parent="Templates" unique_id=1937229989]
unique_name_in_owner = true
custom_minimum_size = Vector2(319, 150)
layout_mode = 0
offset_right = 319.0
offset_bottom = 150.0
theme_override_styles/panel = SubResource("StyleBoxFlat_card")
[node name="HBox" type="HBoxContainer" parent="Templates/CosmeticCard" unique_id=1527720461]
layout_mode = 2
theme_override_constants/separation = 14
[node name="Icon" type="ColorRect" parent="Templates/CosmeticCard/HBox" unique_id=1136185378]
custom_minimum_size = Vector2(125, 125)
layout_mode = 2
color = Color(0.8, 0.7, 0.4, 1)
[node name="VBox" type="VBoxContainer" parent="Templates/CosmeticCard/HBox" unique_id=1048501562]
layout_mode = 2
size_flags_horizontal = 3
alignment = 1
[node name="NameLabel" type="Label" parent="Templates/CosmeticCard/HBox/VBox" unique_id=958903842]
layout_mode = 2
theme_override_colors/font_color = Color(0.1, 0.08, 0.04, 1)
text = "Item Name"
[node name="RarityLabel" type="Label" parent="Templates/CosmeticCard/HBox/VBox" unique_id=882234879]
layout_mode = 2
theme_override_colors/font_color = Color(0.5, 0.5, 0.5, 1)
text = "Common"
[node name="PriceLabel" type="Label" parent="Templates/CosmeticCard/HBox/VBox" unique_id=489381936]
layout_mode = 2
size_flags_vertical = 6
theme_override_colors/font_color = Color(0.15, 0.1, 0.05, 1)
text = "⭐ 0 ✦ 0"
horizontal_alignment = 1
[node name="BtnRow" type="HBoxContainer" parent="Templates/CosmeticCard/HBox/VBox" unique_id=1035177281]
layout_mode = 2
[node name="TryBtn" type="Button" parent="Templates/CosmeticCard/HBox/VBox/BtnRow" unique_id=273726845]
layout_mode = 2
size_flags_horizontal = 3
text = "Try"
[node name="BuyBtn" type="Button" parent="Templates/CosmeticCard/HBox/VBox/BtnRow" unique_id=1486650007]
layout_mode = 2
size_flags_horizontal = 3
text = "Buy"