Singularity/Assets/Scripts/ImportImages.cs

102 lines
3.1 KiB
C#
Raw Normal View History

2024-05-06 14:45:45 -04:00
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.UI;
public class ImportImages : MonoBehaviour
{
[SerializeField] private DownloadMod DM;
[SerializeField] private GameObject ImagePrefab;
[SerializeField] private Transform ImageContaier;
[SerializeField] private List<GameObject> ImageList;
private string FullImport;
// Start is called before the first frame update
void Start() {
for (int i = 0; i < ImageList.Count; i++) {
DestroyImmediate(ImageList[i]);
}
ImageList.Clear();
}
// Update is called once per frame
void Update()
{
}
public void FillMe(string A) {
FullImport = A;
string[] Images = A.Split(",");
string ID = DM.CurrentJSON.Mod.Id.ToString();
for (int i = 1; i < Images.Length; i++) {
string Link = $"https://staticdelivery.nexusmods.com/mods/{Images[i]}";
GameObject imagePrefab = Instantiate(ImagePrefab, ImageContaier);
RawImage Screenie = imagePrefab.GetComponent<ImagePrefab>().FillMe(Link, DM, true);
ImageList.Add(imagePrefab);
StartCoroutine(LoadWebP(Link, Screenie));
}
}
public void OpenModPage() {
Application.OpenURL(DM.CurrentJSON.Mod.Url+"?GetImages=true");
}
private IEnumerator LoadImage (string B, RawImage A) {
UnityWebRequest WWW = UnityWebRequestTexture.GetTexture(B);
yield return WWW.SendWebRequest();
if (WWW.result != UnityWebRequest.Result.ConnectionError) {
A.texture = DownloadHandlerTexture.GetContent(WWW);
A.SetNativeSize();
A.SizeToParent();
}
}
private IEnumerator LoadWebP(string url, RawImage rawImage) {
using (UnityWebRequest www = UnityWebRequest.Get(url)) {
yield return www.SendWebRequest();
if (www.result != UnityWebRequest.Result.Success) {
Debug.LogError(www.error);
} else {
byte[] webPData = www.downloadHandler.data;
if (webPData == null || webPData.Length == 0) {
Debug.LogError("No WebP data received.");
yield break;
}
WebpImporter.ByteWebpTexture2D(webPData, (texture) => {
rawImage.texture = texture;
});
rawImage.SetNativeSize();
rawImage.SizeToParent();
}
}
}
public void SaveImages() {
string[] Images = FullImport.Split(",");
for (int i = 1; i < Images.Length; i++) {
string Link = $"https://staticdelivery.nexusmods.com/mods/{Images[i]}";
GameObject imagePrefab = Instantiate(ImagePrefab, DM.ImageContainer);
RawImage Screenie = imagePrefab.GetComponent<ImagePrefab>().FillMe(Link, DM);
DM.ImagePrefabList.Add(imagePrefab);
Screenie.texture = ImageList[i-1].GetComponent<ImagePrefab>().Image.texture;
Screenie.SetNativeSize();
Screenie.SizeToParent();
// StartCoroutine(LoadWebP(Link, Screenie));
}
DM.UpdateImagesJSON();
gameObject.SetActive(false);
for (int i = 0; i < ImageList.Count; i++) {
DestroyImmediate(ImageList[i]);
}
ImageList.Clear();
}
}