using System; using System.Collections; using System.IO; using TMPro; using UnityEngine; using UnityEngine.Networking; using UnityEngine.UI; public class ModListPrefab : MonoBehaviour { [SerializeField] private RawImage Screenie; [SerializeField] private TextMeshProUGUI Title; [SerializeField] private TextMeshProUGUI Version; [SerializeField] public TextMeshProUGUI Website; [SerializeField] public TextMeshProUGUI Downloaded; [SerializeField] public TextMeshProUGUI DownloadPercent; [SerializeField] public Slider Progress; [SerializeField] public GameObject Grad; [SerializeField] private SpinVert Spinner; [SerializeField] public GameObject FailedImage; private DownloadMod DM; public string ID; public SchakenMods Mod; private string ModInfoDir; private string URL; // Start is called before the first frame update void Start() { ModInfoDir = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)+@"\Schaken-ModsĀ®\Mod Downloader\Mods\"; } // Update is called once per frame void Update() { } public RawImage FillMe(string website, SchakenMods A, DownloadMod dm) { Title.text = A.Mod.Title; Version.text = $"Version: {A.Mod.Version}"; Website.text = $"Hosted at: {website}"; Downloaded.text = $"Downloaded: {A.Mod.Downloaded.ToLocalTime()}"; ID = A.Mod.Id.ToString(); DM = dm; Mod = A; URL = A.Mod.Url; if (A.Mod.Downloaded < A.Mod.Updated) { OutOfDate(false); } return Screenie; } public void OutOfDate(bool TF) { if (!TF) { Grad.GetComponent().color = new Color(255f / 255f, 165f / 255f, 164f / 255f); } else { Grad.GetComponent().color = new Color(125f / 255f, 165f / 255f, 164f / 255f); } } public void SelectMod() { DM.gameObject.SetActive(true); if (Mod != null) { DM.FillMe(Mod); } else { Debug.LogError("Mod is null"); } } public void UpdateProgress(float A) { Progress.gameObject.SetActive(A < 1f); // Grad.SetActive(!(A < 1f)); Progress.value = A; DownloadPercent.text = string.Format("{0:P1}", A); } public void Help() { if (URL.Contains("nexusmods.com")) { Application.OpenURL($"{URL}?tab=posts"); } else { Application.OpenURL($"{URL}?tab=comments"); } } public void DeleteMe() { File.Delete(ModInfoDir); DM.RemoveMe(ID); } public void RefreshImage() { StartCoroutine(DownloadImage(Mod.Mod.PrimaryScreenshotThumb.Url, Screenie)); } public void CheckForModUpdates() { Spin(); DM.CheckForModUpdates(Mod, this); } public bool Spin() { bool TF = Spinner.ToggleSpin(); return TF; } IEnumerator DownloadImage(string imageUrl, RawImage A) { using (UnityWebRequest www = UnityWebRequestTexture.GetTexture(imageUrl)) { yield return www.SendWebRequest(); if (www.result != UnityWebRequest.Result.ConnectionError) { A.texture = DownloadHandlerTexture.GetContent(www); A.SetNativeSize(); A.SizeToParent(); } else { Debug.LogError("Error downloading image: " + www.error, A.gameObject); } } } }