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