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

@@ -129,9 +129,9 @@ public class IconMarketplaceDownloadIcon : MonoBehaviour
}
}
var currentIcons = new JArray();
foreach (var icon in BazookaManager.Instance.GetCustomBirdIconData().Data)
foreach (var icon in BazookaManager.Instance.GetCustomBirdIconData().Purchased)
{
currentIcons.Add(icon.UUID);
currentIcons.Add(icon);
}
ShowStatus("Loading...");
WWWForm dataForm = new();
@@ -160,14 +160,14 @@ public class IconMarketplaceDownloadIcon : MonoBehaviour
}
ShowStatus(null);
var jsonResponse = JObject.Parse(request.downloadHandler.text);
var icons = JsonConvert.DeserializeObject<MarketplaceIconType[]>(jsonResponse["data"].ToString());
var icons = JsonConvert.DeserializeObject<MarketplaceTempIcon[]>(jsonResponse["data"].ToString());
var localUserID = BazookaManager.Instance.GetAccountID();
foreach (var entry in icons)
{
GameObject newIcon = Instantiate(sample, content.transform);
newIcon.name = "IconEntry";
Tools.RenderFromBase64(entry.Data, newIcon.transform.GetChild(0).GetChild(0).GetComponent<Image>());
Tools.RenderFromBase64(Tools.FixIconData(entry.Data).Item1, newIcon.transform.GetChild(0).GetChild(0).GetComponent<Image>());
newIcon.transform.GetChild(1).GetComponent<TMP_Text>().text = "Bird Name: " + entry.Name;
newIcon.transform.GetChild(2).GetComponent<TMP_Text>().text = "Price " + Tools.FormatWithCommas(entry.Price) + " coins";
newIcon.transform.GetChild(3).GetComponent<TMP_Text>().text = "Designer Name: " + entry.CreatorUsername;
@@ -187,7 +187,7 @@ public class IconMarketplaceDownloadIcon : MonoBehaviour
HandlePurchase(entry, buybtn, sellbtn, localUserID);
Tools.RefreshHierarchy(newIcon);
});
bool alreadyBought = BazookaManager.Instance.GetCustomBirdIconData().Data.Any(d => d.UUID == entry.UUID);
bool alreadyBought = BazookaManager.Instance.GetCustomBirdIconData().Purchased.Any(d => d == entry.ID);
if (alreadyBought)
{
buybtn.interactable = false;
@@ -221,7 +221,7 @@ public class IconMarketplaceDownloadIcon : MonoBehaviour
backButton.interactable = true;
}
void HandlePurchase(MarketplaceIconType data, Button button, Button sellButton, BigInteger? localUserID)
void HandlePurchase(MarketplaceTempIcon data, Button button, Button sellButton, BigInteger? localUserID)
{
button.interactable = false;
MarketplaceIconStorageType marketplaceIconStorage = BazookaManager.Instance.GetCustomBirdIconData();
@@ -237,9 +237,7 @@ public class IconMarketplaceDownloadIcon : MonoBehaviour
iconPurchaseSound.Stop();
iconPurchaseSound.Play();
}
var list = marketplaceIconStorage.Data.ToList();
list.Add(data);
marketplaceIconStorage.Data = list.ToArray();
marketplaceIconStorage.Purchased.Add(data.ID);
if (localUserID != data.CreatorUserID)
{
button.transform.GetChild(0).GetComponent<TMP_Text>().text = "Purchased";
@@ -253,29 +251,21 @@ public class IconMarketplaceDownloadIcon : MonoBehaviour
BazookaManager.Instance.SetCustomBirdIconData(marketplaceIconStorage);
}
void HandleSell(MarketplaceIconType data, Button buyBtn, TMP_Text buyttnText, Button sellButton, BigInteger? localUserID)
void HandleSell(MarketplaceTempIcon data, Button buyBtn, TMP_Text buyttnText, Button sellButton, BigInteger? localUserID)
{
MarketplaceIconStorageType marketplaceIconStorage = BazookaManager.Instance.GetCustomBirdIconData();
var list = marketplaceIconStorage.Data.ToList();
var owned = list.FirstOrDefault(d => d.UUID == data.UUID);
if (owned != null)
var owned = marketplaceIconStorage.Purchased.Contains(data.ID);
if (owned)
{
list.Remove(owned);
marketplaceIconStorage.Data = list.ToArray();
marketplaceIconStorage.Purchased.Remove(data.ID);
marketplaceIconStorage.Balance += data.Price;
if (data.UUID == marketplaceIconStorage.Selected) marketplaceIconStorage.Selected = null;
if (data.ID == marketplaceIconStorage.Selected) marketplaceIconStorage.Selected = null;
iconPurchaseSound.Stop();
iconPurchaseSound.Play();
balanceText.text = Tools.FormatWithCommas(marketplaceIconStorage.Balance);
BazookaManager.Instance.SetCustomBirdIconData(marketplaceIconStorage);
if (localUserID != data.CreatorUserID)
{
buyttnText.text = "Purchase";
}
else
{
buyttnText.text = "Claim";
}
if (localUserID != data.CreatorUserID) buyttnText.text = "Purchase";
else buyttnText.text = "Claim";
buyBtn.interactable = true;
sellButton.gameObject.SetActive(false);
}