From 720a87066f6a94d7c1983f4e6936ae805960dba2 Mon Sep 17 00:00:00 2001 From: StopWuyu Date: Fri, 30 May 2025 23:19:38 +0800 Subject: [PATCH] feat: era flipper saved data --- Common/Database/Scene/SceneData.cs | 24 +++++++++++++++++ .../HandlerEnterEraFlipperRegionCsReq.cs | 10 +++++++ .../HandlerGetEraFlipperDataCsReq.cs | 3 --- .../HandlerResetEraFlipperDataCsReq.cs | 27 +++++++++++++++++++ 4 files changed, 61 insertions(+), 3 deletions(-) create mode 100644 GameServer/Server/Packet/Recv/EraFlipper/HandlerResetEraFlipperDataCsReq.cs diff --git a/Common/Database/Scene/SceneData.cs b/Common/Database/Scene/SceneData.cs index be380362..54d43da7 100644 --- a/Common/Database/Scene/SceneData.cs +++ b/Common/Database/Scene/SceneData.cs @@ -30,6 +30,16 @@ public class SceneData : BaseDatabaseDataHelper [SugarColumn(IsJson = true, ColumnDataType = "TEXT")] public Dictionary> MarkedChestData { get; set; } = []; // Dictionary> + + [SugarColumn(IsJson = true, ColumnDataType = "TEXT")] + public Dictionary>> GroupPropertyData { get; set; } = + []; // Dictionary>> + + [SugarColumn(IsJson = true, ColumnDataType = "TEXT")] + public SceneEraFlipperData EraFlipperData { get; set; } = new(); + + [SugarColumn(IsJson = true, ColumnDataType = "TEXT")] + public SceneRotatableRegionData RotatableRegionData { get; set; } = new(); } public class ScenePropData @@ -38,6 +48,20 @@ public class ScenePropData public PropStateEnum State { get; set; } } +public class SceneEraFlipperData +{ + public int CurRegionId { get; set; } + public Dictionary RegionState { get; set; } = []; // Dictionary +} + +public class SceneRotatableRegionData +{ + public int CurRegionId { get; set; } + public int Energy { get; set; } + public int MaxEnergy { get; set; } + public int RotateValue { get; set; } +} + public class ScenePropTimelineData { public bool BoolValue { get; set; } diff --git a/GameServer/Server/Packet/Recv/EraFlipper/HandlerEnterEraFlipperRegionCsReq.cs b/GameServer/Server/Packet/Recv/EraFlipper/HandlerEnterEraFlipperRegionCsReq.cs index 3b67f686..9d838b88 100644 --- a/GameServer/Server/Packet/Recv/EraFlipper/HandlerEnterEraFlipperRegionCsReq.cs +++ b/GameServer/Server/Packet/Recv/EraFlipper/HandlerEnterEraFlipperRegionCsReq.cs @@ -1,3 +1,4 @@ +using EggLink.DanhengServer.GameServer.Game.Scene.Component; using EggLink.DanhengServer.GameServer.Server.Packet.Send.EraFlipper; using EggLink.DanhengServer.Kcp; using EggLink.DanhengServer.Proto; @@ -11,6 +12,15 @@ public class HandlerEnterEraFlipperRegionCsReq : Handler { var req = EnterEraFlipperRegionCsReq.Parser.ParseFrom(data); + var component = connection.Player!.SceneInstance!.GetComponent(); + if (component == null) + { + await connection.SendPacket(new PacketEnterEraFlipperRegionScRsp(Retcode.RetAdventureMapNotExist)); + return; + } + + component.EnterEraFlipperRegion((int)req.EraFlipperRegionId, (int)req.State); + await connection.SendPacket(new PacketEnterEraFlipperRegionScRsp(req.EraFlipperRegionId)); } } \ No newline at end of file diff --git a/GameServer/Server/Packet/Recv/EraFlipper/HandlerGetEraFlipperDataCsReq.cs b/GameServer/Server/Packet/Recv/EraFlipper/HandlerGetEraFlipperDataCsReq.cs index 6ee0d253..6cb6453e 100644 --- a/GameServer/Server/Packet/Recv/EraFlipper/HandlerGetEraFlipperDataCsReq.cs +++ b/GameServer/Server/Packet/Recv/EraFlipper/HandlerGetEraFlipperDataCsReq.cs @@ -1,6 +1,5 @@ using EggLink.DanhengServer.GameServer.Server.Packet.Send.EraFlipper; using EggLink.DanhengServer.Kcp; -using EggLink.DanhengServer.Proto; namespace EggLink.DanhengServer.GameServer.Server.Packet.Recv.EraFlipper; @@ -9,8 +8,6 @@ public class HandlerGetEraFlipperDataCsReq : Handler { public override async Task OnHandle(Connection connection, byte[] header, byte[] data) { - var req = GetEraFlipperDataCsReq.Parser.ParseFrom(data); - await connection.SendPacket(new PacketGetEraFlipperDataScRsp(connection.Player!)); } } \ No newline at end of file diff --git a/GameServer/Server/Packet/Recv/EraFlipper/HandlerResetEraFlipperDataCsReq.cs b/GameServer/Server/Packet/Recv/EraFlipper/HandlerResetEraFlipperDataCsReq.cs new file mode 100644 index 00000000..81aa7258 --- /dev/null +++ b/GameServer/Server/Packet/Recv/EraFlipper/HandlerResetEraFlipperDataCsReq.cs @@ -0,0 +1,27 @@ +using EggLink.DanhengServer.GameServer.Game.Scene.Component; +using EggLink.DanhengServer.GameServer.Server.Packet.Send.EraFlipper; +using EggLink.DanhengServer.Kcp; +using EggLink.DanhengServer.Proto; + +namespace EggLink.DanhengServer.GameServer.Server.Packet.Recv.EraFlipper; + +[Opcode(CmdIds.ResetEraFlipperDataCsReq)] +public class HandlerResetEraFlipperDataCsReq : Handler +{ + public override async Task OnHandle(Connection connection, byte[] header, byte[] data) + { + var req = ResetEraFlipperDataCsReq.Parser.ParseFrom(data); + + var component = connection.Player!.SceneInstance!.GetComponent(); + if (component == null) + { + await connection.SendPacket(new PacketResetEraFlipperDataScRsp(Retcode.RetAdventureMapNotExist)); + return; + } + + // leave + await connection.SendPacket(new PacketResetEraFlipperDataScRsp(component.CurRegionId, component.RegionState, req.PAHMAGPFDDJ)); + + component.LeaveFlipperRegion(); + } +} \ No newline at end of file