using CodeStage.AntiCheat.ObscuredTypes; using System.Collections.Generic; using TMPro; using UnityEngine; using UnityEngine.UI; public class PetUI_Left : UI3DModel { public PetInfoDetailUI m_PetInfoDetailUI; public PetPureStatCard[] arr_statcard; public Image[] images; // 0 액티브 스킬, 1 패시브 스킬 public TextMeshProUGUI[] texts; // 0 펫 이름, 1 등급, 2 가챠 레벨, 3 가챠 진행상황, 4 펫 레벨 public Slider slider_gacha; public MoneyForm[] gacha_moneyForms; // 0 광고(시간), 1 1회 뽑기, 2 10회 뽑기 public zSizeControler zSizeControler; PetListTableData m_Data; private void Update() { Set_GambleADTimeText(); } public void Set(PetListTableData data) { //var sdata = ServerInfo.Ins.m_ServerData; m_Data = data; Set_PurStat(); Set_3DModel(false, m_Data.s_PetPrefab, tf => { tf.localScale = Vector3.one * m_Data.f_UIScale; tf.localPosition = Vector3.up * m_Data.f_UIOffSet_y; zSizeControler.Set(tf); }); texts[0].text = m_Data.Get_Name(); texts[1].text = MyText.Get_GradeName(m_Data.n_PetGrade); //var lv = sdata.Get_PetLv(m_Data.n_PetID); images[0].sprite = UIAtlasMgr.Ins.Get_Sprite(m_Data.n_PetActiveSkill); images[1].sprite = UIAtlasMgr.Ins.Get_Sprite(m_Data.n_PetPassiveSkill); Set_GambleUI(); } void Set_GambleUI() { Set_GambleADTimeText(); var sdata = ServerInfo.Ins.m_ServerData; texts[2].text = DSUtil.Format("Lv.{0}", sdata.PetData.GachaLv); texts[3].text = DSUtil.Format("{0}/{1}", sdata.PetData.GachaExp, "???"); slider_gacha.value = sdata.PetData.GachaExp / 1; gacha_moneyForms[1].amount.text = DSUtil.GetThousandCommaText(1 * table_GlobalValue.Ins.Get_Int("n_CostPerPetGacha")); gacha_moneyForms[2].amount.text = DSUtil.GetThousandCommaText(10 * table_GlobalValue.Ins.Get_Int("n_CostPerPetGacha")); } void Set_GambleADTimeText() { var sdata = ServerInfo.Ins.m_ServerData; var ts = sdata.Get_PetGachaADTime(); gacha_moneyForms[0].amount.text = ts.TotalSeconds <= 0 ? "00:00" : DSUtil.Get_TimeText_MS(ts); } void Set_PurStat() { var sdata = ServerInfo.Ins.m_ServerData; var lv = sdata.Get_PetLv(m_Data.n_PetID); texts[4].text = $"Lv.{lv}"; //arr_statcard[0].Set(true, eStat.None, lv); arr_statcard[0].Set(false, eStat.ATK, (int)m_Data.Get_PureStat(eStat.ATK, lv)); arr_statcard[1].Set(false, eStat.HP, (int)m_Data.Get_PureStat(eStat.HP, lv)); var def = m_Data.Get_PureStat(eStat.DEF, lv); if (def > 0) arr_statcard[2].Set(false, eStat.DEF, (int)m_Data.Get_PureStat(eStat.DEF, lv)); else arr_statcard[2].Set(false, eStat.M_DEF, (int)m_Data.Get_PureStat(eStat.M_DEF, lv)); } public void OnClick_PetDetail() { NewGameUI.Ins.m_PetUI.m_PetSkillDetailUI.OnClick_Back(); m_PetInfoDetailUI.Set(m_Data); } public void OnClick_Skill(int type) { m_PetInfoDetailUI.OnClick_Back(); var sdata = ServerInfo.Ins.m_ServerData; var lv = sdata.Get_PetLv(m_Data.n_PetID); if (type == 0) // 액티브 NewGameUI.Ins.m_PetUI.m_PetSkillDetailUI.Set(m_Data.n_PetActiveSkill, m_Data.n_PetID, lv); else NewGameUI.Ins.m_PetUI.m_PetSkillDetailUI.Set(m_Data.n_PetPassiveSkill, m_Data.n_PetID, lv); } ObscuredInt m_Amount, m_Price; public void OnClick_Gamble(int index) { var sdata = ServerInfo.Ins.m_ServerData; m_Amount = 1; m_Price = 0; switch (index) { case 0: // 광고 뽑기 var ts = sdata.Get_PetGachaADTime(); if (ts.TotalSeconds > 0) return; break; case 1: // 뽑기1 m_Price = m_Amount * table_GlobalValue.Ins.Get_Int("n_CostPerPetGacha"); break; case 2: // 뽑기2 m_Amount = 10; m_Price = m_Amount * table_GlobalValue.Ins.Get_Int("n_CostPerPetGacha"); break; } m_Amount.RandomizeCryptoKey(); m_Price.RandomizeCryptoKey(); if (index == 0) ADInfo.Ins.Show_AD(() => { sdata.PetData.PetGachaADTime = ServerInfo.ServerTime.AddMinutes(table_GlobalValue.Ins.Get_Int("n_AddPetGachaADMinute")); Send_Gamble(); }); else if (sdata.Check_ItemAmount(1, m_Price)) Send_Gamble(); } void Send_Gamble() { ServerInfo.Ins.Save_Pet_Gacha(m_Price == 0, m_Amount, result => { var sdata = ServerInfo.Ins.m_ServerData; sdata.Use_Item(1, result.gem); var itemlst = new List(); for (int i = 0; i < result.pets.Count; i++) { var temp = new ItemSimpleData(); temp.itemid = result.pets[i]; temp.amount = 1; itemlst.Add(temp); sdata.Add_Item(temp.itemid, 1); } sdata.Add_MissionCount(ePurpose.GACHA_PET, 0, m_Amount); sdata.Add_MissionCount(ePurpose.GACHA_PET_ACC, 0, m_Amount); sdata.Add_MissionCount(ePurpose.GACHA_ALL, 0, m_Amount); ObtainItemUI.Ins.Set(itemlst); NewGameUI.Ins.m_PetUI.m_PetUI_Right.Set_Scroll(); Set_GambleUI(); }); } }