|
|
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using TMPro;
- using System.Threading.Tasks;
- using IPA.Updating.BeatMods;
- using UnityEngine;
-
- namespace BSIPA_ModList.UI
- {
-
- // originally ripped verbatim from Andruzz's BeatSaverDownloader
- internal class DownloadProgressCell : LevelListTableCell
- {
- private DownloadObject mod;
-
- public void Init(DownloadObject mod)
- {
- Destroy(GetComponent<LevelListTableCell>());
-
- reuseIdentifier = "DownloadCell";
-
- this.mod = mod;
-
- _authorText = GetComponentsInChildren<TextMeshProUGUI>().First(x => x.name == "Author");
- _authorText.enableWordWrapping = false;
- _authorText.overflowMode = TextOverflowModes.Overflow;
- _songNameText = GetComponentsInChildren<TextMeshProUGUI>().First(x => x.name == "SongName");
- _songNameText.enableWordWrapping = false;
- _songNameText.overflowMode = TextOverflowModes.Overflow;
- _coverRawImage = GetComponentsInChildren<UnityEngine.UI.RawImage>().First(x => x.name == "CoverImage");
- _bgImage = GetComponentsInChildren<UnityEngine.UI.Image>().First(x => x.name == "BG");
- _highlightImage = GetComponentsInChildren<UnityEngine.UI.Image>().First(x => x.name == "Highlight");
- _beatmapCharacteristicAlphas = new float[0];
- _beatmapCharacteristicImages = new UnityEngine.UI.Image[0];
- _bought = true;
-
- foreach (var icon in GetComponentsInChildren<UnityEngine.UI.Image>().Where(x => x.name.StartsWith("LevelTypeIcon")))
- Destroy(icon.gameObject);
-
- _songNameText.text = $"{mod.Mod.Name} <size=60%>v{mod.Mod.ResolvedVersion}</size>";
- _authorText.text = "";
- _coverRawImage.texture = mod.Icon.texture;
-
- _bgImage.enabled = true;
- _bgImage.sprite = Sprite.Create(new Texture2D(1, 1), new Rect(0, 0, 1, 1), Vector2.one / 2f);
- _bgImage.type = UnityEngine.UI.Image.Type.Filled;
- _bgImage.fillMethod = UnityEngine.UI.Image.FillMethod.Horizontal;
-
- Update();
- }
-
- public void Update()
- {
- if (mod == null) return;
- _bgImage.enabled = true;
- switch (mod.State)
- {
- case DownloadObject.States.ToDownload:
- {
- _bgImage.color = new Color(1f, 1f, 1f, 0.35f);
- _bgImage.fillAmount = 0;
- }
- break;
- case DownloadObject.States.Downloading:
- {
- _bgImage.color = new Color(1f, 1f, 1f, 0.35f);
- _bgImage.fillAmount = (float)mod.Progress;
- }
- break;
- case DownloadObject.States.Installing:
- {
- _bgImage.color = new Color(0f, 1f, 1f, 0.35f);
- _bgImage.fillAmount = 1f;
- }
- break;
- case DownloadObject.States.Completed:
- {
- _bgImage.color = new Color(0f, 1f, 0f, 0.35f);
- _bgImage.fillAmount = 1f;
- }
- break;
- case DownloadObject.States.Failed:
- {
- _bgImage.color = new Color(1f, 0f, 0f, 0.35f);
- _bgImage.fillAmount = 1f;
- }
- break;
- }
- }
- }
-
- }
|