Project_WL/Assets/Script/UI/Center/EquipmentInfoUI.cs

319 lines
15 KiB
C#

using CodeStage.AntiCheat.ObscuredTypes;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EquipmentInfoUI : MonoBehaviour
{
public UIItemCard m_card;
public UILabel[] labels; // 0 이름, 1 필요 강화석, 2 필요 합성 카드, 3 필요 초월 카드, 4 마법 설명
public UILabel[] labels_reinforce; // 0 전 lv, 1 후 lv, 2 스탯 이름1, 3 전 스탯1, 4 후 스탯1, 5 스탯 이름2, 6 전 스탯2, 7 후 스탯2
public UILabel[] labels_transcend; // 0 전 lv, 1 후 lv, 2 스탯 이름, 3 전 스탯, 4 후 스탯
public UISprite[] sprites; // 0 강화석, 1 2 아이템, 3 초기화 버튼, 4 5 개화 아이콘
public GameObject[] gos; // 0 강화 스탯2, 1 초월, 2 합성, 3 불가능(강화), 4 불가능(합성), 5 불가능(초월), 6 초월 이펙트, 7 강화석 이펙트, 8 강화 두번째 화살표, 9 초기화 버튼, 10 장착 화살표, 11 합성 화살표, 12 강화 화살표
public NGUIButtonPress m_NGUIButtonPress;
public MagicBlossomUI m_MagicBlossomUI;
public UILabel[] labels_blossom; // 0 개화1, 1 개화1 필요 갯수, 2 개화2, 3 개화2 필요 갯수
public GameObject[] gos_blossom; // 0 개화1 불가능, 1 개화2 불가능, 2 개화1 완료, 3 개화2 완료
public GameObject[] gos_equip; // 0 착용, 1 착용 중, 2 해제
UIItemCard m_UIItemCard;
ItemData m_ItemData;
SkillListTableData m_MagicData;
ObscuredInt m_Unit;
ObscuredDouble m_NeedStone;
bool RefreshRight_WhenClose;
private void Awake()
{
m_NGUIButtonPress.Set_Action(OnClick_Reinforce);
m_card.Set_CardType(eUICardType.DetailInfo);
m_MagicBlossomUI.Check();
}
public void Set(UIItemCard _ic, int _unit)
{
m_UIItemCard = _ic;
m_ItemData = _ic.Get_ItemData();
m_MagicData = _ic.Get_SkillTableData();
m_Unit = _unit;
RefreshRight_WhenClose = false;
Set_UI();
Check_GuideQuest();
}
void Set_UI()
{
m_card.Set(m_ItemData);
var sdata = ServerInfo.Ins.m_ServerData;
var isequip = sdata.IsEquipItem(m_ItemData.Get_ID());
gos_equip[0].SetActive(m_ItemData.Lv > 0 && !isequip); // 착용 버튼
gos_equip[1].SetActive(m_ItemData.Lv > 0 && isequip); // 착용 중
gos_equip[2].SetActive(m_ItemData.Lv > 0 && isequip && m_ItemData.ItemType == eItem.Skill); // 해제 버튼
gos[2].SetActive(m_ItemData.Grade < eItemGrade.Myth);
gos[4].SetActive(m_ItemData.Lv < 1 || !sdata.Check_ItemAmount(m_ItemData.ItemType, MyValue.arr_NeedMixCount[(int)m_ItemData.Grade], m_ItemData.Get_ID(), false));
gos[6].SetActive(false);
gos[7].SetActive(false);
labels[0].text = DSUtil.Format("{0}{1}", MyValue.Get_GradeColor((int)m_ItemData.Grade), m_ItemData.Name);
labels[2].text = MyValue.arr_NeedMixCount[(int)m_ItemData.Grade].ToString();
labels_reinforce[0].text = m_ItemData.Lv.ToString();
labels_reinforce[1].text = (m_ItemData.Lv + m_Unit).ToString();
if (m_ItemData.ItemType == eItem.Skill)
{
for (int i = 0; i < sprites.Length; i++)
sprites[i].spriteName = m_ItemData.IconInfo.Icon;
//m_NeedStone = m_MagicData.n_LvUpAmount * m_Unit;
labels[1].text = m_NeedStone.ToString();
gos[3].SetActive(m_ItemData.Lv < 1 || !sdata.Check_ItemAmount(m_ItemData.ItemType, m_NeedStone, m_ItemData.Get_ID(), false));
gos[9].SetActive(false);
labels[4].text = m_MagicData.Get_SkillDesc();
// 강화
var pcstat = MyValue.Get_ActorStatInfoorNull(eRole.PC);
labels_reinforce[2].text = "마법 효과";
//labels_reinforce[3].text = DSUtil.Format("{0:#,##0.##}%", m_MagicData.SkillDamage * 100f);
//labels_reinforce[4].text = DSUtil.Format("{0:#,##0.##}%", m_MagicData.Get_SkillDamage(m_ItemData.Lv + m_Unit - 1) * 100f);
labels_reinforce[5].text = "재사용 대기시간";
labels_reinforce[6].text = DSUtil.Format("{0}(강화불가)", MyText.Get_StatValueText(eStat.COOLTIME_Multiplier, m_MagicData.Get_CoolTime(pcstat.Get_Stat(eStat.COOLTIME_Multiplier))));
labels_reinforce[7].text = "";
gos[8].SetActive(false);
// 개화
//labels_blossom[0].text = m_MagicData.Get_SkillEnhanceDesc(1);
//labels_blossom[1].text = m_MagicData.Step1Amount.ToString();
//labels_blossom[2].text = m_MagicData.Get_SkillEnhanceDesc(2);
//labels_blossom[3].text = m_MagicData.Step2Amount.ToString();
if (m_ItemData.Lv > 0)
{
gos_blossom[2].SetActive(false);
//if (sdata.Get_SkillStep(m_MagicData.n_SkillID, 1))
//{
// gos_blossom[0].SetActive(false);
// gos_blossom[2].SetActive(true);
//}
//else
//gos_blossom[0].SetActive(!sdata.Check_ItemAmount(eItem.Magic, m_MagicData.Step1Amount, m_MagicData.n_SkillID, false));
gos_blossom[3].SetActive(false);
//if (sdata.Get_SkillStep(m_MagicData.n_SkillID, 2))
//{
// gos_blossom[1].SetActive(false);
// gos_blossom[3].SetActive(true);
//}
//else
//gos_blossom[1].SetActive(!sdata.Check_ItemAmount(eItem.Magic, m_MagicData.Step2Amount, m_MagicData.n_SkillID, false));
}
else
{
gos_blossom[0].SetActive(true);
gos_blossom[1].SetActive(true);
gos_blossom[2].SetActive(false);
gos_blossom[3].SetActive(false);
}
}
else
{
m_NeedStone = 0d;
for (int i = 0; i < m_Unit; i++)
m_NeedStone += m_ItemData.Get_NeedStoneAmount(i);
labels[1].text = NumberFormatter.FormatNumber(m_NeedStone);
gos[3].SetActive(m_ItemData.Lv < 1 || !sdata.Check_ItemAmount(DSUtil.Get_StoneType(m_ItemData.ItemType), m_NeedStone, 0, false));
labels[3].text = MyValue.arr_NeedTranscendCount[(int)m_ItemData.Grade].ToString();
labels[4].text = "";
gos[5].SetActive(m_ItemData.Lv < 1 || !sdata.Check_ItemAmount(m_ItemData.ItemType, MyValue.arr_NeedTranscendCount[(int)m_ItemData.Grade], m_ItemData.Get_ID(), false));
gos[7].transform.localPosition = sprites[0].transform.localPosition;
gos[8].SetActive(true);
gos[9].SetActive(true);
var statinfo = m_ItemData.Get_StatInfo();
labels_reinforce[2].text = MyText.Get_StatName(statinfo[0].Stat);
labels_reinforce[3].text = MyText.Get_StatValueText(statinfo[0].Stat, statinfo[0].Get_StatValue(m_ItemData.Lv));
labels_reinforce[4].text = MyText.Get_StatValueText(statinfo[0].Stat, statinfo[0].Get_StatValue(m_ItemData.Lv + m_Unit));
if (statinfo[1].Stat < eStat.None)
{
labels_reinforce[5].text = MyText.Get_StatName(statinfo[1].Stat);
labels_reinforce[6].text = MyText.Get_StatValueText(statinfo[1].Stat, statinfo[1].Get_StatValue(m_ItemData.Lv));
labels_reinforce[7].text = MyText.Get_StatValueText(statinfo[1].Stat, statinfo[1].Get_StatValue(m_ItemData.Lv + m_Unit));
gos[0].SetActive(true);
}
else
gos[0].SetActive(false);
labels_transcend[0].text = m_ItemData.TLv.ToString();
labels_transcend[1].text = (m_ItemData.TLv + 1).ToString();
labels_transcend[2].text = MyText.Get_EquipmentSpecial(m_ItemData.ItemType, m_ItemData.Get_ID());
if (m_ItemData.ItemType == eItem.Weapon)
{
gos[1].SetActive(true);
labels_transcend[3].text = DSUtil.Format("{0:0.##}%", statinfo[2].Get_StatValue(m_ItemData.TLv) * 100f);
labels_transcend[4].text = DSUtil.Format("{0:0.##}%", statinfo[2].Get_StatValue(m_ItemData.TLv + 1) * 100f);
}
else
{
if (statinfo[2].Stat < eStat.None)
{
gos[1].SetActive(true);
labels_transcend[3].text = MyText.Get_StatValueText(statinfo[2].Stat, statinfo[2].Get_StatValue(m_ItemData.TLv));
labels_transcend[4].text = MyText.Get_StatValueText(statinfo[2].Stat, statinfo[2].Get_StatValue(m_ItemData.TLv + 1));
}
else
gos[1].SetActive(false);
}
sprites[0].spriteName = DSUtil.Get_ItemSpriteInfo(DSUtil.Get_StoneType(m_ItemData.ItemType)).Icon;
sprites[1].spriteName = sprites[2].spriteName = m_ItemData.IconInfo.Icon;
}
m_NeedStone.RandomizeCryptoKey();
}
void Check_GuideQuest()
{
if (gos[10].activeInHierarchy) gos[10].SetActive(false);
if (gos[11].activeInHierarchy) gos[11].SetActive(false);
if (gos[12].activeInHierarchy) gos[12].SetActive(false);
switch (NewGameUI.Ins.m_GuideQuestUI.Get_Purpose())
{
case ePurpose.EqiupWeapon: Set_GuideArrow(10, eItem.Weapon, true); break;
case ePurpose.EqiupFairy: Set_GuideArrow(10, eItem.Fairy, true); break;
case ePurpose.EquipMagic: Set_GuideArrow(10, eItem.Skill, true); break;
case ePurpose.MixRing: Set_GuideArrow(11, eItem.Ring, false); break;
case ePurpose.EnchantMagic: Set_GuideArrow(12, eItem.Skill, false); break;
}
}
void Set_GuideArrow(int index, eItem item, bool isequip)
{
if (m_ItemData.Lv > 0 && m_ItemData.ItemType == item && ServerInfo.Ins.m_ServerData.Get_Common(eCommon.GuideClear) == 0)
{
gos[index].SetActive(true);
if (isequip) DSUtil.InActivateGameObjects(gos_equip, 0);
}
}
public void OnClick_Equip()
{
if (gos[10].activeInHierarchy) gos[10].SetActive(false);
switch (m_ItemData.ItemType)
{
case eItem.Weapon: NewGameUI.Ins.m_GuideQuestUI.Add_GuideQuest(ePurpose.EqiupWeapon); break;
case eItem.Fairy: NewGameUI.Ins.m_GuideQuestUI.Add_GuideQuest(ePurpose.EqiupFairy); break;
case eItem.Skill: NewGameUI.Ins.m_GuideQuestUI.Add_GuideQuest(ePurpose.EquipMagic); break;
}
//ServerInfo.Ins.m_ServerData.Equip.Set_Equip(Content_Equipment.Ins.m_Equipment_Left.m_DeckTabUI.Get_Tab(), m_ItemData.ItemType, m_ItemData.ItemType - eItem.PC, m_ItemData.Get_ID(), 0);
Set_UI();
Content_Equipment.Ins.m_Equipment_Left.Set_UI(true, true);
}
public void OnClick_UnEquip()
{
//ServerInfo.Ins.m_ServerData.Equip.Set_Equip(Content_Equipment.Ins.m_Equipment_Left.m_DeckTabUI.Get_Tab(), m_ItemData.ItemType, m_ItemData.ItemType - eItem.PC, 0, m_ItemData.Get_ID());
Set_UI();
Content_Equipment.Ins.m_Equipment_Left.Set_UI(true, false);
}
public void OnClick_Reinforce()
{
var sdata = ServerInfo.Ins.m_ServerData;
if (m_ItemData.ItemType == eItem.Skill)
{
if (sdata.Check_ItemAmount(eItem.Skill, m_NeedStone, m_MagicData.n_SkillID))
{
sdata.Use_Item(eItem.Skill, m_NeedStone, m_MagicData.n_SkillID);
sdata.Add_SkillLv(m_MagicData.n_SkillID, m_Unit);
m_ItemData.Lv += m_Unit;
Set_UI();
gos[7].SetActive(true);
sdata.Add_MissionCount(MyValue.arr_Mission[1], 30);
NewGameUI.Ins.m_GuideQuestUI.Add_GuideQuest(ePurpose.EnchantMagic);
SoundInfo.Ins.Play_OneShot(eSound.s018_StoneLvUp);
RefreshRight_WhenClose = true;
gos[12].SetActive(false);
}
}
else
{
var stonetype = DSUtil.Get_StoneType(m_ItemData.ItemType);
if (sdata.Get_SmeltingLv(m_ItemData.Get_ID()) > 0 && sdata.Check_ItemAmount(stonetype, m_NeedStone))
{
sdata.Use_Item(stonetype, m_NeedStone);
//sdata.Add_SmeltingLv(m_ItemData.ItemType, m_ItemData.Get_ID(), m_Unit);
m_ItemData.Lv += m_Unit;
Set_UI();
gos[7].SetActive(true);
gos[7].transform.localPosition = Vector3.zero;
SoundInfo.Ins.Play_OneShot(eSound.s018_StoneLvUp);
RefreshRight_WhenClose = true;
}
}
}
public void OnClick_MixAll()
{ // 모두합성 (일괄합성 아님)
OnClick_Mix();
// 오른쪽 맥스 누르고 실행
GameUI.Ins.LobbyUI.Get_MixPopup().MixAll();
}
public void OnClick_Mix()
{
GameUI.Ins.LobbyUI.Get_MixPopup().Set(m_UIItemCard, MyValue.arr_NeedMixCount[(int)m_ItemData.Grade]);
}
public void OnClick_Transcend()
{
var sdata = ServerInfo.Ins.m_ServerData;
if (sdata.Get_SmeltingLv(m_ItemData.Get_ID()) > 0 && sdata.Check_ItemAmount(m_ItemData.ItemType, MyValue.arr_NeedTranscendCount[(int)m_ItemData.Grade], m_ItemData.Get_ID()))
{
sdata.Add_MissionCount(MyValue.arr_Mission[1], Get_RepeatMissionID_Transcend());
sdata.Use_Item(m_ItemData.ItemType, MyValue.arr_NeedTranscendCount[(int)m_ItemData.Grade], m_ItemData.Get_ID());
sdata.Add_EquipmentTLv(m_ItemData.ItemType, m_ItemData.Get_ID());
++m_ItemData.TLv;
Set_UI();
gos[6].SetActive(true);
gos[6].transform.localPosition = Vector3.zero;
SoundInfo.Ins.Play_OneShot(eSound.s017_Transcend);
RefreshRight_WhenClose = true;
}
}
int Get_RepeatMissionID_Transcend() { return m_ItemData.ItemType - eItem.Weapon + 23; }
public void OnClick_ResetReinforce()
{
Content_Equipment.Ins.m_EquipmentReinforceInitPopup.Set(m_ItemData, ()=>
{
Set_UI();
RefreshRight_WhenClose = true;
});
}
public void OnClick_Step1()
{
var sdata = ServerInfo.Ins.m_ServerData;
int step = 1;
//if (sdata.Check_ItemAmount(eItem.Magic, m_MagicData.Step1Amount, m_MagicData.n_SkillID) && !sdata.Get_SkillStep(m_MagicData.n_SkillID, step))
{
//sdata.Use_Item(eItem.Magic, m_MagicData.Step1Amount, m_MagicData.n_SkillID);
sdata.Add_SkillAwakenLv(m_MagicData.n_SkillID);
m_MagicBlossomUI.Set(step, m_MagicData, () => { Set_UI(); RefreshRight_WhenClose = true; });
}
}
public void OnClick_Step2()
{
var sdata = ServerInfo.Ins.m_ServerData;
int step = 2;
//if (sdata.Check_ItemAmount(eItem.Magic, m_MagicData.Step2Amount, m_MagicData.n_SkillID) && !sdata.Get_SkillStep(m_MagicData.n_SkillID, step))
{
//sdata.Use_Item(eItem.Magic, m_MagicData.Step2Amount, m_MagicData.n_SkillID);
sdata.Add_SkillAwakenLv(m_MagicData.n_SkillID);
m_MagicBlossomUI.Set(step, m_MagicData, () => { Set_UI(); RefreshRight_WhenClose = true; });
}
}
private void OnDisable()
{
if (RefreshRight_WhenClose)
{
RefreshRight_WhenClose = false;
Content_Equipment.Ins.m_Equipment_Left.Set_UI(true, false);
}
}
}