using System.Collections; using System.Collections.Generic; using TMPro; using UnityEngine; using UnityEngine.UI; public class GachaUI : uScrollViewMgr { public GameObject[] gos_grade; public Slider slider_lucky, slider_lucky2; public TextMeshProUGUI[] texts_money; // 0 앨범 오픈 재화, 1 챗 코인, 2 가챠 코인 public TextMeshProUGUI[] texts; // 0 럭키 % public GameObject go_CanEnterLuckyGame; List<(eMoney, int)> list_log = new List<(eMoney, int)>(); public void Set() { gameObject.SetActive(true); DSUtil.InActivateGameObjects(gos_grade); Set_UI(false); } void Set_UI(bool updateSlider) { if (updateSlider) { StartCoroutine(Co_UpdateSlider()); } else { var cal = SaveMgr.Ins.Get_Money(eMoney.Lucky) / table_GlobalValue.Ins.Get_Float("LuckyPoint"); slider_lucky.value = DSUtil.Get_SliderValue(cal); slider_lucky2.value = DSUtil.Get_SliderValue(cal - 1f); texts[0].text = MyText.Get_PercentValueText_100(cal > 2f ? 2f : cal); } go_CanEnterLuckyGame.SetActive(SaveMgr.Ins.Get_Money(eMoney.Lucky) >= table_GlobalValue.Ins.Get_Float("LuckyPoint")); Set_Money(); } IEnumerator Co_UpdateSlider() { float lucky = SaveMgr.Ins.Get_Money(eMoney.Lucky) / table_GlobalValue.Ins.Get_Float("LuckyPoint"); float targetValue1 = Mathf.Min(lucky, 1f); // slider_lucky 목표 float targetValue2 = Mathf.Max(lucky - 1f, 0f); // slider_lucky2 목표 float duration = 0.5f; // 각 슬라이더당 시간 float elapsed = 0f; // slider_lucky 먼저 float startValue1 = slider_lucky.value; while (elapsed < duration) { elapsed += Time.deltaTime; float t = Mathf.Clamp01(elapsed / duration); slider_lucky.value = Mathf.Lerp(startValue1, targetValue1, t); texts[0].text = MyText.Get_PercentValueText_100(slider_lucky.value + slider_lucky2.value); yield return null; } slider_lucky.value = targetValue1; texts[0].text = MyText.Get_PercentValueText_100(slider_lucky.value + slider_lucky2.value); // slider_lucky2 다음 elapsed = 0f; float startValue2 = slider_lucky2.value; while (elapsed < duration) { elapsed += Time.deltaTime; float t = Mathf.Clamp01(elapsed / duration); slider_lucky2.value = Mathf.Lerp(startValue2, targetValue2, t); texts[0].text = MyText.Get_PercentValueText_100(slider_lucky.value + slider_lucky2.value); yield return null; } slider_lucky2.value = targetValue2; texts[0].text = MyText.Get_PercentValueText_100(slider_lucky.value + slider_lucky2.value); } void Set_Money() { texts_money[0].text = SaveMgr.Ins.Get_Money(eMoney.AlbumOpen).ToString(); texts_money[1].text = SaveMgr.Ins.Get_Money(eMoney.Chat).ToString(); texts_money[2].text = SaveMgr.Ins.Get_Money(eMoney.Gacha).ToString(); } public void OnClick_Lucky() { if (SaveMgr.Ins.Check_Money(eMoney.Lucky, table_GlobalValue.Ins.Get_Int("LuckyPoint"))) { SaveMgr.Ins.Add_Money(eMoney.Lucky, -table_GlobalValue.Ins.Get_Int("LuckyPoint")); SaveMgr.Ins.Save(); LobbyUI.Ins.m_Game_Lucky.Set(); Set_UI(false); } } public void OnClick_AD() { if (SaveMgr.Ins.CanShowGachaAD()) { ADInfo.Ins.Show_AD(false, () => { SaveMgr.Ins.Add_Money(eMoney.Gacha, table_GlobalValue.Ins.Get_Int("GachaAD_Reward")); SaveMgr.Ins.Add_GachaADTime(table_GlobalValue.Ins.Get_Int("ADSec_Gacha")); LobbyUI.Ins.m_ToastUI.Set($"가챠 코인 {table_GlobalValue.Ins.Get_Int("GachaAD_Reward")}개를 획득했습니다."); Set_Money(); }); } } public void OnClick_Gacha() { if (SaveMgr.Ins.Check_Money(eMoney.Gacha, table_GlobalValue.Ins.Get_Int("GachaAmount"))) { SaveMgr.Ins.Add_Money(eMoney.Gacha, -table_GlobalValue.Ins.Get_Int("GachaAmount")); var gradedata = table_gacharateconfig.Ins.Get_RadomData(); DSUtil.InActivateGameObjects(gos_grade, gradedata.n_GachaGrade - 1); var reward = table_gachareward.Ins.Get_Reward(gradedata.n_GachaGrade); SaveMgr.Ins.Add_Money(reward.Item1, reward.Item2); SaveMgr.Ins.Add_Money(eMoney.Lucky, reward.Item3); SaveMgr.Ins.Save(); list_log.Add((reward.Item1, reward.Item2)); //list_log.Add((eMoney.Lucky, reward.Item3)); Set_ScrollView(list_log); Set_Vertical_ScrollEnd(0); Set_UI(true); } } }