Add level & total xp leaderboards
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
using System.Linq;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using TMPro;
|
||||
using UnityEngine;
|
||||
@@ -18,6 +19,8 @@ public class LeaderboardsMenu : MonoBehaviour
|
||||
[SerializeField] private Button selectionBerryButton;
|
||||
[SerializeField] private Button selectionCoinButton;
|
||||
[SerializeField] private Button selectionLegacyButton;
|
||||
[SerializeField] private Button selectionLevelButton;
|
||||
[SerializeField] private Button selectionTotalXPButton;
|
||||
[SerializeField] private Button selectionTotalBerriesButton;
|
||||
|
||||
[SerializeField] private GameObject scoresPanel;
|
||||
@@ -34,6 +37,8 @@ public class LeaderboardsMenu : MonoBehaviour
|
||||
selectionBerryButton.onClick.AddListener(() => { mode = LeaderboardMode.Berry; SwitchMenu(1); });
|
||||
selectionCoinButton.onClick.AddListener(() => { mode = LeaderboardMode.Coin; SwitchMenu(1); });
|
||||
selectionLegacyButton.onClick.AddListener(() => { mode = LeaderboardMode.Legacy; SwitchMenu(1); });
|
||||
selectionLevelButton.onClick.AddListener(() => { mode = LeaderboardMode.Level; SwitchMenu(1); });
|
||||
selectionTotalXPButton.onClick.AddListener(() => { mode = LeaderboardMode.TotalXP; SwitchMenu(1); });
|
||||
selectionTotalBerriesButton.onClick.AddListener(() => { mode = LeaderboardMode.TotalBerries; SwitchMenu(1); });
|
||||
berryShowTypeDropdown.onValueChanged.AddListener(_ => GetTopPlayers());
|
||||
|
||||
@@ -101,6 +106,8 @@ public class LeaderboardsMenu : MonoBehaviour
|
||||
? Endpoints.LEADERBOARDS_COIN_ENDPOINT
|
||||
: mode == LeaderboardMode.Legacy
|
||||
? Endpoints.LEADERBOARDS_LEGACY_ENDPOINT
|
||||
: mode == LeaderboardMode.Level || mode == LeaderboardMode.TotalXP
|
||||
? Endpoints.BD_ACCOUNT_ENDPOINT + "?username="
|
||||
: Endpoints.LEADERBOARDS_TOTAL_ENDPOINT);
|
||||
request.SetRequestHeader("Requester", "BerryDashClient");
|
||||
request.SetRequestHeader("ClientVersion", Application.version);
|
||||
@@ -115,54 +122,130 @@ public class LeaderboardsMenu : MonoBehaviour
|
||||
var jsonResponse = JObject.Parse(request.downloadHandler.text);
|
||||
if ((bool)jsonResponse["success"])
|
||||
{
|
||||
var entries = jsonResponse["data"].ToObject<LeaderboardEntry[]>();
|
||||
for (int i = 0; i < entries.Length; i++)
|
||||
if (mode != LeaderboardMode.Level && mode != LeaderboardMode.TotalXP)
|
||||
{
|
||||
var entry = entries[i];
|
||||
var entryInfo = Instantiate(sampleObject, content.transform);
|
||||
var usernameText = entryInfo.transform.GetChild(0).GetComponent<TMP_Text>();
|
||||
var playerIcon = usernameText.transform.GetChild(0).GetComponent<Image>();
|
||||
var playerIconButton = usernameText.transform.GetChild(0).GetComponent<Button>();
|
||||
var playerOverlay = playerIcon.transform.GetChild(0).GetComponent<Image>();
|
||||
var scoreText = entryInfo.transform.GetChild(1).GetComponent<TMP_Text>();
|
||||
|
||||
usernameText.text = $"{entry.Username} (#{i + 1})";
|
||||
scoreText.text = (mode == LeaderboardMode.Berry || mode == LeaderboardMode.TotalBerries ? "Berries: " : mode == LeaderboardMode.Coin ? "Coins: " : "Score: ") + Tools.FormatWithCommas(entry.Value);
|
||||
|
||||
if (BazookaManager.Instance.GetAccountID() == entry.UserID)
|
||||
var entries = jsonResponse["data"].ToObject<LeaderboardEntry[]>();
|
||||
for (int i = 0; i < entries.Length; i++)
|
||||
{
|
||||
usernameText.text = $"<color=#7FFFD4>{usernameText.text}</color>";
|
||||
scoreText.text = $"<color=#7FFFD4>{scoreText.text}</color>";
|
||||
}
|
||||
var entry = entries[i];
|
||||
var entryInfo = Instantiate(sampleObject, content.transform);
|
||||
var usernameText = entryInfo.transform.GetChild(0).GetComponent<TMP_Text>();
|
||||
var playerIcon = usernameText.transform.GetChild(0).GetComponent<Image>();
|
||||
var playerIconButton = usernameText.transform.GetChild(0).GetComponent<Button>();
|
||||
var playerOverlay = playerIcon.transform.GetChild(0).GetComponent<Image>();
|
||||
var scoreText = entryInfo.transform.GetChild(1).GetComponent<TMP_Text>();
|
||||
|
||||
if (entry.CustomIcon == null)
|
||||
{
|
||||
playerIcon.sprite = Resources.Load<Sprite>("Icons/Icons/bird_" + entry.Icon);
|
||||
if (entry.Icon == 1) playerIcon.sprite = Tools.GetIconForUser(entry.UserID);
|
||||
playerOverlay.sprite = Resources.Load<Sprite>("Icons/Overlays/overlay_" + entry.Overlay);
|
||||
if (entry.Overlay != 0) playerOverlay.gameObject.SetActive(true);
|
||||
if (entry.Overlay == 8) playerOverlay.transform.localPosition = new Vector2(-16.56f, 14.81f);
|
||||
else if (entry.Overlay == 11) playerOverlay.transform.localPosition = new Vector2(-14.74451f, 20.39122f);
|
||||
else if (entry.Overlay == 13) playerOverlay.transform.localPosition = new Vector2(-16.54019f, 14.70365f);
|
||||
try
|
||||
usernameText.text = $"{entry.Username} (#{i + 1})";
|
||||
scoreText.text = (mode == LeaderboardMode.Berry || mode == LeaderboardMode.TotalBerries ? "Berries: " : mode == LeaderboardMode.Coin ? "Coins: " : "Score: ") + Tools.FormatWithCommas(entry.Value);
|
||||
|
||||
if (BazookaManager.Instance.GetAccountID() == entry.UserID)
|
||||
{
|
||||
playerIcon.color = new Color(entry.BirdColor[0] / 255f, entry.BirdColor[1] / 255f, entry.BirdColor[2] / 255f);
|
||||
playerOverlay.color = new Color(entry.BirdColor[0] / 255f, entry.BirdColor[1] / 255f, entry.BirdColor[2] / 255f);
|
||||
usernameText.text = $"<color=#7FFFD4>{usernameText.text}</color>";
|
||||
scoreText.text = $"<color=#7FFFD4>{scoreText.text}</color>";
|
||||
}
|
||||
catch
|
||||
|
||||
if (entry.CustomIcon == null)
|
||||
{
|
||||
playerIcon.color = Color.white;
|
||||
playerOverlay.color = Color.white;
|
||||
playerIcon.sprite = Resources.Load<Sprite>("Icons/Icons/bird_" + entry.Icon);
|
||||
if (entry.Icon == 1) playerIcon.sprite = Tools.GetIconForUser(entry.UserID);
|
||||
playerOverlay.sprite = Resources.Load<Sprite>("Icons/Overlays/overlay_" + entry.Overlay);
|
||||
if (entry.Overlay != 0) playerOverlay.gameObject.SetActive(true);
|
||||
if (entry.Overlay == 8) playerOverlay.transform.localPosition = new Vector2(-16.56f, 14.81f);
|
||||
else if (entry.Overlay == 11) playerOverlay.transform.localPosition = new Vector2(-14.74451f, 20.39122f);
|
||||
else if (entry.Overlay == 13) playerOverlay.transform.localPosition = new Vector2(-16.54019f, 14.70365f);
|
||||
try
|
||||
{
|
||||
playerIcon.color = new Color(entry.BirdColor[0] / 255f, entry.BirdColor[1] / 255f, entry.BirdColor[2] / 255f);
|
||||
playerOverlay.color = new Color(entry.BirdColor[0] / 255f, entry.BirdColor[1] / 255f, entry.BirdColor[2] / 255f);
|
||||
}
|
||||
catch
|
||||
{
|
||||
playerIcon.color = Color.white;
|
||||
playerOverlay.color = Color.white;
|
||||
}
|
||||
}
|
||||
else playerIcon.gameObject.AddComponent<WaitingForCustomIcon>().ID = entry.CustomIcon;
|
||||
playerIconButton.onClick.AddListener(async () =>
|
||||
{
|
||||
var clone = Instantiate(profilePrefab.gameObject, profilePrefab.gameObject.transform.parent);
|
||||
clone.SetActive(true);
|
||||
await clone.GetComponent<ProfileMenu>().Init(entry.UserID);
|
||||
});
|
||||
entryInfo.SetActive(true);
|
||||
}
|
||||
else playerIcon.gameObject.AddComponent<WaitingForCustomIcon>().ID = entry.CustomIcon;
|
||||
playerIconButton.onClick.AddListener(async () =>
|
||||
}
|
||||
else
|
||||
{
|
||||
var entries = jsonResponse["data"]
|
||||
.ToObject<Account[]>()
|
||||
.Select(entry =>
|
||||
{
|
||||
var xp = Tools.CalculateXP(
|
||||
entry.Stats.TotalNormalBerries,
|
||||
entry.Stats.TotalPoisonBerries,
|
||||
entry.Stats.TotalSlowBerries,
|
||||
entry.Stats.TotalUltraBerries,
|
||||
entry.Stats.TotalSpeedyBerries,
|
||||
entry.Stats.TotalCoinBerries
|
||||
);
|
||||
|
||||
return new
|
||||
{
|
||||
Account = entry,
|
||||
XP = xp
|
||||
};
|
||||
})
|
||||
.OrderByDescending(x => x.XP)
|
||||
.ToList();
|
||||
for (int i = 0; i < entries.Count; i++)
|
||||
{
|
||||
var clone = Instantiate(profilePrefab.gameObject, profilePrefab.gameObject.transform.parent);
|
||||
clone.SetActive(true);
|
||||
await clone.GetComponent<ProfileMenu>().Init(entry.UserID);
|
||||
});
|
||||
entryInfo.SetActive(true);
|
||||
var entry = entries[i].Account;
|
||||
var xp = entries[i].XP;
|
||||
var entryInfo = Instantiate(sampleObject, content.transform);
|
||||
var usernameText = entryInfo.transform.GetChild(0).GetComponent<TMP_Text>();
|
||||
var playerIcon = usernameText.transform.GetChild(0).GetComponent<Image>();
|
||||
var playerIconButton = usernameText.transform.GetChild(0).GetComponent<Button>();
|
||||
var playerOverlay = playerIcon.transform.GetChild(0).GetComponent<Image>();
|
||||
var scoreText = entryInfo.transform.GetChild(1).GetComponent<TMP_Text>();
|
||||
|
||||
usernameText.text = $"{entry.Username} (#{i + 1})";
|
||||
scoreText.text = (mode == LeaderboardMode.Level ? "Level: " : "XP: ") + Tools.FormatWithCommas(mode == LeaderboardMode.Level ? Tools.GetLevelInfo(xp).level.ToString() : xp.ToString());
|
||||
|
||||
if (BazookaManager.Instance.GetAccountID() == entry.UserID)
|
||||
{
|
||||
usernameText.text = $"<color=#7FFFD4>{usernameText.text}</color>";
|
||||
scoreText.text = $"<color=#7FFFD4>{scoreText.text}</color>";
|
||||
}
|
||||
|
||||
if (entry.CustomIcon == null)
|
||||
{
|
||||
playerIcon.sprite = Resources.Load<Sprite>("Icons/Icons/bird_" + entry.Icon);
|
||||
if (entry.Icon == 1) playerIcon.sprite = Tools.GetIconForUser(entry.UserID);
|
||||
playerOverlay.sprite = Resources.Load<Sprite>("Icons/Overlays/overlay_" + entry.Overlay);
|
||||
if (entry.Overlay != 0) playerOverlay.gameObject.SetActive(true);
|
||||
if (entry.Overlay == 8) playerOverlay.transform.localPosition = new Vector2(-16.56f, 14.81f);
|
||||
else if (entry.Overlay == 11) playerOverlay.transform.localPosition = new Vector2(-14.74451f, 20.39122f);
|
||||
else if (entry.Overlay == 13) playerOverlay.transform.localPosition = new Vector2(-16.54019f, 14.70365f);
|
||||
try
|
||||
{
|
||||
playerIcon.color = new Color(entry.BirdColor[0] / 255f, entry.BirdColor[1] / 255f, entry.BirdColor[2] / 255f);
|
||||
playerOverlay.color = new Color(entry.BirdColor[0] / 255f, entry.BirdColor[1] / 255f, entry.BirdColor[2] / 255f);
|
||||
}
|
||||
catch
|
||||
{
|
||||
playerIcon.color = Color.white;
|
||||
playerOverlay.color = Color.white;
|
||||
}
|
||||
}
|
||||
else playerIcon.gameObject.AddComponent<WaitingForCustomIcon>().ID = entry.CustomIcon;
|
||||
playerIconButton.onClick.AddListener(async () =>
|
||||
{
|
||||
var clone = Instantiate(profilePrefab.gameObject, profilePrefab.gameObject.transform.parent);
|
||||
clone.SetActive(true);
|
||||
await clone.GetComponent<ProfileMenu>().Init(entry.UserID);
|
||||
});
|
||||
entryInfo.SetActive(true);
|
||||
}
|
||||
}
|
||||
CustomIconLoader.Init(FindObjectsByType<WaitingForCustomIcon>(FindObjectsSortMode.None));
|
||||
}
|
||||
|
||||
@@ -5,5 +5,7 @@ public enum LeaderboardMode
|
||||
Berry,
|
||||
Coin,
|
||||
Legacy,
|
||||
Level,
|
||||
TotalXP,
|
||||
TotalBerries
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user