Files
BABA_YAGA/Assets/Scripts/UI/ProfileController.cs

113 lines
3.7 KiB
C#
Raw Normal View History

2026-04-25 18:20:16 +07:00
using UnityEngine;
using UnityEngine.UIElements;
2026-04-28 00:07:42 +07:00
using System.Threading.Tasks;
2026-04-25 18:20:16 +07:00
2026-04-28 00:07:42 +07:00
namespace Hallucinate.UI
2026-04-25 18:20:16 +07:00
{
2026-04-28 00:07:42 +07:00
public class ProfileController : BaseUIController
2026-04-25 18:20:16 +07:00
{
2026-04-28 00:07:42 +07:00
private Label _username;
private Label _rank;
private ProgressBar _winRateBar;
private Label _winRateText;
2026-04-30 17:47:29 +07:00
private Button _logoutBtn;
// Future authentication schema placeholders
private string _googleIdPlaceholder = "";
private string _avatarUrlPlaceholder = "";
2026-04-28 00:07:42 +07:00
public override void Initialize(VisualElement uxmlRoot, UIManager manager)
{
base.Initialize(uxmlRoot, manager);
_username = root.Q<Label>("Username");
_rank = root.Q<Label>("Rank");
_winRateBar = root.Q<ProgressBar>("WinRateBar");
_winRateText = root.Q<Label>("WinRateText");
2026-04-30 17:47:29 +07:00
_logoutBtn = root.Q<Button>("LogoutBtn");
2026-04-28 00:07:42 +07:00
2026-04-29 01:04:28 +07:00
root.Q<Button>("BackBtn").clicked += async () => await uiManager.Pop();
2026-04-30 17:47:29 +07:00
if (_logoutBtn != null)
{
_logoutBtn.clicked += Logout;
}
2026-05-01 17:57:07 +07:00
if (LocalizationManager.Instance != null)
{
LocalizationManager.Instance.OnLanguageChanged += ApplyLocalization;
ApplyLocalization();
}
2026-04-28 00:07:42 +07:00
LoadProfileData();
}
2026-05-01 17:57:07 +07:00
private void OnDestroy()
{
if (LocalizationManager.Instance != null)
{
LocalizationManager.Instance.OnLanguageChanged -= ApplyLocalization;
}
}
private void ApplyLocalization()
{
if (LocalizationManager.Instance == null) return;
root.Query<Label>().ForEach(l => {
if (l.text == "WIN RATE") l.text = LocalizationManager.Instance.GetLocalizedString("PROFILE_WIN_RATE");
if (l.text == "INVENTORY") l.text = LocalizationManager.Instance.GetLocalizedString("PROFILE_INVENTORY");
});
var backBtn = root.Q<Button>("BackBtn");
if (backBtn != null) backBtn.text = LocalizationManager.Instance.GetLocalizedString("PROFILE_BACK");
if (_logoutBtn != null) _logoutBtn.text = LocalizationManager.Instance.GetLocalizedString("PROFILE_LOGOUT");
}
2026-04-30 17:47:29 +07:00
public override async Task PlayTransitionIn()
{
LoadProfileData(); // Refresh data every time we show the profile
await base.PlayTransitionIn();
}
2026-04-28 00:07:42 +07:00
private void LoadProfileData()
2026-04-25 18:20:16 +07:00
{
2026-04-30 17:47:29 +07:00
// Load saved username or fallback
string savedName = PlayerPrefs.GetString("Username", "Unknown Player");
_username.text = savedName.ToUpper();
// Future schema mockup (Google Sign-In)
_googleIdPlaceholder = PlayerPrefs.GetString("GoogleID", "NOT_LINKED");
_avatarUrlPlaceholder = PlayerPrefs.GetString("AvatarURL", "");
// Mock progression data for now
2026-04-28 00:07:42 +07:00
_rank.text = "DIAMOND II";
_winRateBar.value = 72;
_winRateText.text = "72%";
2026-04-25 18:20:16 +07:00
}
2026-04-30 17:47:29 +07:00
private async void Logout()
{
// Clear local save data
PlayerPrefs.DeleteKey("Username");
PlayerPrefs.DeleteKey("GoogleID");
PlayerPrefs.DeleteKey("AvatarURL");
PlayerPrefs.Save();
Debug.Log("[Profile] User logged out.");
// Disconnect from network if currently running
var runner = Object.FindFirstObjectByType<Fusion.NetworkRunner>();
if (runner != null && runner.IsRunning)
{
await runner.Shutdown();
}
// Redirect to Login Screen
await uiManager.Push<LoginController>();
}
2026-04-25 18:20:16 +07:00
}
}
2026-04-30 17:47:29 +07:00