using System.Collections.Generic; using UnityEngine; public class CollectionRelicUI : PCUIMenu { public static CollectionRelicUI Ins; private void Start() { Ins = this; } public CollectionRelicUI_Scroll m_CollectionRelicUI_Scroll; public CollectionRelicUI_Info m_CollectionRelicUI_Info; public NeedItemCard[] money_star, money_lv; public GameObject[] gos_noti; // 0 성급 돌파, 1 유물 강화 Dictionary dic_starCost = new Dictionary { { 1, 30 }, { 2, 60 }, { 3, 100 }, { 4, 200 }, { 5, 500 }, }; int Get_Star_UpgradeCost(int star, RelicListTableData data) { if (dic_starCost.ContainsKey(star)) return dic_starCost[star]; if (star == 0) // 최초 개방 시 return data.n_FirstOpenCost; return 0; } Dictionary> dic_starMat = new Dictionary> { { 0, new Dictionary { { 6, 50 }, { 7, 60 }, { 8, 80 }, { 9, 100 } } }, { 1, new Dictionary { { 6, 150 }, { 7, 180 }, { 8, 240 }, { 9, 300 } } }, { 2, new Dictionary { { 6, 300 }, { 7, 360 }, { 8, 480 }, { 9, 600 } } }, { 3, new Dictionary { { 6, 500 }, { 7, 600 }, { 8, 800 }, { 9, 1000 } } }, { 4, new Dictionary { { 6, 1000 }, { 7, 1200 }, { 8, 1600 }, { 9, 2000 } } }, { 5, new Dictionary { { 6, 2500 }, { 7, 3000 }, { 8, 4000 }, { 9, 5000 } } }, }; int Get_Star_UpgradeMatCost(int star, int grade) { if (dic_starMat.ContainsKey(star)) return dic_starMat[star][grade]; return 0; } RelicListTableData m_SelectRelicData; public override void Set() { base.Set(); NewGameUI.Ins.m_CollectionUI.Set_Money(table_GlobalValue.Ins.Get_Int("n_RelicReinforceMaterialID")); m_CollectionRelicUI_Scroll.Set(); if (DSUtil.CheckNull(m_SelectRelicData)) Set(m_CollectionRelicUI_Scroll.Get_FirstRelic()); else Set(m_SelectRelicData); } public void Set(RelicListTableData data) { m_SelectRelicData = data; m_CollectionRelicUI_Info.Set(m_SelectRelicData); var itemData = table_itemlist.Ins.Get_Data(m_SelectRelicData.n_RelicID); var sdata = ServerInfo.Ins.m_ServerData; var grade = DSUtil.CheckNull(itemData) ? 6 : itemData.n_ItemGrade; var star = sdata.Get_RelicStar(m_SelectRelicData.n_RelicID); var lvup_matID = table_GlobalValue.Ins.Get_Int("n_RelicReinforceMaterialID"); money_star[0].Set(m_SelectRelicData.n_RelicID, (int)sdata.Get_ItemAmount(m_SelectRelicData.n_RelicID), Get_Star_UpgradeCost(star, m_SelectRelicData)); money_star[1].Set(lvup_matID, (int)sdata.Get_ItemAmount(lvup_matID), Get_Star_UpgradeMatCost(star, grade)); gos_noti[0].SetActive(star < 5 && sdata.Get_ItemAmount(m_SelectRelicData.n_RelicID) >= Get_Star_UpgradeCost(star, m_SelectRelicData) && sdata.Get_ItemAmount(lvup_matID) >= Get_Star_UpgradeMatCost(star, grade)); var maxlv = table_relicupgradecost.Ins.Get_MaxLv(); var lv = ServerInfo.Ins.m_ServerData.Get_RelicLv(m_SelectRelicData.n_RelicID); var upgradeData = table_relicupgradecost.Ins.Get_Data(lv); money_lv[0].Set(m_SelectRelicData.n_RelicID, (int)sdata.Get_ItemAmount(m_SelectRelicData.n_RelicID), upgradeData.n_RequirePiece); money_lv[1].Set(lvup_matID, (int)sdata.Get_ItemAmount(lvup_matID), Get_Star_UpgradeMatCost(star, grade)); gos_noti[1].SetActive(star > 0 && lv < maxlv && sdata.Get_ItemAmount(m_SelectRelicData.n_RelicID) >= upgradeData.n_RequirePiece && sdata.Get_ItemAmount(lvup_matID) >= Get_Star_UpgradeMatCost(star, grade)); } bool CanUp() { var sdata = ServerInfo.Ins.m_ServerData; var star = sdata.Get_RelicStar(m_SelectRelicData.n_RelicID); return star > 0; } public void OnClick_StarUp() { var sdata = ServerInfo.Ins.m_ServerData; var grade = table_itemlist.Ins.Get_Data(m_SelectRelicData.n_RelicID).n_ItemGrade; var star = sdata.Get_RelicStar(m_SelectRelicData.n_RelicID); var lvup_matID = table_GlobalValue.Ins.Get_Int("n_RelicReinforceMaterialID"); var requirepiece = Get_Star_UpgradeCost(star, m_SelectRelicData); var requirelvupmat = Get_Star_UpgradeMatCost(star, grade); if (sdata.Check_ItemAmount(m_SelectRelicData.n_RelicID, requirepiece) && sdata.Check_ItemAmount(lvup_matID, requirelvupmat)) { sdata.Use_Item(m_SelectRelicData.n_RelicID, requirepiece); sdata.Use_Item(lvup_matID, requirelvupmat); sdata.Add_RelicStar(m_SelectRelicData.n_RelicID); Set(); MyValue.Get_ActorStatInfoorNull(eRole.PC); sdata.Add_MissionCount(ePurpose.RELIC_TAKE, m_SelectRelicData.n_RelicID); sdata.Add_MissionCount(ePurpose.RELIC_TAKE_ALL); } } public void OnClick_LvUp() { var sdata = ServerInfo.Ins.m_ServerData; var maxlv = table_relicupgradecost.Ins.Get_MaxLv(); var lv = sdata.Get_RelicLv(m_SelectRelicData.n_RelicID); if (CanUp() && maxlv > lv) { var grade = table_itemlist.Ins.Get_Data(m_SelectRelicData.n_RelicID).n_ItemGrade; var star = sdata.Get_RelicStar(m_SelectRelicData.n_RelicID); var lvup_matID = table_GlobalValue.Ins.Get_Int("n_RelicReinforceMaterialID"); var upgradeData = table_relicupgradecost.Ins.Get_Data(lv); var requirepiece = upgradeData.n_RequirePiece; var requirelvupmat = Get_Star_UpgradeMatCost(star, grade); if (sdata.Check_ItemAmount(m_SelectRelicData.n_RelicID, requirepiece) && sdata.Check_ItemAmount(lvup_matID, requirelvupmat)) { sdata.Use_Item(m_SelectRelicData.n_RelicID, requirepiece); sdata.Use_Item(lvup_matID, requirelvupmat); sdata.Add_RelicLv(m_SelectRelicData.n_RelicID); Set(); MyValue.Get_ActorStatInfoorNull(eRole.PC); sdata.Add_MissionCount(ePurpose.RELIC_UPGRADE, m_SelectRelicData.n_RelicID); sdata.Add_MissionCount(ePurpose.RELIC_UPGRADE_ALL); sdata.Add_MissionCount(ePurpose.RELIC_UPGRADE_LIMIT_ALL); } } } }