feat: overhaul the nakama user management, leaderboard, prep for 2.1

This commit is contained in:
2026-04-03 04:50:18 +08:00
parent 47f88d31dc
commit e1a3ef8e85
318 changed files with 1933 additions and 1099 deletions
+122 -105
View File
@@ -1,151 +1,168 @@
[gd_scene load_steps=3 format=3 uid="uid://biio8efqysivs"]
[gd_scene load_steps=2 format=3 uid="uid://biio8efqysivs"]
[ext_resource type="Script" uid="uid://ic8fg0o0p0i4" path="res://scripts/ui/admin_panel.gd" id="1"]
[ext_resource type="Theme" uid="uid://da337sh5qxi0s" path="res://assets/themes/ui_theme.tres" id="2"]
[node name="AdminPanel" type="PanelContainer"]
offset_right = 480.0
offset_bottom = 520.0
theme = ExtResource("2")
[node name="AdminPanel" type="Panel"]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1")
[node name="VBox" type="VBoxContainer" parent="."]
[node name="BG" type="ColorRect" parent="."]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
color = Color(0.1, 0.1, 0.12, 1)
[node name="Margin" type="MarginContainer" parent="."]
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 = 24
theme_override_constants/margin_top = 16
theme_override_constants/margin_right = 24
theme_override_constants/margin_bottom = 16
[node name="VBox" type="VBoxContainer" parent="Margin"]
layout_mode = 2
theme_override_constants/separation = 8
[node name="Header" type="HBoxContainer" parent="Margin/VBox"]
layout_mode = 2
theme_override_constants/separation = 12
[node name="Header" type="HBoxContainer" parent="VBox"]
layout_mode = 2
[node name="Title" type="Label" parent="VBox/Header"]
[node name="Title" type="Label" parent="Margin/VBox/Header"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
theme_override_colors/font_color = Color(0.647, 0.996, 0.224, 1)
theme_override_font_sizes/font_size = 22
text = "⚙ Admin Panel"
text = "SERVER ADMIN PANEL"
[node name="CloseButton" type="Button" parent="VBox/Header"]
[node name="CountLabel" type="Label" parent="Margin/VBox/Header"]
unique_name_in_owner = true
custom_minimum_size = Vector2(36, 36)
layout_mode = 2
text = ""
text = "0 items"
[node name="TabContainer" type="TabContainer" parent="VBox"]
[node name="RefreshBtn" type="Button" parent="Margin/VBox/Header"]
unique_name_in_owner = true
custom_minimum_size = Vector2(90, 32)
layout_mode = 2
text = "Refresh"
[node name="CloseBtn" type="Button" parent="Margin/VBox/Header"]
unique_name_in_owner = true
custom_minimum_size = Vector2(32, 32)
layout_mode = 2
text = "X"
[node name="Sep" type="HSeparator" parent="Margin/VBox"]
layout_mode = 2
[node name="Tabs" type="TabContainer" parent="Margin/VBox"]
unique_name_in_owner = true
layout_mode = 2
size_flags_vertical = 3
current_tab = 0
[node name="Players" type="VBoxContainer" parent="VBox/TabContainer"]
[node name="Users" type="VBoxContainer" parent="Margin/VBox/Tabs"]
layout_mode = 2
theme_override_constants/separation = 10
theme_override_constants/separation = 8
metadata/_tab_index = 0
[node name="PlayerList" type="ItemList" parent="VBox/TabContainer/Players"]
[node name="UserTree" type="Tree" parent="Margin/VBox/Tabs/Users"]
unique_name_in_owner = true
custom_minimum_size = Vector2(0, 180)
layout_mode = 2
size_flags_vertical = 3
columns = 6
column_titles_visible = true
allow_reselect = true
hide_root = true
select_mode = 1
[node name="PlayerActions" type="HBoxContainer" parent="VBox/TabContainer/Players"]
layout_mode = 2
theme_override_constants/separation = 10
[node name="KickBtn" type="Button" parent="VBox/TabContainer/Players/PlayerActions"]
unique_name_in_owner = true
custom_minimum_size = Vector2(0, 44)
layout_mode = 2
size_flags_horizontal = 3
text = "Kick"
[node name="BanBtn" type="Button" parent="VBox/TabContainer/Players/PlayerActions"]
unique_name_in_owner = true
custom_minimum_size = Vector2(0, 44)
layout_mode = 2
size_flags_horizontal = 3
text = "Ban"
[node name="MuteBtn" type="Button" parent="VBox/TabContainer/Players/PlayerActions"]
unique_name_in_owner = true
custom_minimum_size = Vector2(0, 44)
layout_mode = 2
size_flags_horizontal = 3
text = "Mute"
[node name="Server" type="VBoxContainer" parent="VBox/TabContainer"]
visible = false
layout_mode = 2
theme_override_constants/separation = 10
metadata/_tab_index = 1
[node name="StatsGrid" type="GridContainer" parent="VBox/TabContainer/Server"]
layout_mode = 2
columns = 2
[node name="Label1" type="Label" parent="VBox/TabContainer/Server/StatsGrid"]
layout_mode = 2
text = "Connected Players:"
[node name="PlayerCount" type="Label" parent="VBox/TabContainer/Server/StatsGrid"]
unique_name_in_owner = true
layout_mode = 2
theme_override_colors/font_color = Color(0.647, 0.996, 0.224, 1)
text = "0"
[node name="Label2" type="Label" parent="VBox/TabContainer/Server/StatsGrid"]
layout_mode = 2
text = "Match ID:"
[node name="MatchIdLabel" type="Label" parent="VBox/TabContainer/Server/StatsGrid"]
unique_name_in_owner = true
layout_mode = 2
theme_override_colors/font_color = Color(0.992, 0.796, 0.047, 1)
text = "N/A"
[node name="Label3" type="Label" parent="VBox/TabContainer/Server/StatsGrid"]
layout_mode = 2
text = "Server Status:"
[node name="ServerStatus" type="Label" parent="VBox/TabContainer/Server/StatsGrid"]
unique_name_in_owner = true
layout_mode = 2
theme_override_colors/font_color = Color(0.647, 0.996, 0.224, 1)
text = "Running"
[node name="ServerActions" type="VBoxContainer" parent="VBox/TabContainer/Server"]
[node name="UserActionBar" type="HBoxContainer" parent="Margin/VBox/Tabs/Users"]
layout_mode = 2
theme_override_constants/separation = 8
[node name="EndMatchBtn" type="Button" parent="VBox/TabContainer/Server/ServerActions"]
[node name="SelectAllBtn" type="Button" parent="Margin/VBox/Tabs/Users/UserActionBar"]
unique_name_in_owner = true
custom_minimum_size = Vector2(0, 44)
custom_minimum_size = Vector2(100, 36)
layout_mode = 2
text = "End Match"
text = "Select All"
[node name="RestartMatchBtn" type="Button" parent="VBox/TabContainer/Server/ServerActions"]
[node name="DeselectBtn" type="Button" parent="Margin/VBox/Tabs/Users/UserActionBar"]
unique_name_in_owner = true
custom_minimum_size = Vector2(0, 44)
custom_minimum_size = Vector2(100, 36)
layout_mode = 2
text = "Restart Match"
text = "Deselect All"
[node name="Bans" type="VBoxContainer" parent="VBox/TabContainer"]
[node name="Spacer" type="Control" parent="Margin/VBox/Tabs/Users/UserActionBar"]
layout_mode = 2
size_flags_horizontal = 3
[node name="SelectedLabel" type="Label" parent="Margin/VBox/Tabs/Users/UserActionBar"]
unique_name_in_owner = true
layout_mode = 2
text = "0 selected"
[node name="BanBtn" type="Button" parent="Margin/VBox/Tabs/Users/UserActionBar"]
unique_name_in_owner = true
custom_minimum_size = Vector2(80, 36)
layout_mode = 2
text = "BAN"
[node name="UnbanBtn" type="Button" parent="Margin/VBox/Tabs/Users/UserActionBar"]
unique_name_in_owner = true
custom_minimum_size = Vector2(80, 36)
layout_mode = 2
text = "UNBAN"
[node name="DeleteBtn" type="Button" parent="Margin/VBox/Tabs/Users/UserActionBar"]
unique_name_in_owner = true
custom_minimum_size = Vector2(80, 36)
layout_mode = 2
text = "DELETE"
[node name="Leaderboards" type="VBoxContainer" parent="Margin/VBox/Tabs"]
visible = false
layout_mode = 2
theme_override_constants/separation = 10
metadata/_tab_index = 2
theme_override_constants/separation = 8
metadata/_tab_index = 1
[node name="BanList" type="ItemList" parent="VBox/TabContainer/Bans"]
[node name="LeaderboardTree" type="Tree" parent="Margin/VBox/Tabs/Leaderboards"]
unique_name_in_owner = true
custom_minimum_size = Vector2(0, 180)
layout_mode = 2
size_flags_vertical = 3
columns = 6
column_titles_visible = true
allow_reselect = true
hide_root = true
[node name="UnbanBtn" type="Button" parent="VBox/TabContainer/Bans"]
unique_name_in_owner = true
custom_minimum_size = Vector2(0, 44)
[node name="LBActionBar" type="HBoxContainer" parent="Margin/VBox/Tabs/Leaderboards"]
layout_mode = 2
text = "Unban Selected"
theme_override_constants/separation = 8
alignment = 2
[node name="StatusLabel" type="Label" parent="VBox"]
[node name="SyncLeaderboardBtn" type="Button" parent="Margin/VBox/Tabs/Leaderboards/LBActionBar"]
unique_name_in_owner = true
custom_minimum_size = Vector2(160, 36)
layout_mode = 2
text = "Sync with Storage"
[node name="ResetLBBtn" type="Button" parent="Margin/VBox/Tabs/Leaderboards/LBActionBar"]
unique_name_in_owner = true
visible = false
custom_minimum_size = Vector2(120, 36)
layout_mode = 2
text = "Reset All Scores"
[node name="StatusLabel" type="Label" parent="Margin/VBox"]
unique_name_in_owner = true
layout_mode = 2
theme_override_font_sizes/font_size = 12
horizontal_alignment = 1
+1
View File
@@ -128,6 +128,7 @@ stretch = true
[node name="PreviewViewport" type="SubViewport" parent="MainLayout/RightPanel" unique_id=434116765]
unique_name_in_owner = true
own_world_3d = true
transparent_bg = true
handle_input_locally = false
size = Vector2i(608, 720)
+9
View File
@@ -238,6 +238,14 @@ layout_mode = 2
theme_override_fonts/font = ExtResource("3_e13i6")
text = "Link Email (Keep Progress)"
[node name="AdminPanelBtn" type="Button" parent="MainLayout/LeftPanel/LeftVBox/AccountSection" unique_id=987654321]
unique_name_in_owner = true
custom_minimum_size = Vector2(0, 44)
layout_mode = 2
theme_override_fonts/font = ExtResource("3_e13i6")
theme_override_colors/font_color = Color(1.0, 0.4, 0.4, 1.0)
text = "Server Admin Panel"
[node name="LogoutBtn" type="Button" parent="MainLayout/LeftPanel/LeftVBox/AccountSection" unique_id=1741557407]
unique_name_in_owner = true
custom_minimum_size = Vector2(0, 44)
@@ -260,6 +268,7 @@ stretch = true
[node name="PreviewViewport" type="SubViewport" parent="MainLayout/RightPanel" unique_id=2118325644]
unique_name_in_owner = true
own_world_3d = true
transparent_bg = true
handle_input_locally = false
size = Vector2i(746, 742)