125 lines
5.0 KiB
C#
125 lines
5.0 KiB
C#
using System.Collections.Generic;
|
|
using System.Linq;
|
|
|
|
public class PCUI : BotMenuBase
|
|
{
|
|
public PCUIMenu[] m_PCMenu; // 0 정보
|
|
public TabUIBase m_Tab;
|
|
|
|
List<TabUIData> list_TabData = new List<TabUIData>
|
|
{
|
|
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<eItem, int> dic_EnterID = new Dictionary<eItem, int>
|
|
{ { eItem.PCCostume, 0 }, { eItem.Worker, 0 }, { eItem.PC, 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();
|
|
LimitSlotChangeData emptylimitslot = new LimitSlotChangeData();
|
|
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 pcawakend = PCAwakenUI.isIns && PCAwakenUI.Ins.IsSendAwakenData();
|
|
bool changelimitslot = PCLimitUI.isIns && PCLimitUI.Ins.m_PCLimitUI_Right.m_LimitSlotChangeData.IsChangeLimitSlot();
|
|
|
|
if (changeCostume || changeworker || changejob || pcawakend || changelimitslot)
|
|
{
|
|
var limitslotdata = emptylimitslot;
|
|
if (PCLimitUI.isIns) limitslotdata = PCLimitUI.Ins.m_PCLimitUI_Right.m_LimitSlotChangeData;
|
|
else limitslotdata.Init();
|
|
limitslotdata = limitslotdata.Get();
|
|
|
|
ServerInfo.Ins.Save_PC_MenuBack(sdata.Get_EqiupmentEquip(eItem.PCCostume),
|
|
sdata.Get_EqiupmentEquip(eItem.Worker),
|
|
sdata.Get_EqiupmentEquip(eItem.PC),
|
|
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();
|
|
}
|
|
});
|
|
|
|
foreach (var key in dic_EnterID.Keys.ToList())
|
|
dic_EnterID[key] = 0;
|
|
if (PCAwakenUI.isIns) PCAwakenUI.Ins.Get_CS_AwakenData().Init();
|
|
if (PCLimitUI.isIns) PCLimitUI.Ins.m_PCLimitUI_Right.m_LimitSlotChangeData.Init();
|
|
}
|
|
else
|
|
{
|
|
if (exitui) base.OnClick_Back();
|
|
}
|
|
}
|
|
|
|
public override void OnClick_Back()
|
|
{
|
|
Check_ServerSave(true);
|
|
}
|
|
} |