BITKit/Packages/Runtime~/Unity/Scripts/Application/UXApplicationService.cs

77 lines
2.0 KiB
C#

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;
}
}
}