New custom icon system (not fully done yet)

This commit is contained in:
2026-01-24 16:06:03 -07:00
parent ca4d78d711
commit 42b67e9e06
23 changed files with 647 additions and 532 deletions

View File

@@ -0,0 +1,48 @@
using System.Collections.Generic;
using System.Linq;
using Newtonsoft.Json.Linq;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.UI;
public class CustomIconLoader : MonoBehaviour
{
public static async void Init(WaitingForCustomIcon[] objects)
{
var iconsToDownload = new HashSet<string>();
foreach (var obj in objects)
if (!BazookaManager.Instance.iconCache.Any(icon => icon.ID == obj.ID))
iconsToDownload.Add(obj.ID);
if (iconsToDownload.Count != 0)
{
var ids = string.Join(",", iconsToDownload.Select(id => $"\"{id}\""));
using UnityWebRequest request = UnityWebRequest.Get(Endpoints.ICON_MARKETPLACE_ICON_ENDPOINT + $"?ids=[{ids}]");
request.SetRequestHeader("Requester", "BerryDashClient");
request.SetRequestHeader("ClientVersion", Application.version);
request.SetRequestHeader("ClientPlatform", Application.platform.ToString());
await request.SendWebRequest();
if (request.downloadHandler.text == null)
{
return;
}
var jsonResponse = JObject.Parse(request.downloadHandler.text);
if ((bool)jsonResponse["success"])
{
var icons = jsonResponse["data"].ToObject<MarketplaceTempIcon[]>();
foreach (var icon in icons) BazookaManager.Instance.iconCache.Add(new MarketplaceIcon { ID = icon.ID, Data = icon.Data });
}
Debug.Log($"Downloaded {iconsToDownload.Count} custom icons");
}
foreach (var obj in objects)
{
var cachedIcon = BazookaManager.Instance.iconCache.FirstOrDefault(icon => icon.ID == obj.ID);
if (cachedIcon != null)
{
Tools.RenderFromBase64(Tools.FixIconData(cachedIcon.Data).Item1, obj.GetComponent<Image>());
}
Destroy(obj);
}
}
}