Save_Equipment_MenuBack 에 착용 적용, 기존 착용 함수 사용x

This commit is contained in:
Ino 2025-08-06 13:18:59 +09:00
parent 2dbf74c5fc
commit 4b820dbce7
5 changed files with 124 additions and 2 deletions

View File

@ -1577,7 +1577,7 @@ handlers.Save_Equipment_Craft = function(args)
}
return Get_Return(2);
}
handlers.Save_Equipment_Equip = function(args)
handlers.Save_Equipment_Equip = function(args) // 사용 x
{
var readonlydata = Get_UserReadOnlyData();
var error = Get_Error(readonlydata, args.Token);
@ -1867,6 +1867,33 @@ handlers.Save_Enchant_LvUp = function(args)
}
return Get_Return(1);
}
handlers.Save_Equipment_MenuBack = function(args)
{
var readonlydata = Get_UserReadOnlyData();
var error = Get_Error(readonlydata, args.Token);
if (error < 0) return Get_Return(error);
var urod = Get_JsonUserData(readonlydata);
var rawEquipArray = args.EquipMenuData.Equip;
var equipDict = {};
for (var i = 0; i < rawEquipArray.length; ++i)
equipDict[rawEquipArray[i].Key] = rawEquipArray[i].Value;
var validEquipKeys = ["Weapon", "Armor", "Helmet", "Extra", "Ring", "Necklace"];
for (var i = 0; i < validEquipKeys.length; ++i)
{
var key = validEquipKeys[i];
var itemID = equipDict[key];
if (IsObtainItem(urod, itemID) && urod.Equip.Equip[key] != itemID)
{
urod.Equip.Equip[key] = itemID;
Add_MissionCount(Get_MissionTable(), urod, "EQUIP_ITEM_MOUNT_PARTS_LIMIT", Add_Amount(i, 1), 1);
}
}
Set_JsonUserData(urod);
return Get_Return(0, { Equip: urod.Equip.Equip });
}
handlers.Save_Skill_MenuBack = function(args)
{

View File

@ -3155,6 +3155,10 @@ public class SC_EnchantOptionResult
public SD_OptionDetailData lastoption;
public SD_EquipItemEnchant newoption;
}
public class SC_EquipmentMenuBackResult
{
public Dictionary<eItem, int> Equip;
}
public class SC_PetGachaResult
{
public int gem;
@ -3225,4 +3229,33 @@ public class CS_EquipSlotEnchantData
public eItem Parts;
public int Slot, EnchantID, Count;
}
public class CS_EquipmentMenuBackData
{
public Dictionary<eItem, int> Equip = new Dictionary<eItem, int>
{
{ eItem.Weapon, 0 }, { eItem.Armor, 0 }, { eItem.Helmet, 0 }, { eItem.Extra, 0 }, { eItem.Ring, 0 },
{ eItem.Necklace, 0 },
};
public void Init()
{
var sdata = ServerInfo.Ins.m_ServerData;
var keys = Equip.Keys.ToList(); // 키 복사
foreach (var key in keys)
Equip[key] = sdata.Get_EqiupmentEquip(key);
}
public bool isNeedServerSave()
{
var sdata = ServerInfo.Ins.m_ServerData;
foreach (var item in Equip)
{
if (Equip[item.Key] != sdata.Get_EqiupmentEquip(item.Key))
return true;
}
return false;
}
}
#endregion

View File

