New custom icon system (not fully done yet)
This commit is contained in:
48
Assets/Scripts/CustomIconLoader.cs
Normal file
48
Assets/Scripts/CustomIconLoader.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user