118 lines
2.9 KiB
C#
118 lines
2.9 KiB
C#
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<Image>().color = new Color(255f / 255f, 165f / 255f, 164f / 255f);
|
|
} else {
|
|
Grad.GetComponent<Image>().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);
|
|
}
|
|
}
|
|
}
|
|
} |