스킬 백 저장 실패 시 롤백

This commit is contained in:
Ino 2025-07-06 05:17:26 +09:00
parent 26ba9cb3b7
commit 7726fc0338
2 changed files with 13 additions and 7 deletions

View File

@ -1603,7 +1603,7 @@ public class ServerInfo : MyCoroutine
}); });
} }
public void Save_Skill_MenuBack(int preset, Dictionary<int, List<int>> skills, Action _act) public void Save_Skill_MenuBack(int preset, Dictionary<int, List<int>> skills, Action _actfail)
{ {
NetWait.Ins.Set(true); NetWait.Ins.Set(true);
PlayFabClientAPI.ExecuteCloudScript(new ExecuteCloudScriptRequest PlayFabClientAPI.ExecuteCloudScript(new ExecuteCloudScriptRequest
@ -1629,16 +1629,15 @@ public class ServerInfo : MyCoroutine
// (0 성공, 1 실패 (없는 스킬)) // (0 성공, 1 실패 (없는 스킬))
switch (error) switch (error)
{ {
case 0: _act?.Invoke(); break; case 1: _actfail?.Invoke(); ToastUI.Ins.Set(999900023); break;
case 1: ToastUI.Ins.Set(999900023); break;
} }
} }
else else
Set_Coroutine(() => { Save_Skill_MenuBack(preset, skills, _act); }, 2f); Set_Coroutine(() => { Save_Skill_MenuBack(preset, skills, _actfail); }, 2f);
}, },
fail => fail =>
{ {
Set_Coroutine(() => { Save_Skill_MenuBack(preset, skills, _act); }, 2f); Set_Coroutine(() => { Save_Skill_MenuBack(preset, skills, _actfail); }, 2f);
}); });
} }
#endregion #endregion

View File

@ -89,7 +89,7 @@ public class SkillUI : BotMenuBase
if (dic_EquipSkill[false][curPreset][i] == skillid) if (dic_EquipSkill[false][curPreset][i] == skillid)
dic_EquipSkill[false][curPreset][i] = 0; dic_EquipSkill[false][curPreset][i] = 0;
} }
dic_EquipSkill[false][curPreset][slot - 1] = skillid; dic_EquipSkill[false][curPreset][slot] = skillid;
} }
public void OnClick_SkillType() public void OnClick_SkillType()
@ -112,7 +112,14 @@ public class SkillUI : BotMenuBase
bool save = BeforePreset != AfterPreset; bool save = BeforePreset != AfterPreset;
if (!save) save = !AreDictionariesEqual(dic_EquipSkill[true], dic_EquipSkill[false]); if (!save) save = !AreDictionariesEqual(dic_EquipSkill[true], dic_EquipSkill[false]);
if (save) ServerInfo.Ins.Save_Skill_MenuBack(AfterPreset, dic_EquipSkill[false], null); if (save) ServerInfo.Ins.Save_Skill_MenuBack(AfterPreset, dic_EquipSkill[false], () =>
{ // 실패시 원래대로
var sdata = ServerInfo.Ins.m_ServerData;
sdata.Equip.Preset = BeforePreset;
for (int i = 0; i < 3; i++)
for (int j = 0; j < dic_EquipSkill[true][i + 1].Count; j++)
sdata.Equip.Skill[i + 1][j] = dic_EquipSkill[true][i + 1][j];
});
} }
bool AreDictionariesEqual(Dictionary<int, List<int>> a, Dictionary<int, List<int>> b) bool AreDictionariesEqual(Dictionary<int, List<int>> a, Dictionary<int, List<int>> b)