update
This commit is contained in:
+50
-3
@@ -31,6 +31,7 @@ extends Control
|
||||
# UI References - User Profile Bar (will be added to scene)
|
||||
var user_profile_bar: Control
|
||||
var profile_panel_instance: Control
|
||||
var admin_panel_instance: Control
|
||||
|
||||
# Store current match ID for copy function
|
||||
var current_match_id: String = ""
|
||||
@@ -38,8 +39,8 @@ var current_match_id: String = ""
|
||||
func _ready():
|
||||
# Check if user is authenticated
|
||||
if not AuthManager.is_logged_in():
|
||||
# Redirect to login screen
|
||||
get_tree().change_scene_to_file("res://scenes/ui/login_screen.tscn")
|
||||
# Redirect to login screen - must use deferred call during _ready()
|
||||
call_deferred("_go_to_login")
|
||||
return
|
||||
|
||||
# Initialize user profile bar
|
||||
@@ -125,6 +126,14 @@ func _create_profile_bar() -> Control:
|
||||
profile_btn.pressed.connect(_on_profile_btn_pressed)
|
||||
bar.add_child(profile_btn)
|
||||
|
||||
# Admin button (only visible for admins/hosts)
|
||||
var admin_btn := Button.new()
|
||||
admin_btn.name = "AdminBtn"
|
||||
admin_btn.text = "Admin"
|
||||
admin_btn.visible = false # Hidden by default, shown if user is admin
|
||||
admin_btn.pressed.connect(_on_admin_btn_pressed)
|
||||
bar.add_child(admin_btn)
|
||||
|
||||
# Logout button
|
||||
var logout_btn := Button.new()
|
||||
logout_btn.name = "LogoutBtn"
|
||||
@@ -151,6 +160,13 @@ func _update_profile_bar() -> void:
|
||||
var avatar_url := UserProfileManager.get_avatar_url()
|
||||
if ResourceLoader.exists(avatar_url):
|
||||
avatar.texture = load(avatar_url)
|
||||
|
||||
# Show admin button if user is admin or host
|
||||
var admin_btn := user_profile_bar.get_node_or_null("AdminBtn") as Button
|
||||
if admin_btn:
|
||||
# Check if user is admin (you can define admin check logic here)
|
||||
var is_admin = _check_if_admin()
|
||||
admin_btn.visible = is_admin
|
||||
|
||||
func _on_profile_btn_pressed() -> void:
|
||||
# Show profile panel
|
||||
@@ -167,7 +183,38 @@ func _on_profile_btn_pressed() -> void:
|
||||
|
||||
func _on_logout_pressed() -> void:
|
||||
AuthManager.logout()
|
||||
get_tree().change_scene_to_file("res://scenes/ui/login_screen.tscn")
|
||||
_go_to_login()
|
||||
|
||||
func _go_to_login() -> void:
|
||||
if get_tree():
|
||||
get_tree().change_scene_to_file("res://scenes/ui/login_screen.tscn")
|
||||
|
||||
func _on_admin_btn_pressed() -> void:
|
||||
# Show admin panel
|
||||
if not admin_panel_instance:
|
||||
var admin_panel_scene := load("res://scenes/ui/admin_panel.tscn")
|
||||
admin_panel_instance = admin_panel_scene.instantiate()
|
||||
# Connect close signal if available
|
||||
if admin_panel_instance.has_signal("closed"):
|
||||
admin_panel_instance.closed.connect(func(): admin_panel_instance.hide())
|
||||
add_child(admin_panel_instance)
|
||||
|
||||
admin_panel_instance.show()
|
||||
# Center the panel
|
||||
admin_panel_instance.position = (get_viewport_rect().size - admin_panel_instance.size) / 2
|
||||
|
||||
func _check_if_admin() -> bool:
|
||||
# Check if user is admin - can be host or have specific admin role
|
||||
# You can extend this to check Nakama user metadata or roles
|
||||
if LobbyManager.is_host:
|
||||
return true
|
||||
|
||||
# Check if user has admin role in their profile (optional)
|
||||
var user_id = AuthManager.get_user_id() if AuthManager.has_method("get_user_id") else ""
|
||||
# Add your admin user IDs here or check from Nakama metadata
|
||||
var admin_user_ids = ["admin_user_id_1", "admin_user_id_2"] # Configure as needed
|
||||
|
||||
return user_id in admin_user_ids
|
||||
|
||||
# =============================================================================
|
||||
# Panel Management
|
||||
|
||||
Reference in New Issue
Block a user