using Spine.Unity; using System.Collections; using System.Collections.Generic; using DG.Tweening; using UnityEngine; using UnityEngine.UI; using UnityEngine.Rendering; using TMPro; public class SleepModeMgr : MonoBehaviour { #region const public static SleepModeMgr curMgr; #endregion #region UI public Canvas canvasUI; [SerializeField] private TextMeshProUGUI txtMain; private SkeletonAnimation skJelly; private SkeletonAnimation skBackground; private Canvas sortingCanvas; private TextMeshProUGUI txtSleepMode; private TextMeshProUGUI txtTime; private TextMeshProUGUI txtCurStage; private TextMeshProUGUI txtCurStageCount; private TextMeshProUGUI txtSliderDesc; private RectTransform handle; private TextMeshProUGUI txtBattery; private Slider sldWake; private Image imgCover; private Image imgBattery; private Image imgSldHandle; #endregion #region Values private bool bReLocalize = true; private int itime = 0; private bool isSleep; private bool isTouch; private int iloading = -1; private Color colCover; private string area; private string stage; public bool bAutoSleep; #endregion [SerializeField] private Canvas[] openUis; #region Base public static void SLocalize(bool bmain) { if(curMgr != null) curMgr.Localize(bmain); } public void Localize(bool bmain) { if (bmain) { txtMain.text = LocalizationText.GetText("sleep_title"); } else { bReLocalize = false; txtMain.text = LocalizationText.GetText("sleep_title"); sortingCanvas = canvasUI.transform.Find("SortingCanvas").GetComponent(); skJelly = canvasUI.transform.Find("SleepJelly").GetComponent(); //skBackground = canvasUI.transform.Find("spineBackground").GetComponent(); //txtSleepMode = sortingCanvas.transform.Find("txtSleepMode").GetComponent(); //txtSleepMode.text = LocalizationText.GetText("sleep_title"); txtTime = sortingCanvas.transform.Find("txtTime").GetComponent(); txtCurStageCount = sortingCanvas.transform.Find("txtCurStageCount").GetComponent(); txtCurStage = sortingCanvas.transform.Find("txtCurStage").GetComponent(); txtCurStage.text = FormatString.CombineAll(LocalizationText.GetText("all_now"), " ", LocalizationText.GetText("all_stage")); txtSliderDesc = sortingCanvas.transform.Find("txtSlide").GetComponent(); txtSliderDesc.text = LocalizationText.GetText("sleep_slide"); sldWake = sortingCanvas.transform.Find("sldWaken").transform.GetChild(0).GetComponent(); handle = sldWake.transform.Find("Handle Slide Area").transform.GetChild(0).GetComponent(); imgCover = sortingCanvas.transform.Find("imgCover").GetComponent(); imgBattery = sortingCanvas.transform.Find("imgBattery").transform.GetChild(0).GetComponent(); txtBattery = sortingCanvas.transform.Find("txtBattery").GetComponent(); imgSldHandle = sldWake.transform.Find("Handle Slide Area").GetChild(0).GetComponent(); iloading = 0; } } // 설정에서 언어 변경 시 처리. public static void SReLocalize() { curMgr.Localize(true); curMgr.bReLocalize = true; } // 백버튼 처리. public static bool SCloseMenu() { return curMgr.CloseMenu(); } private bool CloseMenu() { if (canvasUI.enabled) { return true; } return false; } #endregion #region Static public static void SOnSleep() { curMgr.OnSleep(); SoundMgr.Instance.PlaySfx(SoundName.BtnPress); } public static bool GetIsSleep() { return curMgr.isSleep; } #endregion private void Awake() { curMgr = this; itime = 0; isSleep = false; } private void OnSleep() { if (bReLocalize) Localize(false); txtTime.text = FormatString.TextTimeSpace(itime); area = LocalizationText.GetText(FormatString.CombineAll("stage_areaname", (DataHandler.PlayData.curStage / 100).ToString())); stage = FormatString.CombineAll((DataHandler.PlayData.curStage / 100).ToString(), " - ", (DataHandler.PlayData.curStage % 100).ToString()); txtCurStageCount.text = stage; // if (iloading < 0) return; iloading++; isSleep = true; setOptimization(true); InvokeRepeating("setText", 1f,1f); canvasUI.enabled = true; //skBackground.gameObject.SetActive(true); skJelly.gameObject.SetActive(true); sortingCanvas.enabled = true; sldWake.value = 0f; skJelly.AnimationState.SetAnimation(0, "idle", true); //imgSldHandle.raycastTarget = true; //StartCoroutine(FadeCover()); } private IEnumerator OffSleep() { CoverCamera.Hold(); skJelly.AnimationState.SetAnimation(0, "wakeup", false); skJelly.timeScale = 1.5f; yield return new WaitForSeconds(1.5f); skJelly.timeScale = 1f; CoverCamera.Release(); iloading--; isSleep = false; setOptimization(false); CancelInvoke("setText"); //skBackground.gameObject.SetActive(false); skJelly.gameObject.SetActive(false); sortingCanvas.enabled = false; canvasUI.enabled = false; itime = 0; } private IEnumerator FadeCover() { colCover = Color.black; colCover.a = 0f; while (colCover.a <= 0.5f) { colCover.a += 0.015f; imgCover.color = colCover; yield return new WaitForSeconds(0.1f); } } //private IEnumerator decreaseSldValue() //{ // float fvalue = 0.4f; // while (sldWake.value >= 0.01f && !isTouch && !isAwake) // { // colCover.a = 0.5f - (sldWake.value * 0.5f); // imgCover.color = colCover; // fvalue += 0.1f; // sldWake.value -= fvalue; // yield return new WaitForSeconds(0.05f); // } //} public void setSlideValue() { //sldWake.value = fvalue; //StopCoroutine(decreaseSldValue()); StopCoroutine(FadeCover()); colCover.a = 0.5f - (sldWake.value * 0.5f); imgCover.color = colCover; if (sldWake.value >= 0.95f && iloading > 0 && isSleep && isTouch) { isSleep = false; StartCoroutine(OffSleep()); } } public void setOptimization(bool bvalue) { for(int i = 0; i= openUis.Length) GameUIMgr.SSetMainUiOn(true); } GameUIMgr.SSetPopupUiOn(!bvalue); BattleMgr.Instance.SetCameraOn(!bvalue); BattleMgr.SSetBattleUiOn(!bvalue); BattleMgr.SSetClearFailUiOn(!bvalue); BattleMgr.SSetOnDamageText(!bvalue); SoundMgr.Instance.EfcOn = !bvalue; SoundMgr.Instance.BgmOn = !bvalue; SoundMgr.Instance.VoiceOn = !bvalue; //SettingMgr. } public void setText() { txtTime.text = FormatString.TextTimeSpace(itime); area = LocalizationText.GetText(FormatString.CombineAll("stage_areaname", (DataHandler.PlayData.curStage / 100).ToString())); stage = FormatString.CombineAll((DataHandler.PlayData.curStage / 100).ToString(), " - ", (DataHandler.PlayData.curStage % 100).ToString()); txtCurStageCount.text = stage; imgBattery.fillAmount = SystemInfo.batteryLevel; txtBattery.text = FormatString.CombineAll((SystemInfo.batteryLevel * 100).ToString(),FormatString.C_Percent); itime++; } public void OnPointerUp() { isTouch = false; imgSldHandle.raycastTarget = true; if (sldWake.value < 0.95f) { sldWake.value = 0f; colCover.a = 0.5f - (sldWake.value * 0.5f); imgCover.color = colCover; } //if(sldWake.value > 0.95f) // sldWake.value = 0.95f; //StopCoroutine(decreaseSldValue()); //StartCoroutine(decreaseSldValue()); } public void OnPointerDown() { isTouch = true; //imgSldHandle.raycastTarget = false; sldWake.value = 0f; colCover.a = 0.5f - (sldWake.value * 0.5f); } public static void SSetAutoSleep(bool bvalue) { curMgr.bAutoSleep = bvalue; } public static bool SGetAutoSleep() { return curMgr.bAutoSleep; } }