using System.Collections.Generic; using System.Linq; public class PCUI : BotMenuBase { public PCUIMenu[] m_PCMenu; // 0 정보 public TabUIBase m_Tab; List list_TabData = new List { new TabUIData{ n_btnName = 227, },new TabUIData{ n_btnName = 228, },new TabUIData{ n_btnName = 229, }, new TabUIData{ n_btnName = 217, },new TabUIData{ n_btnName = 231, }, }; Dictionary dic_EnterID = new Dictionary { { eItem.PCCostume, 0 }, { eItem.Worker, 0 }, { eItem.PC, 0 }, { eItem.Preset , 0 } }; public override void Set() { base.Set(); for (int i = 0; i < list_TabData.Count; i++) { list_TabData[i].onClick = OnClick_Tab; list_TabData[i].btnImg_on = $"menu icon {i + 1}"; list_TabData[i].btnImg_off = $"menu icon {i + 1}"; } m_Tab.Set(list_TabData); OnClick_Tab(); } public void Set_EnterID(eItem item, int id) { dic_EnterID[item] = id; } public int Get_EnterID(eItem item) { return dic_EnterID[item]; } public void OnClick_Tab() { for (int i = 0; i < m_PCMenu.Length; i++) m_PCMenu[i].Off(); m_PCMenu[m_Tab.Get_Index()].Set(); Check_ServerSave(false); } CS_AwakenData emptyawaken = new CS_AwakenData(); public override void Check_ServerSave(bool exitui) { var sdata = ServerInfo.Ins.m_ServerData; bool changeCostume = Get_EnterID(eItem.PCCostume) > 0 && Get_EnterID(eItem.PCCostume) != sdata.Get_EqiupmentEquip(eItem.PCCostume); bool changeworker = Get_EnterID(eItem.Worker) > 0 && Get_EnterID(eItem.Worker) != sdata.Get_EqiupmentEquip(eItem.Worker); bool changejob = Get_EnterID(eItem.PC) > 0 && Get_EnterID(eItem.PC) != sdata.Get_EqiupmentEquip(eItem.PC); bool changepreset = Get_EnterID(eItem.Preset) > 0 && Get_EnterID(eItem.Preset) != sdata.Equip.LimitPreset; bool pcawakend = PCAwakenUI.isIns && PCAwakenUI.Ins.IsSendAwakenData(); bool changelimitslot = PCLimitUI.isIns && PCLimitUI.Ins.m_PCLimitUI_Right.m_LimitSlotChangeData.IsChangeLimitSlot(); if (changeCostume || changeworker || changejob || changepreset || pcawakend || changelimitslot) { var limitslotdata = PCLimitUI.Ins.m_PCLimitUI_Right.m_LimitSlotChangeData.Get(); ServerInfo.Ins.Save_PC_MenuBack(sdata.Get_EqiupmentEquip(eItem.PCCostume), sdata.Get_EqiupmentEquip(eItem.Worker), sdata.Get_EqiupmentEquip(eItem.PC), sdata.Equip.LimitPreset, PCAwakenUI.isIns ? PCAwakenUI.Ins.Get_CS_AwakenData() : emptyawaken, limitslotdata, result => { for (int i = 0; i < result.awakenMats.Count; i++) sdata.Set_Item(result.awakenMats[i].itemid, result.awakenMats[i].amount); foreach (var item in result.awaken) sdata.Awaken[item.Key] = item.Value.Get(); if (result.limitslot.success) { sdata.Add_MissionCount(ePurpose.HERO_OPTION_CHANGE, 0, limitslotdata.Get_MissionCount()); sdata.Add_MissionCount(ePurpose.HERO_OPTION_CHANGE_ACC, 0, limitslotdata.Get_MissionCount()); } else { sdata.LimitBreakOption.Preset = result.limitslot.limitpreset; foreach (var item in result.limitslot.limitslotoption) { sdata.LimitSlot[item.Key].Clear(); for (int i = 0; i < item.Value.Count; i++) sdata.LimitSlot[item.Key].Add(item.Value[i].Get()); } MyValue.Get_ActorStatInfoorNull(eRole.PC); sdata.Set_Item(result.limitslot.matID, result.limitslot.curAmount); //Refresh_Money(); // 뒤로 가므로 필요x } if (changeCostume || changeworker) { ActorInfo.Ins.Destroy_All(); CoroutineMgr.Ins.Set_Coroutine(() => { PCInfo.Ins.Make_Actors(false, ServerInfo.Ins.m_ServerData); InGameInfo.Ins.StartCam(); if (exitui) base.OnClick_Back(); }, 0.02f); } else { if (exitui) base.OnClick_Back(); } }); } else { if (exitui) base.OnClick_Back(); } foreach (var key in dic_EnterID.Keys.ToList()) dic_EnterID[key] = 0; if (PCAwakenUI.isIns) PCAwakenUI.Ins.Get_CS_AwakenData().Init(); } public override void OnClick_Back() { Check_ServerSave(true); } }