From 2f7c12713c9b9e6cd9162747229ae72225ac7629 Mon Sep 17 00:00:00 2001 From: Kyle873 Date: Sun, 22 Dec 2024 00:13:38 -0500 Subject: [PATCH] add new synchro slots, fix synchro state not saving --- .../Character/ChangeSynchroDevice.cs | 6 ++- .../Character/RegisterSynchroDevice.cs | 4 +- .../LobbyServer/Character/SynchroAddSlot.cs | 49 +++++++++++++++++++ 3 files changed, 57 insertions(+), 2 deletions(-) create mode 100644 EpinelPS/LobbyServer/Character/SynchroAddSlot.cs 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); + } + } +}