using System.Collections; using System.Collections.Generic; using System; using UnityEngine; using UnityEngine.Networking; using UnityEngine.UI; using System.Text.RegularExpressions; public class ModManager : MonoBehaviour { [SerializeField] private OnlineAccountHandler Online; [SerializeField] private string Key; [SerializeField] private GameObject ModPrefab; [SerializeField] private GameObject CatPrefab; [SerializeField] public List CreatedModPrefabs; [SerializeField] public List CreatedCatPrefabs; [SerializeField] private Transform ModContainer; [SerializeField] private Transform CatContainer; [SerializeField] private GameObject This; // Start is called before the first frame update void Start() { } // Update is called once per frame void Update() { } public void GetCategory(int i) { for (int j = 0; j < CreatedModPrefabs.Count; j++) { CreatedModPrefabs[j].SetActive(false); } CreatedModPrefabs.Clear(); string url = "https://schaken-mods.com/api/downloads/files?key="+Key+"&categories="+i+"&sortDir=desc&hidden=0&page=1&sortDir=desc&hidden=0"; StartCoroutine(GetCategoryMods(url)); } IEnumerator GetCategoryMods(string uri) { UnityWebRequest uwr = UnityWebRequest.Get(uri); yield return uwr.SendWebRequest(); if (uwr.result == UnityWebRequest.Result.ConnectionError) { Debug.Log("Error While Sending: " + uwr.error); } else { // string FullTXT = uwr.downloadHandler.text.Replace(@"\", string.Empty); string FullTXT = System.Text.RegularExpressions.Regex.Unescape(uwr.downloadHandler.text); string BreakingPoints = "hasPendingVersion"; string[] Content = FullTXT.Split(BreakingPoints); for (int i = 0; i < (Content.Length - 1); i++) { var NewMod = Instantiate(ModPrefab, ModContainer); CreatedModPrefabs.Add(NewMod); ModItem Mod = NewMod.GetComponent(); string NewScreenshot = "hi"; if (Content[i].Contains("\"primaryScreenshotThumb\": null")) { NewScreenshot = "https://schaken-mods.com/uploads/monthly_2021_11/NoImage.png.7598ee76366f585b2bb10610b640e551.png"; } else { NewScreenshot = Content[i].Split (new string[] { "primaryScreenshotThumb" }, StringSplitOptions.None)[1].Split (',')[1].Split (new string[] { "\"url\": \"" }, StringSplitOptions.None)[1].Split ("\"")[0].Trim (); } Mod.Title.text = Content[i].Split (new string[] { "\"title\": \"" }, StringSplitOptions.None)[1].Split ("\"")[0].Trim (); Mod.Date.text = DateTime.Parse(Content[i].Split (new string[] { "\"date\": \"" }, StringSplitOptions.None)[1].Split ("\"")[0].Trim ()).ToString(); Mod.Author.text = Content[i].Split (new string[] { "\"name\": \"" }, StringSplitOptions.None)[2].Split ("\"")[0].Trim (); Mod.ModID = Content[i].Split (new string[] { "\"id\": " }, StringSplitOptions.None)[1].Split (",")[0].Trim (); string EndDescription = "\","; string OrigDescription = Content[i].Split (new string[] { "\"description\": \"" }, StringSplitOptions.None)[1].Split (EndDescription)[0].Trim (); Mod.Description.text = Regex.Replace(OrigDescription, "<.*?>", String.Empty); Mod.LoadSS(NewScreenshot); } } } public void GetCategoryList(int i) { for (int j = 0; j < CreatedCatPrefabs.Count; j++) { CreatedCatPrefabs[j].SetActive(false); } CreatedCatPrefabs.Clear(); string url = "https://schaken-mods.com/api/downloads/categories?key="+Key+"&clubs=0&page=1&perPage=300"; StartCoroutine(GetCategoryMods(url, i)); } IEnumerator GetCategoryMods(string uri, int j) { UnityWebRequest uwr = UnityWebRequest.Get(uri); yield return uwr.SendWebRequest(); if (uwr.result == UnityWebRequest.Result.ConnectionError) { Debug.Log("Error While Sending: " + uwr.error); } else { string FullTXT = System.Text.RegularExpressions.Regex.Unescape(uwr.downloadHandler.text); Debug.Log("Forum REST API: "+FullTXT); string BreakingPoints = "\"perm_3\""; string[] Content = FullTXT.Split(BreakingPoints); for (int i = 0; i < (Content.Length - 1); i++) { if (Content[i].Contains("\"parentId\": "+j+",")) { var NewCat = Instantiate(CatPrefab, CatContainer); CreatedCatPrefabs.Add(NewCat); CatItem Cat = NewCat.GetComponent(); Cat.CatName.text = Content[i].Split (new string[] { "\"name\": \"" }, StringSplitOptions.None)[1].Split ("\"")[0].Trim (); Cat.CatID = Content[i].Split (new string[] { "\"id\": " }, StringSplitOptions.None)[1].Split (",")[0].Trim (); ModManager TempThis = This.GetComponent(); Cat.ModMan = TempThis; } } } } }