From a50b0563bedbb8013736c949d573880033b155a8 Mon Sep 17 00:00:00 2001 From: Kei-Luna Date: Sun, 24 May 2026 08:31:52 +0900 Subject: [PATCH] Create VirCaptureLevel_SaveFightData.cs --- .../VirCaptureLevel_SaveFightData.cs | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 GameServer/Server/CallGS/Handlers/VirCapture/VirCaptureLevel_SaveFightData.cs diff --git a/GameServer/Server/CallGS/Handlers/VirCapture/VirCaptureLevel_SaveFightData.cs b/GameServer/Server/CallGS/Handlers/VirCapture/VirCaptureLevel_SaveFightData.cs new file mode 100644 index 0000000..1e94d3d --- /dev/null +++ b/GameServer/Server/CallGS/Handlers/VirCapture/VirCaptureLevel_SaveFightData.cs @@ -0,0 +1,45 @@ +using MikuSB.Database; +using MikuSB.Proto; +using System.Text.Json; +using System.Text.Json.Nodes; +using System.Text.Json.Serialization; + +namespace MikuSB.GameServer.Server.CallGS.Handlers.VirCapture; + +[CallGSApi("VirCaptureLevel_SaveFightData")] +public class VirCaptureLevel_SaveFightData : ICallGSHandler +{ + public async Task Handle(Connection connection, string param, ushort seqNo) + { + var req = JsonSerializer.Deserialize(param); + if (req == null || req.LevelId == 0 || req.RegionId == 0) + { + await CallGSRouter.SendScript(connection, "VirCaptureLevel_SaveFightData", "{\"sErr\":\"error.BadParam\"}"); + return; + } + + var player = connection.Player!; + var sync = new NtfSyncPlayer(); + VirCaptureStateHelper.SetPointState(player, (uint)req.LevelId, (uint)req.RegionId, 2u, sync); + + DatabaseHelper.SaveDatabaseType(player.Data); + + var response = new JsonObject + { + ["nLevelID"] = req.LevelId, + ["nRegionId"] = req.RegionId, + ["tbRewards"] = new JsonArray() + }; + + await CallGSRouter.SendScript(connection, "VirCaptureLevel_SaveFightData", response.ToJsonString(), sync); + } +} + +internal sealed class VirCaptureSaveFightDataParam +{ + [JsonPropertyName("nLevelID")] + public int LevelId { get; set; } + + [JsonPropertyName("nRegionId")] + public int RegionId { get; set; } +}