Project_WL/Assets/Script/UI/Pet/PetUI_Left.cs

152 lines
5.2 KiB
C#

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 SkillCard[] skillCards; // 0 액티브 스킬, 1 패시브 스킬
public Image[] images; // 0 등급
public TextMeshProUGUI[] texts; // 0 펫 이름, 1 등급, 2 가챠 레벨, 3 가챠 진행상황
public Slider slider_gacha;
public MoneyForm[] gacha_moneyForms; // 0 광고(시간), 1 1회 뽑기, 2 10회 뽑기
public zSizeControler zSizeControler;
PetListTableData m_Data;
private void Start()
{
for (int i = 0; i < skillCards.Length; i++)
skillCards[i].Set_CardType(eUICardType.UIPetSkill);
}
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);
});
//images[0].sprite = UIAtlasMgr.Ins.Get_GradeSprite(m_Data.n_PetGrade);
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);
skillCards[0].Set_PetSkill(m_Data.n_PetActiveSkill, data.n_PetID, lv);
skillCards[1].Set_PetSkill(m_Data.n_PetPassiveSkill, data.n_PetID, lv);
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);
arr_statcard[0].Set(true, eStat.None, lv);
arr_statcard[1].Set(false, eStat.ATK, (int)m_Data.Get_PureStat(eStat.ATK, lv));
arr_statcard[2].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[3].Set(false, eStat.DEF, (int)m_Data.Get_PureStat(eStat.DEF, lv));
else
arr_statcard[3].Set(false, eStat.M_DEF, (int)m_Data.Get_PureStat(eStat.M_DEF, lv));
}
public void OnClick_PetDetail()
{
m_PetInfoDetailUI.Set(m_Data);
}
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<ItemSimpleData>();
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();
});
}
}