@ -1436,6 +1436,7 @@ public class ServerInfo : MyCoroutine
Set_Coroutine(() => { Save_Equipment_Craft(itemid, _act); }, 2f);
});
}
[Obsolete("Use Save_Equipment_MenuBack Instead")]
public void Save_Equipment_Equip(int itemid, Action _act)
{
NetWait.Ins.Set(true);
@ -1663,6 +1664,7 @@ public class ServerInfo : MyCoroutine
/// <summary>
/// itemid : 인챈트 할 착용 아이템 id
/// </summary>
[Obsolete("Use Save_Equipment_MenuBack Instead")]
public void Save_EquipItem_Enchant(int itemid, int eid, int slot, Action<SC_EnchantEquipItemResult> _act)
{
NetWait.Ins.Set(true);
@ -1703,6 +1705,37 @@ public class ServerInfo : MyCoroutine
Set_Coroutine(() => { Save_EquipItem_Enchant(itemid, eid, slot, _act); }, 2f);
});
}
public void Save_Equipment_MenuBack(CS_EquipmentMenuBackData data, Action<SC_EquipmentMenuBackResult> _act)
{
NetWait.Ins.Set(true);
data.Init(); // 현재 데이터 전송
PlayFabClientAPI.ExecuteCloudScript(new ExecuteCloudScriptRequest
{
FunctionName = MethodBase.GetCurrentMethod().Name,
GeneratePlayStreamEvent = true,
FunctionParameter = new
{
Token = m_LoginInfo.EntityToken.EntityToken,
EquipMenuData = data,
}
},
result =>
{
if (result.Error == null)
{
NetWait.Ins.Set(false);
var str_result = result.FunctionResult.ToString();
var error = MyErrorCheck(str_result);
_act?.Invoke(JsonConvert.DeserializeObject<SC_EquipmentMenuBackResult>(str_result));
}
else
Set_Coroutine(() => { Save_Equipment_MenuBack(data, _act); }, 2f);
},
fail =>
{
Set_Coroutine(() => { Save_Equipment_MenuBack(data, _act); }, 2f);
});
}
public void Save_Enchant_LvUp(int eid, Action<SC_EnchantOptionResult> _act)
{

View File

@ -76,6 +76,15 @@ public class EquipmentPopup_Obtain : EquipmentPopupBase
{
if (!sdata.IsEquip(m_Data.e_EquipParts, m_Data.n_EquipID))
{
sdata.Equip.Set_Equip(m_Data.e_EquipParts, m_Data.n_EquipID);
act_RefreshUI();
NewGameUI.Ins.m_EquipmentUI.m_equipItems.Set();
NewGameUI.Ins.m_EquipmentUI.m_EquipmentUI_Items.Set_UI();
if (m_Data.e_EquipParts == eItem.Weapon)
MyValue.MyPC.Change_Weapon();
MyValue.Get_ActorStatInfoorNull(eRole.PC);
/*
ServerInfo.Ins.Save_Equipment_Equip(m_Data.n_EquipID, () =>
{
sdata.Equip.Set_Equip(m_Data.e_EquipParts, m_Data.n_EquipID);
@ -96,6 +105,7 @@ public class EquipmentPopup_Obtain : EquipmentPopupBase
case eItem.Necklace: sdata.Add_MissionCount(ePurpose.EQUIP_ITEM_MOUNT_PARTS_LIMIT, 6); break;
}
});
*/
}
}
}

View File

@ -19,10 +19,12 @@ public class EquipmentUI : BotMenuBase
};
List<eStat> list_infostat = new List<eStat> { eStat.BaseDmg, eStat.MaxHP, eStat.STR, eStat.DEX, eStat.INT, eStat.LUK };
CS_EquipmentMenuBackData m_MenuBackData = new CS_EquipmentMenuBackData();
public override void Set()
{
base.Set();
m_MenuBackData.Init();
Set_Money(101, 102, 103);
m_EqiupmentPCInfo.Set();
m_equipItems.Set();
@ -72,7 +74,24 @@ public class EquipmentUI : BotMenuBase
public override void OnClick_Back()
{
base.OnClick_Back();
if (m_MenuBackData.isNeedServerSave())
{
ServerInfo.Ins.Save_Equipment_MenuBack(m_MenuBackData,
result =>
{
var sdata = ServerInfo.Ins.m_ServerData;
foreach (var item in result.Equip)
sdata.Equip.Equip[item.Key] = item.Value;
MyValue.Get_ActorStatInfoorNull(eRole.PC);
base.OnClick_Back();
});
}
else
{
base.OnClick_Back();
}
PopupMgr.Ins.m_EquipmentItemPopup.OnClick_Back();
PopupMgr.Ins.m_EquipmentMakePopup.OnClick_Back();
PopupMgr.Ins.m_EquipmentPopup.OnClick_Back();