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 } } }, { 6, new Dictionary { { 6, 3000 }, { 7, 5000 }, { 8, 8000 }, { 9, 13000 } } }, }; int Get_Star_UpgradeMatCost(int star, int grade) { if (dic_starMat.ContainsKey(star)) return dic_starMat[star][grade]; return 0; } RelicCard m_SelectRelic; 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_SelectRelic)) Set(m_CollectionRelicUI_Scroll.Get_FirstRelic()); else Set(m_SelectRelic); } public void Set(RelicCard card) { if (!DSUtil.CheckNull(m_SelectRelic)) m_SelectRelic.Set_Selected(false); m_SelectRelic = card; m_SelectRelic.Set_Selected(true); var relicdata = m_SelectRelic.Get_Data() as RelicListTableData; m_CollectionRelicUI_Info.Set(relicdata); var itemData = table_itemlist.Ins.Get_Data(relicdata.n_RelicID); var sdata = ServerInfo.Ins.m_ServerData; var grade = DSUtil.CheckNull(itemData) ? 6 : itemData.n_ItemGrade; var star = sdata.Get_RelicStar(relicdata.n_RelicID); var lvup_matID = table_GlobalValue.Ins.Get_Int("n_RelicReinforceMaterialID"); money_star[0].Set(relicdata.n_RelicID, (int)sdata.Get_ItemAmount(relicdata.n_RelicID), Get_Star_UpgradeCost(star, relicdata)); 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(relicdata.n_RelicID) >= Get_Star_UpgradeCost(star, relicdata) && 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(relicdata.n_RelicID); if (maxlv > lv) { var upgradeData = table_relicupgradecost.Ins.Get_Data(lv); money_lv[0].Set(relicdata.n_RelicID, (int)sdata.Get_ItemAmount(relicdata.n_RelicID), upgradeData.Get_Price(grade)); 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(relicdata.n_RelicID) >= upgradeData.Get_Price(grade) && sdata.Get_ItemAmount(lvup_matID) >= Get_Star_UpgradeMatCost(star, grade)); } else { money_lv[0].Set(relicdata.n_RelicID, (int)sdata.Get_ItemAmount(relicdata.n_RelicID), 0); money_lv[1].Set(lvup_matID, (int)sdata.Get_ItemAmount(lvup_matID), 0); gos_noti[1].SetActive(false); } } bool CanUp() { var sdata = ServerInfo.Ins.m_ServerData; var star = sdata.Get_RelicStar(m_SelectRelic.Get_IntData()); return star > 0; } public void OnClick_StarUp() { var sdata = ServerInfo.Ins.m_ServerData; var relicdata = m_SelectRelic.Get_Data() as RelicListTableData; var grade = table_itemlist.Ins.Get_Data(relicdata.n_RelicID).n_ItemGrade; var star = sdata.Get_RelicStar(relicdata.n_RelicID); var lvup_matID = table_GlobalValue.Ins.Get_Int("n_RelicReinforceMaterialID"); var requirepiece = Get_Star_UpgradeCost(star, relicdata); var requirelvupmat = Get_Star_UpgradeMatCost(star, grade); if (star < 6 && sdata.Check_ItemAmount(relicdata.n_RelicID, requirepiece) && sdata.Check_ItemAmount(lvup_matID, requirelvupmat)) { ServerInfo.Ins.Save_Relic_StarUp(relicdata.n_RelicID, () => { sdata.Use_Item(relicdata.n_RelicID, requirepiece); sdata.Use_Item(lvup_matID, requirelvupmat); sdata.Add_RelicStar(relicdata.n_RelicID); Set(); MyValue.Get_ActorStatInfoorNull(eRole.PC); sdata.Add_MissionCount(ePurpose.TAKE_RELIC_GRADE_ACC, sdata.Get_RelicStar(relicdata.n_RelicID)); sdata.Add_MissionCount(ePurpose.AWAKEN_RELIC_ALL, relicdata.n_RelicID); sdata.Add_MissionCount(ePurpose.AWAKEN_RELIC_LIMIT, relicdata.n_RelicID); }); } } public void OnClick_LvUp() { var sdata = ServerInfo.Ins.m_ServerData; var relicdata = m_SelectRelic.Get_Data() as RelicListTableData; var maxlv = table_relicupgradecost.Ins.Get_MaxLv(); var lv = sdata.Get_RelicLv(relicdata.n_RelicID); if (CanUp() && maxlv > lv) { var grade = table_itemlist.Ins.Get_Data(relicdata.n_RelicID).n_ItemGrade; var star = sdata.Get_RelicStar(relicdata.n_RelicID); var lvup_matID = table_GlobalValue.Ins.Get_Int("n_RelicReinforceMaterialID"); var upgradeData = table_relicupgradecost.Ins.Get_Data(lv); var requirepiece = upgradeData.Get_Price(grade); var requirelvupmat = Get_Star_UpgradeMatCost(star, grade); if (sdata.Check_ItemAmount(relicdata.n_RelicID, requirepiece) && sdata.Check_ItemAmount(lvup_matID, requirelvupmat)) { ServerInfo.Ins.Save_Relic_LvUp(relicdata.n_RelicID, () => { sdata.Use_Item(relicdata.n_RelicID, requirepiece); sdata.Use_Item(lvup_matID, requirelvupmat); sdata.Add_RelicLv(relicdata.n_RelicID); Set(); MyValue.Get_ActorStatInfoorNull(eRole.PC); sdata.Add_MissionCount(ePurpose.UPGRADE_RELIC_ALL, relicdata.n_RelicID); sdata.Add_MissionCount(ePurpose.UPGRADE_RELIC_LIMIT, relicdata.n_RelicID); }); } } } }