feat: add dailylogin feature

This commit is contained in:
2026-05-01 05:07:54 +08:00
parent 54be7bbb25
commit 21875cdf8a
17 changed files with 1262 additions and 34 deletions
+100
View File
@@ -162,6 +162,106 @@ custom_minimum_size = Vector2(120, 36)
layout_mode = 2
text = "Reset All Scores"
[node name="Daily Rewards" type="VBoxContainer" parent="Margin/VBox/Tabs"]
visible = false
layout_mode = 2
theme_override_constants/separation = 8
metadata/_tab_index = 2
[node name="MonthHBox" type="HBoxContainer" parent="Margin/VBox/Tabs/Daily Rewards"]
layout_mode = 2
theme_override_constants/separation = 12
[node name="Label" type="Label" parent="Margin/VBox/Tabs/Daily Rewards/MonthHBox"]
layout_mode = 2
text = "Target Month:"
[node name="MonthOptionBtn" type="OptionButton" parent="Margin/VBox/Tabs/Daily Rewards/MonthHBox"]
unique_name_in_owner = true
custom_minimum_size = Vector2(150, 0)
layout_mode = 2
[node name="DaysScroll" type="ScrollContainer" parent="Margin/VBox/Tabs/Daily Rewards"]
layout_mode = 2
size_flags_vertical = 3
[node name="DaysGrid" type="GridContainer" parent="Margin/VBox/Tabs/Daily Rewards/DaysScroll"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
theme_override_constants/h_separation = 10
theme_override_constants/v_separation = 10
columns = 6
[node name="DayConfigTemplate" type="PanelContainer" parent="Margin/VBox/Tabs/Daily Rewards/DaysScroll/DaysGrid"]
unique_name_in_owner = true
visible = false
layout_mode = 2
size_flags_horizontal = 3
[node name="ColorRect" type="ColorRect" parent="Margin/VBox/Tabs/Daily Rewards/DaysScroll/DaysGrid/DayConfigTemplate"]
layout_mode = 2
color = Color(0.12, 0.12, 0.12, 1)
[node name="Border" type="ReferenceRect" parent="Margin/VBox/Tabs/Daily Rewards/DaysScroll/DaysGrid/DayConfigTemplate"]
layout_mode = 2
border_color = Color(0.25, 0.25, 0.25, 1)
border_width = 1.0
editor_only = false
[node name="Margin" type="MarginContainer" parent="Margin/VBox/Tabs/Daily Rewards/DaysScroll/DaysGrid/DayConfigTemplate"]
layout_mode = 2
theme_override_constants/margin_left = 4
theme_override_constants/margin_top = 4
theme_override_constants/margin_right = 4
theme_override_constants/margin_bottom = 4
[node name="VBox" type="VBoxContainer" parent="Margin/VBox/Tabs/Daily Rewards/DaysScroll/DaysGrid/DayConfigTemplate/Margin"]
layout_mode = 2
[node name="DayLabel" type="Label" parent="Margin/VBox/Tabs/Daily Rewards/DaysScroll/DaysGrid/DayConfigTemplate/Margin/VBox"]
layout_mode = 2
text = "Day 1"
horizontal_alignment = 1
[node name="TypeOptionBtn" type="OptionButton" parent="Margin/VBox/Tabs/Daily Rewards/DaysScroll/DaysGrid/DayConfigTemplate/Margin/VBox"]
layout_mode = 2
alignment = 1
item_count = 5
popup/item_0/text = "star"
popup/item_0/id = 0
popup/item_1/text = "gold"
popup/item_1/id = 1
popup/item_2/text = "frag_common"
popup/item_2/id = 2
popup/item_3/text = "frag_uncommon"
popup/item_3/id = 3
popup/item_4/text = "frag_rare"
popup/item_4/id = 4
[node name="AmountSpinBox" type="SpinBox" parent="Margin/VBox/Tabs/Daily Rewards/DaysScroll/DaysGrid/DayConfigTemplate/Margin/VBox"]
layout_mode = 2
max_value = 10000.0
alignment = 1
[node name="DRActionBar" type="HBoxContainer" parent="Margin/VBox/Tabs/Daily Rewards"]
layout_mode = 2
theme_override_constants/separation = 8
alignment = 2
[node name="LoadDRConfigBtn" type="Button" parent="Margin/VBox/Tabs/Daily Rewards/DRActionBar"]
unique_name_in_owner = true
custom_minimum_size = Vector2(160, 36)
layout_mode = 2
text = "Reload Config"
[node name="SaveDRConfigBtn" type="Button" parent="Margin/VBox/Tabs/Daily Rewards/DRActionBar"]
unique_name_in_owner = true
custom_minimum_size = Vector2(160, 36)
layout_mode = 2
text = "Save Config"
[node name="StatusLabel" type="Label" parent="Margin/VBox"]
unique_name_in_owner = true
layout_mode = 2
+82
View File
@@ -0,0 +1,82 @@
[gd_scene format=3 uid="uid://sdnq3e6jnnby"]
[ext_resource type="Script" path="res://scripts/ui/daily_reward_config_panel.gd" id="1_script"]
[ext_resource type="Theme" uid="uid://da337sh5qxi0s" path="res://assets/themes/ui_theme.tres" id="2_theme"]
[node name="DailyRewardConfigPanel" type="Control"]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme = ExtResource("2_theme")
script = ExtResource("1_script")
[node name="ColorRect" type="ColorRect" parent="."]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
color = Color(0, 0, 0, 0.85)
[node name="Panel" type="Panel" parent="."]
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -400.0
offset_top = -300.0
offset_right = 400.0
offset_bottom = 300.0
grow_horizontal = 2
grow_vertical = 2
[node name="VBoxContainer" type="VBoxContainer" parent="Panel"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = 20.0
offset_top = 20.0
offset_right = -20.0
offset_bottom = -20.0
grow_horizontal = 2
grow_vertical = 2
theme_override_constants/separation = 15
[node name="Label" type="Label" parent="Panel/VBoxContainer"]
layout_mode = 2
theme_override_font_sizes/font_size = 24
text = "Daily Reward Config (Admin)"
horizontal_alignment = 1
[node name="TextEdit" type="TextEdit" parent="Panel/VBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
size_flags_vertical = 3
theme_override_font_sizes/font_size = 14
[node name="StatusLabel" type="Label" parent="Panel/VBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
horizontal_alignment = 1
[node name="HBoxContainer" type="HBoxContainer" parent="Panel/VBoxContainer"]
layout_mode = 2
alignment = 1
theme_override_constants/separation = 20
[node name="CloseBtn" type="Button" parent="Panel/VBoxContainer/HBoxContainer"]
unique_name_in_owner = true
custom_minimum_size = Vector2(150, 40)
layout_mode = 2
text = "Close"
[node name="SaveBtn" type="Button" parent="Panel/VBoxContainer/HBoxContainer"]
unique_name_in_owner = true
custom_minimum_size = Vector2(150, 40)
layout_mode = 2
text = "Save Config"
+273
View File
@@ -0,0 +1,273 @@
[gd_scene load_steps=5 format=3 uid="uid://dailyreward1234"]
[ext_resource type="Script" path="res://scripts/ui/daily_reward_panel.gd" id="1_script"]
[ext_resource type="Theme" uid="uid://da337sh5qxi0s" path="res://assets/themes/ui_theme.tres" id="2_theme"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_bg"]
bg_color = Color(0.1, 0.1, 0.1, 0.95)
corner_radius_top_left = 8
corner_radius_top_right = 8
corner_radius_bottom_right = 8
corner_radius_bottom_left = 8
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_yellow"]
bg_color = Color(0.95, 0.76, 0.2, 1)
[node name="DailyRewardPanel" type="Control"]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme = ExtResource("2_theme")
script = ExtResource("1_script")
[node name="ColorRect" type="ColorRect" parent="."]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
color = Color(0, 0, 0, 0.7)
[node name="MainWindow" type="PanelContainer" parent="."]
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -450.0
offset_top = -280.0
offset_right = 450.0
offset_bottom = 280.0
grow_horizontal = 2
grow_vertical = 2
theme_override_styles/panel = SubResource("StyleBoxFlat_bg")
[node name="HBox" type="HBoxContainer" parent="MainWindow"]
layout_mode = 2
theme_override_constants/separation = 0
[node name="LeftCol" type="VBoxContainer" parent="MainWindow/HBox"]
layout_mode = 2
size_flags_horizontal = 3
size_flags_stretch_ratio = 2.0
[node name="HeaderMargin" type="MarginContainer" parent="MainWindow/HBox/LeftCol"]
layout_mode = 2
theme_override_constants/margin_left = 20
theme_override_constants/margin_top = 20
theme_override_constants/margin_right = 20
theme_override_constants/margin_bottom = 10
[node name="HeaderHBox" type="HBoxContainer" parent="MainWindow/HBox/LeftCol/HeaderMargin"]
layout_mode = 2
theme_override_constants/separation = 15
[node name="MonthLabel" type="Label" parent="MainWindow/HBox/LeftCol/HeaderMargin/HeaderHBox"]
unique_name_in_owner = true
layout_mode = 2
theme_override_font_sizes/font_size = 28
text = "Month Sign-in"
[node name="FlavorLabel" type="Label" parent="MainWindow/HBox/LeftCol/HeaderMargin/HeaderHBox"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_colors/font_color = Color(0.7, 0.7, 0.7, 1)
theme_override_font_sizes/font_size = 12
text = "A day's plan starts in the morning.
Sign in daily for rewards."
vertical_alignment = 1
autowrap_mode = 2
[node name="CloseBtn" type="Button" parent="MainWindow/HBox/LeftCol/HeaderMargin/HeaderHBox"]
unique_name_in_owner = true
custom_minimum_size = Vector2(40, 40)
layout_mode = 2
text = "X"
[node name="ScrollContainer" type="ScrollContainer" parent="MainWindow/HBox/LeftCol"]
layout_mode = 2
size_flags_vertical = 3
horizontal_scroll_mode = 0
[node name="MarginContainer" type="MarginContainer" parent="MainWindow/HBox/LeftCol/ScrollContainer"]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
theme_override_constants/margin_left = 20
theme_override_constants/margin_top = 10
theme_override_constants/margin_right = 20
theme_override_constants/margin_bottom = 20
[node name="GridContainer" type="GridContainer" parent="MainWindow/HBox/LeftCol/ScrollContainer/MarginContainer"]
unique_name_in_owner = true
layout_mode = 2
theme_override_constants/h_separation = 10
theme_override_constants/v_separation = 10
columns = 7
[node name="RewardSlotTemplate" type="Control" parent="MainWindow/HBox/LeftCol/ScrollContainer/MarginContainer/GridContainer"]
unique_name_in_owner = true
visible = false
custom_minimum_size = Vector2(75, 90)
layout_mode = 2
size_flags_horizontal = 3
[node name="Bg" type="ColorRect" parent="MainWindow/HBox/LeftCol/ScrollContainer/MarginContainer/GridContainer/RewardSlotTemplate"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
color = Color(0.15, 0.15, 0.15, 0.8)
[node name="DayNumber" type="Label" parent="MainWindow/HBox/LeftCol/ScrollContainer/MarginContainer/GridContainer/RewardSlotTemplate"]
layout_mode = 1
offset_left = 5.0
offset_top = 0.0
theme_override_font_sizes/font_size = 40
theme_override_colors/font_color = Color(1, 1, 1, 0.15)
text = "1"
[node name="IconLabel" type="Label" parent="MainWindow/HBox/LeftCol/ScrollContainer/MarginContainer/GridContainer/RewardSlotTemplate"]
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -20.0
offset_top = -20.0
offset_right = 20.0
offset_bottom = 20.0
grow_horizontal = 2
grow_vertical = 2
theme_override_font_sizes/font_size = 32
text = "⭐"
horizontal_alignment = 1
vertical_alignment = 1
[node name="Amount" type="Label" parent="MainWindow/HBox/LeftCol/ScrollContainer/MarginContainer/GridContainer/RewardSlotTemplate"]
layout_mode = 1
anchors_preset = 3
anchor_left = 1.0
anchor_top = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = -40.0
offset_top = -23.0
offset_right = -5.0
grow_horizontal = 0
grow_vertical = 0
theme_override_font_sizes/font_size = 14
text = "10"
horizontal_alignment = 2
[node name="ClaimedOverlay" type="ColorRect" parent="MainWindow/HBox/LeftCol/ScrollContainer/MarginContainer/GridContainer/RewardSlotTemplate"]
visible = false
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
color = Color(0, 0, 0, 0.6)
[node name="Checkmark" type="Label" parent="MainWindow/HBox/LeftCol/ScrollContainer/MarginContainer/GridContainer/RewardSlotTemplate/ClaimedOverlay"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
theme_override_font_sizes/font_size = 60
theme_override_colors/font_color = Color(0.9, 0.9, 0.9, 1)
text = "✓"
horizontal_alignment = 1
vertical_alignment = 1
[node name="TodayBorder" type="ReferenceRect" parent="MainWindow/HBox/LeftCol/ScrollContainer/MarginContainer/GridContainer/RewardSlotTemplate"]
visible = false
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
border_color = Color(1, 0.84, 0, 1)
border_width = 3.0
editor_only = false
[node name="RightCol" type="VBoxContainer" parent="MainWindow/HBox"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_constants/separation = 0
[node name="TopTime" type="ColorRect" parent="MainWindow/HBox/RightCol"]
custom_minimum_size = Vector2(0, 50)
layout_mode = 2
color = Color(0.12, 0.12, 0.12, 1)
[node name="TimeLabel" type="Label" parent="MainWindow/HBox/RightCol/TopTime"]
unique_name_in_owner = true
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
theme_override_colors/font_color = Color(0.6, 0.6, 0.6, 1)
text = "Daily Supply"
horizontal_alignment = 1
vertical_alignment = 1
[node name="MiddleDetails" type="ColorRect" parent="MainWindow/HBox/RightCol"]
layout_mode = 2
size_flags_vertical = 3
color = Color(0.18, 0.18, 0.18, 1)
[node name="VBox" type="VBoxContainer" parent="MainWindow/HBox/RightCol/MiddleDetails"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
alignment = 1
[node name="BigIcon" type="Label" parent="MainWindow/HBox/RightCol/MiddleDetails/VBox"]
layout_mode = 2
theme_override_font_sizes/font_size = 100
text = "⭐"
horizontal_alignment = 1
[node name="RewardName" type="Label" parent="MainWindow/HBox/RightCol/MiddleDetails/VBox"]
layout_mode = 2
theme_override_font_sizes/font_size = 20
theme_override_colors/font_color = Color(0.4, 0.8, 1, 1)
text = "Star Currency"
horizontal_alignment = 1
[node name="RewardAmount" type="Label" parent="MainWindow/HBox/RightCol/MiddleDetails/VBox"]
unique_name_in_owner = true
layout_mode = 2
theme_override_font_sizes/font_size = 28
text = "x 0"
horizontal_alignment = 1
[node name="StatusLabel" type="Label" parent="MainWindow/HBox/RightCol/MiddleDetails/VBox"]
unique_name_in_owner = true
layout_mode = 2
theme_override_colors/font_color = Color(0.8, 0.4, 0.4, 1)
text = ""
horizontal_alignment = 1
[node name="BottomAction" type="PanelContainer" parent="MainWindow/HBox/RightCol"]
custom_minimum_size = Vector2(0, 100)
layout_mode = 2
theme_override_styles/panel = SubResource("StyleBoxFlat_yellow")
[node name="ClaimBtn" type="Button" parent="MainWindow/HBox/RightCol/BottomAction"]
unique_name_in_owner = true
layout_mode = 2
theme_override_colors/font_color = Color(0.1, 0.1, 0.1, 1)
theme_override_colors/font_pressed_color = Color(0, 0, 0, 1)
theme_override_colors/font_hover_color = Color(0.2, 0.2, 0.2, 1)
theme_override_colors/font_disabled_color = Color(0.3, 0.3, 0.3, 1)
theme_override_font_sizes/font_size = 28
text = "Sign In"
flat = true