Project_WL/Assets/Script/UI/PC/PCUI.cs

119 lines
4.7 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();
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 = 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),
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);
}
}