diff --git a/EpinelPS/LobbyServer/Character/ChangeSynchroDevice.cs b/EpinelPS/LobbyServer/Character/ChangeSynchroDevice.cs index af18814..c37b478 100644 --- a/EpinelPS/LobbyServer/Character/ChangeSynchroDevice.cs +++ b/EpinelPS/LobbyServer/Character/ChangeSynchroDevice.cs @@ -1,4 +1,5 @@ -using EpinelPS.Utils; +using EpinelPS.Database; +using EpinelPS.Utils; using System; using System.Collections.Generic; using System.Linq; @@ -48,6 +49,9 @@ namespace EpinelPS.LobbyServer.Character { response.Slots.Add(new NetSynchroSlot() { Slot = item.Slot, AvailableRegisterAt = item.AvailableAt, Csn = item.CharacterSerialNumber }); } + + JsonDb.Save(); + await WriteDataAsync(response); } } diff --git a/EpinelPS/LobbyServer/Character/RegisterSynchroDevice.cs b/EpinelPS/LobbyServer/Character/RegisterSynchroDevice.cs index 4fe3c8e..43b40c9 100644 --- a/EpinelPS/LobbyServer/Character/RegisterSynchroDevice.cs +++ b/EpinelPS/LobbyServer/Character/RegisterSynchroDevice.cs @@ -1,4 +1,5 @@ -using EpinelPS.Utils; +using EpinelPS.Database; +using EpinelPS.Utils; namespace EpinelPS.LobbyServer.Character { @@ -41,6 +42,7 @@ namespace EpinelPS.LobbyServer.Character } } + JsonDb.Save(); await WriteDataAsync(response); } diff --git a/EpinelPS/LobbyServer/Character/SynchroAddSlot.cs b/EpinelPS/LobbyServer/Character/SynchroAddSlot.cs new file mode 100644 index 0000000..4cd919f --- /dev/null +++ b/EpinelPS/LobbyServer/Character/SynchroAddSlot.cs @@ -0,0 +1,49 @@ +using EpinelPS.Database; +using EpinelPS.Utils; + +namespace EpinelPS.LobbyServer.Character +{ + [PacketPath("/character/synchrodevice/addslot")] + public class SynchroAddSlot : LobbyMsgHandler + { + protected override async Task HandleAsync() + { + var req = await ReadData(); + var user = GetUser(); + var response = new ResSynchroAddSlot(); + + var slot = user.SynchroSlots.FirstOrDefault(x => x.Slot == req.Slot); + if (slot != null) + { + response.Slot = new NetSynchroSlot + { + Csn = slot.CharacterSerialNumber, + Slot = slot.Slot, + AvailableRegisterAt = slot.AvailableAt + }; + } + else + { + var newSlot = new NetSynchroSlot + { + Csn = 0, + Slot = req.Slot, + AvailableRegisterAt = 0 + }; + + user.SynchroSlots.Add(new SynchroSlot() + { + Slot = newSlot.Slot, + CharacterSerialNumber = newSlot.Csn, + AvailableAt = newSlot.AvailableRegisterAt + }); + + response.Slot = newSlot; + } + + JsonDb.Save(); + + await WriteDataAsync(response); + } + } +}