using System; using BITKit.UX; using Cysharp.Threading.Tasks; using UnityEngine; namespace BITKit.Apps { public class UXApplicationService : MonoBehaviour { [SerializeField, SerializeReference, SubclassSelector] private IApplicationService applicationService; [SerializeField] private UXGroup uxGroup; [SerializeField] private UXButton downloadButton; [SerializeField] private UXButton cancelDownloadButton; [SerializeField] private UXButton installButton; [SerializeField] private UXLabel latestVersionSetter; [SerializeField] private UXBar downloadBar; private void Awake() { applicationService.OnLatestVersionCheck += OnLatestVersionCheck; applicationService.OnDownloadLatest+= OnDownloadLatest; applicationService.OnDownloadProgress += OnDownloadProgress; applicationService.OnDownloadComplete += OnDownloadComplete; downloadButton.onClick.AddListener(ConfirmDownload); cancelDownloadButton.onClick.AddListener(OnCancelDownload); } private void OnDestroy() { applicationService.OnLatestVersionCheck -= OnLatestVersionCheck; applicationService.OnDownloadLatest-= OnDownloadLatest; applicationService.OnDownloadProgress -= OnDownloadProgress; applicationService.OnDownloadComplete -= OnDownloadComplete; } private void OnDownloadLatest(string obj) { uxGroup.Entry("download-container"); } private void ConfirmDownload() { //applicationService.DownloadLatestVersionAsync().Forget(); Application.OpenURL(applicationService.DownloadLatestUrl); } private void OnDownloadComplete(string obj) { uxGroup.Entry("complete-container"); } private void OnDownloadProgress(float obj) { downloadBar.Set(obj); } private void OnLatestVersionCheck(string obj) { if (Application.version != obj) { latestVersionSetter.Set(obj); uxGroup.Entry("entryDownload-container"); } else { uxGroup.Enabled = false; } } private void OnCancelDownload() { uxGroup.Enabled = false; } } }