Project_WL/Assets/Script/UI/Common/MixPopup.cs

134 lines
4.6 KiB
C#

using CodeStage.AntiCheat.ObscuredTypes;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MixPopup : MenuBase
{
public ArrowUI m_ArrowUI;
public UISprite[] sprites; // 0 왼쪽 등급, 1 왼쪽 아이콘, 2 오른쪽 등급, 3 오른쪽 아이콘
public UILabel[] labels; // 0 왼쪽, 1 오른쪽
UIItemCard m_UIItemCard;
ItemData m_ItemData;
ObscuredInt m_MixNeedAmount;
public void Set(UIItemCard mixItemData, int mixneedamount = -1) // - 1 이면 기존값 사용
{
if (mixItemData.Get_ItemData().Grade >= eItemGrade.Myth)
{
//ToastUI.Ins.Set("합성할 수 없는 등급입니다.");
return;
}
Set_On();
m_UIItemCard = mixItemData;
m_ItemData = m_UIItemCard.Get_ItemData();
if (mixneedamount > 0)
{
m_MixNeedAmount = mixneedamount;
m_MixNeedAmount.RandomizeCryptoKey();
}
sprites[0].spriteName = DSUtil.Get_GradeSpriteName(m_ItemData.Grade);
sprites[1].spriteName = m_ItemData.IconInfo.Icon;
sprites[2].spriteName = DSUtil.Get_GradeSpriteName(m_ItemData.Grade + 1);
sprites[3].spriteName = DSUtil.Get_ItemSpriteInfo(eItem.IdontKnow).Icon;
Refresh_UI();
}
void Refresh_UI()
{
m_ArrowUI.Set(count =>
{
labels[0].text = DSUtil.Format("{0:N0}([ff0000]-{1}[-])", m_ItemData.Amount, m_MixNeedAmount * count);
labels[1].text = DSUtil.Format("[00ff00]+{0}", count);
}, (int)(m_ItemData.Amount / m_MixNeedAmount));
}
public void OnClick_Mix()
{
var count = m_ArrowUI.Get_TotalCount();
if (count > 0)
{
var sdata = ServerInfo.Ins.m_ServerData;
List<ItemData> itemlst = new List<ItemData>();
if (m_ItemData != null)
{
ObscuredInt needMixAmount = MyValue.arr_NeedMixCount[(int)m_ItemData.Grade];
needMixAmount.RandomizeCryptoKey();
for (int i = 0; i < count; i++)
{
if (m_ItemData.Lv > 0 && sdata.Check_ItemAmount(m_ItemData.ItemType, needMixAmount, m_ItemData.Get_ID()))
{
int id = MyValue.Get_NextGradeID(m_ItemData.Grade);
if (id > 0)
{
sdata.Use_Item(m_ItemData.ItemType, needMixAmount, m_ItemData.Get_ID());
m_ItemData.Amount -= needMixAmount;
itemlst.AddRange(sdata.Add_Item(new ItemData(m_ItemData.ItemType, id, 1, "", eUICardType.GetItem)));
if (Get_RepeatMissionID_Mix() > 0) sdata.Add_MissionCount(MyValue.arr_Mission[1], Get_RepeatMissionID_Mix());
}
}
}
switch (m_ItemData.ItemType)
{
case eItem.Ring: NewGameUI.Ins.m_GuideQuestUI.Add_GuideQuest(ePurpose.MixRing); break;
}
GetItemUI.Ins.Set(itemlst);
ServerInfo.Ins.Write(() =>
{
if (m_ItemData.ItemType == eItem.Pet)
{
}
else
{
Content_Equipment.Ins.Refresh_RightCards();
Content_Equipment.Ins.m_EquipmentInfoPopup.Set_UI();
}
GetItemUI.Ins.Show_Items();
Refresh_UI();
});
}
}
}
public void MixAll()
{
m_ArrowUI.OnClick_RightMax();
OnClick_Mix();
Set_Off();
}
int Get_RepeatMissionID_Mix()
{
if (m_ItemData.ItemType == eItem.Pet) return 21;
else if (m_ItemData.ItemType == eItem.Skill) return 22;
return m_ItemData.ItemType - eItem.Weapon + 16;
}
public void OnClick_Select_Previous()
{
if (m_ItemData.ItemType == eItem.Pet)
{ }
else
ArrowSet(Content_Equipment.Ins.m_Equipment_Right.Get_PreNextCard_orNull(true, true, m_ItemData.Get_ID()));
}
public void OnClick_Select_Next()
{
if (m_ItemData.ItemType == eItem.Pet)
{ }
else
ArrowSet(Content_Equipment.Ins.m_Equipment_Right.Get_PreNextCard_orNull(true, false, m_ItemData.Get_ID()));
}
void ArrowSet(UIItemCard _card)
{
if (_card != null)
{
if (m_ItemData.ItemType != eItem.Pet)
Content_Equipment.Ins.m_EquipmentInfoPopup.Set(_card);
Set(_card);
}
}
}