using System; using System.Collections; using AibisDream.Framework; using AibisDream.UI; using UnityEngine; using Yarn.Unity; namespace AibisDream { public static class BaseYarnCommand { #region 命令名 [YarnCommand("NextYarn")] public static void NextYarn(string exitName = null) { EnumEventSystem.Global.Send(EventEnum.NextYarn); YarnVariableStorage.Instance.ClearLocal(); DialogController.Instance.StartCoroutine(GameManager.Instance.NextSceneSo(exitName)); } [YarnCommand("OpenEndMenu")] public static void OpenEndMenu() { UIManager.Instance.ShowPanel(); } [YarnCommand("load_scene")] public static IEnumerator LoadScene(string sceneName) { HideDialog(); yield return SceneLoader.Instance.LoadSceneAsync(sceneName); } [YarnCommand("unload_scene")] public static IEnumerator UnloadScene() { yield return SceneLoader.Instance.UnloadSceneAsync(); } [YarnCommand("hide_dialog")] public static void HideDialog() { DialogUIManager.Instance.HideDialog(); } [YarnCommand("fade_in")] public static IEnumerator FadeIn(float duration = 1) { var panel = UIManager.Instance.GetPanel(); return panel.FadeInAsync(duration); } [YarnCommand("fade_out")] public static IEnumerator FadeOut(float duration = 1) { var panel = UIManager.Instance.GetPanel(); return panel.FadeOutAsync(duration); } [YarnCommand("fade_in_sync")] public static void FadeInSync(float duration = 1) { var panel = UIManager.Instance.GetPanel(); panel.FadeInSync(duration); } [YarnCommand("fade_out_sync")] public static void FadeOutSync(float duration = 1) { var panel = UIManager.Instance.GetPanel(); panel.FadeOutSync(duration); } [YarnCommand("fade_in_white")] public static IEnumerator FadeInWhite(float duration = 1) { var panel = UIManager.Instance.GetPanel(); return panel.FadeInWhiteAsync(duration); } [YarnCommand("flash_white")] public static IEnumerator FlashWhite(float duration = 0.2f) { var panel = UIManager.Instance.GetPanel(); return panel.FlashWhite(duration); } [YarnCommand("wipe_in")] public static IEnumerator WipeIn(float duration = 0.6f) { var panel = UIManager.Instance.GetPanel(); return panel.WipeInAsync(duration); } [YarnCommand("wipe_out")] public static IEnumerator WipeOut(float duration = 0.6f) { var panel = UIManager.Instance.GetPanel(); return panel.WipeOutAsync(duration); } [YarnCommand("shutter_in")] public static IEnumerator ShutterIn(float duration = 0.6f) { var panel = UIManager.Instance.GetPanel(); return panel.ShutterInAsync(duration); } [YarnCommand("shutter_out")] public static IEnumerator ShutterOut(float duration = 0.6f) { var panel = UIManager.Instance.GetPanel(); return panel.ShutterOutAsync(duration); } [YarnCommand("show_obj")] public static IEnumerator ShowObj(string picName, float duration = 1) { var panel = UIManager.Instance.GetPanel(); return panel.ShowObj(picName, duration); } [YarnCommand("hide_obj")] public static IEnumerator HideObj(float duration = 1) { var panel = UIManager.Instance.GetPanel(); return panel.HideObj(duration); } [YarnCommand("show_sprite")] public static IEnumerator ShowSprite(string picName, float duration = 1) { yield return SpriteShowcase.Instance.ShowObj(picName, duration); } [YarnCommand("show_sprite_motion")] public static IEnumerator ShowSpriteMotion(string picName, string motionProfile, float duration = 0.35f) { var showcase = SpriteShowcase.Instance; if (showcase == null) yield break; yield return showcase.ShowObjWithMotion(picName, motionProfile, duration); } [YarnCommand("sprite_motion")] public static IEnumerator SpriteMotion(string motionProfile, float leadDuration = 0.18f) { var showcase = SpriteShowcase.Instance; if (showcase == null) yield break; showcase.PlayCurrentMotion(motionProfile); if (leadDuration > 0f) { yield return new WaitForSeconds(leadDuration); } } [YarnCommand("kite_show")] public static IEnumerator KiteShow(float height = 0, int wind = 0, float duration = 0.35f) { var showcase = SpriteShowcase.Instance; if (showcase == null) yield break; yield return showcase.ShowKite(height, wind, duration); } [YarnCommand("kite_state")] public static IEnumerator KiteState(float height, int wind, float duration = 0.9f, float leadDuration = 0.35f) { var showcase = SpriteShowcase.Instance; if (showcase == null) yield break; showcase.SetKiteState(height, wind, duration); if (leadDuration > 0f) { yield return new WaitForSeconds(Mathf.Min(leadDuration, duration)); } } [YarnCommand("kite_wind")] public static void KiteWind(int wind, float turbulence = -1f) { var showcase = SpriteShowcase.Instance; if (showcase == null) return; showcase.SetKiteWind(wind, turbulence); } [YarnCommand("kite_accent")] public static IEnumerator KiteAccent(string profile, float leadDuration = 0.18f) { var showcase = SpriteShowcase.Instance; if (showcase == null) yield break; showcase.PlayKiteAccent(profile); if (leadDuration > 0f) { yield return new WaitForSeconds(leadDuration); } } [YarnCommand("kite_hide")] public static IEnumerator KiteHide(float duration = 1) { var showcase = SpriteShowcase.Instance; if (showcase == null) yield break; yield return showcase.HideKite(duration); } [YarnCommand("hide_sprite")] public static IEnumerator HideSprite(float duration = 1) { yield return SpriteShowcase.Instance.HideObj(duration); } [YarnCommand("showcase_fade_in")] public static IEnumerator ShowcaseFadeIn(float duration = 1) { yield return SpriteShowcase.Instance.FadeInAsync(duration); } [YarnCommand("showcase_fade_out")] public static IEnumerator ShowcaseFadeOut(float duration = 1) { yield return SpriteShowcase.Instance.FadeOutAsync(duration); } [YarnCommand("showcase_fade_in_sync")] public static void ShowcaseFadeInSync(float duration = 1) { SpriteShowcase.Instance.FadeInSync(duration); } [YarnCommand("showcase_fade_out_sync")] public static void ShowcaseFadeOutSync(float duration = 1) { SpriteShowcase.Instance.FadeOutSync(duration); } [YarnCommand("show_large_sprite")] public static IEnumerator ShowLargeSprite(string picName, float duration = 1) { yield return SpriteShowcase.Instance.ShowLargeObj(picName, duration); } [YarnCommand("hide_large_sprite")] public static IEnumerator HideLargeSprite(float duration = 1) { yield return SpriteShowcase.Instance.HideLargeObj(duration); } [YarnCommand("hide_all_sprites")] public static IEnumerator HideAllSprites(float duration = 1) { yield return SpriteShowcase.Instance.HideAll(duration); } [YarnCommand("show_full_screen")] public static IEnumerator ShowFullScreen(string picName, float duration = 1) { var panel = UIManager.Instance.GetPanel(); return panel.ShowFullScreen(picName, duration); } [YarnCommand("hide_full_screen")] public static IEnumerator HideFullScreen(float duration = 1) { var panel = UIManager.Instance.GetPanel(); return panel.HideFullScreen(duration); } [YarnCommand("open_progress_window")] public static IEnumerator OpenProgressWindow(string title, string description, float duration) { var panel = UIManager.Instance.GetPanel(); return panel.OpenProgressWindow(title, description, duration); } [YarnCommand("open_warning_window")] public static IEnumerator OpenWarningWindow(string description) { var panel = UIManager.Instance.GetPanel(); return panel.OpenWarningWindow(description); } [YarnCommand("flash_red")] public static IEnumerator FlashRed(float duration = 0.2f) { var panel = UIManager.Instance.GetPanel(); return panel.FlashRed(duration); } [YarnCommand("show_sign_board")] public static void ShowSignBoard(bool enable = true) { var panel = UIManager.Instance.GetPanel(); panel.ShowSignBoard(); if (enable) { panel.EnableSignBoard(); } } [YarnCommand("enable_sign_board")] public static void EnableSignBoard() { var panel = UIManager.Instance.GetPanel(); panel.EnableSignBoard(); } [YarnCommand("close_sign_board")] public static void CloseSignBoard() { var panel = UIManager.Instance.GetPanel(); panel.CloseSignBoard(); } [YarnCommand("time_flows_on")] public static IEnumerator TimeFlowsOn(string originState, string targetState) { var panel = UIManager.Instance.GetPanel(); return panel.TimeFlowsOn(originState, targetState); } #endregion } }