feat: era flipper saved data

This commit is contained in:
StopWuyu
2025-05-30 23:19:38 +08:00
parent fc22a1f8e1
commit 720a87066f
4 changed files with 61 additions and 3 deletions

View File

@@ -30,6 +30,16 @@ public class SceneData : BaseDatabaseDataHelper
[SugarColumn(IsJson = true, ColumnDataType = "TEXT")]
public Dictionary<int, List<SceneMarkedChestData>> MarkedChestData { get; set; } =
[]; // Dictionary<FuncId, List<ScenePropTimelineData>>
[SugarColumn(IsJson = true, ColumnDataType = "TEXT")]
public Dictionary<int, Dictionary<int, Dictionary<string, int>>> GroupPropertyData { get; set; } =
[]; // Dictionary<FloorId, Dictionary<GroupId, Dictionary<Key, Value>>>
[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<int, int> RegionState { get; set; } = []; // Dictionary<RegionId, State>
}
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; }

View File

@@ -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<EraFlipperSceneComponent>();
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));
}
}

View File

@@ -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!));
}
}

View File

@@ -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<EraFlipperSceneComponent>();
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();
}
}