From a561614e62ede353f5b1bc021caf951cb7cc56f6 Mon Sep 17 00:00:00 2001 From: lamlnt <111482248+lamlnt@users.noreply.github.com> Date: Mon, 23 Sep 2024 17:40:32 +0700 Subject: [PATCH 1/2] add utils --- .../Runtime/Core/Shared/Utils.cs | 127 ++++++++++++++++++ .../Runtime/Core/Shared/Utils.cs.meta | 3 + .../Runtime/Core/Shared/WindowOption.cs | 1 + 3 files changed, 131 insertions(+) create mode 100644 Assets/UnityScreenNavigator/Runtime/Core/Shared/Utils.cs create mode 100644 Assets/UnityScreenNavigator/Runtime/Core/Shared/Utils.cs.meta diff --git a/Assets/UnityScreenNavigator/Runtime/Core/Shared/Utils.cs b/Assets/UnityScreenNavigator/Runtime/Core/Shared/Utils.cs new file mode 100644 index 0000000..dd241f2 --- /dev/null +++ b/Assets/UnityScreenNavigator/Runtime/Core/Shared/Utils.cs @@ -0,0 +1,127 @@ +using System; +using System.Threading; +using Cysharp.Threading.Tasks; +using UnityScreenNavigator.Runtime.Core.Modal; +using UnityScreenNavigator.Runtime.Core.Screen; +using UnityScreenNavigator.Runtime.Core.Shared.Views; +using UnityScreenNavigator.Runtime.Interactivity; + +namespace UnityScreenNavigator.Runtime.Core.Shared +{ + public static class Utils + { + // public static async UniTask ShowToastForLocStr(LocalizedString locStr, float duration = 3F, Action callback = null) + // { + // if (locStr is null) + // return; + // + // var str = await locStr.GetLocalizedStringAsync(); + // + // await Toast.Show(str, duration, null, callback); + // } + // + // public static async UniTask ShowToastForLocStrFormat( + // LocalizedString locStr, + // T formatParam, + // float duration = 3F, + // Action callback = null, + // CancellationToken cancellationToken = default) + // { + // var str = locStr is not null ? await locStr.GetLocalizedStringAsync() : string.Empty; + // + // var toast = await Toast.Show(StringUtils.Format(str, formatParam), duration, null, callback, cancellationToken); + // + // return toast; + // } + + public static UniTask PopScreen(string container, bool playAnim = true) + { + var screenContainer = ScreenContainer.Find(container); + + UniTask res = UniTask.CompletedTask; + + if (screenContainer.IsInTransition) + res = UniTask.WaitUntil(() => !screenContainer.IsInTransition); + + return res.ContinueWith(() => screenContainer.Pop(playAnim)); + + } + + public static UniTask PopModal(string containeStr, bool playAnim = true) + { + var container = ModalContainer.Find(containeStr); + + return container.Pop(playAnim); + + } + public static UniTask PushModal(string containeStr, string prefab, bool playAnim = true) + { + var container = ModalContainer.Find(containeStr); + + var modal = new WindowOption(prefab, playAnim); + + return container.Push(modal); + + } + + public static async UniTask PushModalTakeWindow( + string containeStr, + string prefab, + bool playAnim = true) + { + var container = ModalContainer.Find(containeStr); + + var modal = new WindowOption(prefab, playAnim); + + container.Push(modal); + + if (modal.WindowCreated.Value != null) + { + return modal.WindowCreated.Value; + } + + return await modal.WindowCreated.WaitAsync(); + + } + + public static async UniTask PushModalTakeWindow( + ModalContainer modalContainer, + string prefab, + bool playAnim = true) + { + var modal = new WindowOption(prefab, playAnim); + + modalContainer.Push(modal); + + if (modal.WindowCreated.Value != null) + { + return modal.WindowCreated.Value; + } + + return await modal.WindowCreated.WaitAsync(); + + } + + + public static UniTask PushScreen(string container, string prefab, bool playAnim = true, bool isPoolable = false) + { + var screenContainer = ScreenContainer.Find(container); + + var screen = new WindowOption(prefab, playAnim, IsPoolable: isPoolable); + + return screenContainer.Push(screen); + + } + // public static async void ShowToastForLocStr(IUIViewGroup viewGroup, LocalizedString locStr, float duration = 3) + // { + // if (locStr is null) + // return; + // + // var str = await locStr.GetLocalizedStringAsync(); + // + // Toast.Show(viewGroup, str, duration); + // } + // + } + +} \ No newline at end of file diff --git a/Assets/UnityScreenNavigator/Runtime/Core/Shared/Utils.cs.meta b/Assets/UnityScreenNavigator/Runtime/Core/Shared/Utils.cs.meta new file mode 100644 index 0000000..c8e0600 --- /dev/null +++ b/Assets/UnityScreenNavigator/Runtime/Core/Shared/Utils.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 1c7349d9e2bd40cfa48d124daea1d4b3 +timeCreated: 1727087853 \ No newline at end of file diff --git a/Assets/UnityScreenNavigator/Runtime/Core/Shared/WindowOption.cs b/Assets/UnityScreenNavigator/Runtime/Core/Shared/WindowOption.cs index eed8f7d..b0dde42 100644 --- a/Assets/UnityScreenNavigator/Runtime/Core/Shared/WindowOption.cs +++ b/Assets/UnityScreenNavigator/Runtime/Core/Shared/WindowOption.cs @@ -1,3 +1,4 @@ +using System; using Cysharp.Threading.Tasks; using UnityScreenNavigator.Runtime.Core.Shared.Views; From 5eeaa0f5ce5285efb16a50340d8a069a660380ac Mon Sep 17 00:00:00 2001 From: lamlnt <111482248+lamlnt@users.noreply.github.com> Date: Fri, 22 Nov 2024 09:56:58 +0700 Subject: [PATCH 2/2] Update SimpleTransitionAnimationObject.cs --- .../Shared/Animation/SimpleTransitionAnimationObject.cs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Assets/UnityScreenNavigator/Runtime/Core/Shared/Animation/SimpleTransitionAnimationObject.cs b/Assets/UnityScreenNavigator/Runtime/Core/Shared/Animation/SimpleTransitionAnimationObject.cs index 6cf14fb..22d14dd 100644 --- a/Assets/UnityScreenNavigator/Runtime/Core/Shared/Animation/SimpleTransitionAnimationObject.cs +++ b/Assets/UnityScreenNavigator/Runtime/Core/Shared/Animation/SimpleTransitionAnimationObject.cs @@ -120,8 +120,12 @@ public async UniTask SetTime(CancellationToken cancellationToken) await _sequence.AwaitForComplete(cancellationToken: cancellationToken); - _canvasGroup.interactable = _canvasGroupInteractable; - _canvasGroup.blocksRaycasts = _canvasGroupBlockRaycast; + if (_canvasGroup != null) + { + _canvasGroup.interactable = _canvasGroupInteractable; + _canvasGroup.blocksRaycasts = _canvasGroupBlockRaycast; + } + } public void SetParams(float? duration = null, Ease? easeType = null, SheetAlignment? beforeAlignment = null,