mirror of
https://github.com/EggLinks/DanhengServer-OpenSource.git
synced 2026-01-02 20:26:03 +08:00
Add Support For ServerPrefs (remove red dot)
This commit is contained in:
33
Common/Database/Player/ServerPrefsData.cs
Normal file
33
Common/Database/Player/ServerPrefsData.cs
Normal file
@@ -0,0 +1,33 @@
|
||||
using EggLink.DanhengServer.Proto;
|
||||
using Google.Protobuf;
|
||||
using SqlSugar;
|
||||
|
||||
namespace EggLink.DanhengServer.Database.Player;
|
||||
|
||||
[SugarTable("server_prefs_data")]
|
||||
public class ServerPrefsData : BaseDatabaseDataHelper
|
||||
{
|
||||
[SugarColumn(IsJson = true)]
|
||||
public Dictionary<int, ServerPrefsInfo> ServerPrefsDict { get; set; } = [];
|
||||
|
||||
public void SetData(int prefsId, string b64Data)
|
||||
{
|
||||
ServerPrefsDict[prefsId] = new ServerPrefsInfo()
|
||||
{
|
||||
ServerPrefsId = prefsId,
|
||||
Data = b64Data
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
public class ServerPrefsInfo
|
||||
{
|
||||
public int ServerPrefsId { get; set; }
|
||||
public string Data { get; set; } = "";
|
||||
|
||||
public ServerPrefs ToProto() => new()
|
||||
{
|
||||
Data = ByteString.FromBase64(Data),
|
||||
ServerPrefsId = (uint)ServerPrefsId
|
||||
};
|
||||
}
|
||||
@@ -76,6 +76,7 @@ public class PlayerInstance(PlayerData data)
|
||||
public HeartDialData? HeartDialData { get; private set; }
|
||||
public TutorialData? TutorialData { get; private set; }
|
||||
public TutorialGuideData? TutorialGuideData { get; private set; }
|
||||
public ServerPrefsData? ServerPrefsData { get; private set; }
|
||||
public SceneInstance? SceneInstance { get; private set; }
|
||||
public int Uid { get; set; }
|
||||
public Connection? Connection { get; set; }
|
||||
@@ -148,6 +149,8 @@ public class PlayerInstance(PlayerData data)
|
||||
HeartDialData = InitializeDatabase<HeartDialData>();
|
||||
TutorialData = InitializeDatabase<TutorialData>();
|
||||
TutorialGuideData = InitializeDatabase<TutorialGuideData>();
|
||||
ServerPrefsData = InitializeDatabase<ServerPrefsData>();
|
||||
|
||||
|
||||
Data.LastActiveTime = Extensions.GetUnixSec();
|
||||
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
using EggLink.DanhengServer.GameServer.Server.Packet.Send.ServerPrefs;
|
||||
using EggLink.DanhengServer.Kcp;
|
||||
|
||||
namespace EggLink.DanhengServer.GameServer.Server.Packet.Recv.ServerPrefs;
|
||||
|
||||
[Opcode(CmdIds.GetAllServerPrefsDataCsReq)]
|
||||
public class HandlerGetAllServerPrefsDataCsReq : Handler
|
||||
{
|
||||
public override async Task OnHandle(Connection connection, byte[] header, byte[] data)
|
||||
{
|
||||
var infos = connection.Player?.ServerPrefsData?.ServerPrefsDict.Values.ToList() ?? [];
|
||||
await connection.SendPacket(new PacketGetAllServerPrefsDataScRsp(infos));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
using EggLink.DanhengServer.GameServer.Server.Packet.Send.ServerPrefs;
|
||||
using EggLink.DanhengServer.Kcp;
|
||||
using EggLink.DanhengServer.Proto;
|
||||
|
||||
namespace EggLink.DanhengServer.GameServer.Server.Packet.Recv.ServerPrefs;
|
||||
|
||||
[Opcode(CmdIds.GetServerPrefsDataCsReq)]
|
||||
public class HandlerGetServerPrefsDataCsReq : Handler
|
||||
{
|
||||
public override async Task OnHandle(Connection connection, byte[] header, byte[] data)
|
||||
{
|
||||
var req = GetServerPrefsDataCsReq.Parser.ParseFrom(data);
|
||||
|
||||
var info = connection.Player!.ServerPrefsData?.ServerPrefsDict.GetValueOrDefault((int)req.ServerPrefsId);
|
||||
|
||||
await connection.SendPacket(new PacketGetServerPrefsDataScRsp(info, req.ServerPrefsId));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
using EggLink.DanhengServer.GameServer.Server.Packet.Send.ServerPrefs;
|
||||
using EggLink.DanhengServer.Kcp;
|
||||
using EggLink.DanhengServer.Proto;
|
||||
|
||||
namespace EggLink.DanhengServer.GameServer.Server.Packet.Recv.ServerPrefs;
|
||||
|
||||
[Opcode(CmdIds.UpdateServerPrefsDataCsReq)]
|
||||
public class HandlerUpdateServerPrefsDataCsReq : Handler
|
||||
{
|
||||
public override async Task OnHandle(Connection connection, byte[] header, byte[] data)
|
||||
{
|
||||
var req = UpdateServerPrefsDataCsReq.Parser.ParseFrom(data);
|
||||
|
||||
connection.Player?.ServerPrefsData?.SetData((int)req.ServerPrefs.ServerPrefsId, req.ServerPrefs.Data.ToBase64());
|
||||
await connection.SendPacket(new PacketUpdateServerPrefsDataScRsp(req.ServerPrefs.ServerPrefsId));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
using EggLink.DanhengServer.Database.Player;
|
||||
using EggLink.DanhengServer.Kcp;
|
||||
using EggLink.DanhengServer.Proto;
|
||||
|
||||
namespace EggLink.DanhengServer.GameServer.Server.Packet.Send.ServerPrefs;
|
||||
|
||||
public class PacketGetAllServerPrefsDataScRsp : BasePacket
|
||||
{
|
||||
public PacketGetAllServerPrefsDataScRsp(List<ServerPrefsInfo> infos) : base(CmdIds.GetAllServerPrefsDataScRsp)
|
||||
{
|
||||
var proto = new GetAllServerPrefsDataScRsp();
|
||||
|
||||
foreach (var info in infos)
|
||||
{
|
||||
proto.CFHMFEBMJIK.Add(info.ToProto());
|
||||
}
|
||||
|
||||
SetData(proto);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
using EggLink.DanhengServer.Database.Player;
|
||||
using EggLink.DanhengServer.Kcp;
|
||||
using EggLink.DanhengServer.Proto;
|
||||
using Google.Protobuf;
|
||||
|
||||
namespace EggLink.DanhengServer.GameServer.Server.Packet.Send.ServerPrefs;
|
||||
|
||||
public class PacketGetServerPrefsDataScRsp : BasePacket
|
||||
{
|
||||
public PacketGetServerPrefsDataScRsp(ServerPrefsInfo? info, uint id) : base(CmdIds.GetServerPrefsDataScRsp)
|
||||
{
|
||||
var proto = new GetServerPrefsDataScRsp
|
||||
{
|
||||
ServerPrefs = info?.ToProto() ?? new Proto.ServerPrefs()
|
||||
{
|
||||
Data = ByteString.Empty,
|
||||
ServerPrefsId = id
|
||||
}
|
||||
};
|
||||
|
||||
SetData(proto);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
using EggLink.DanhengServer.Kcp;
|
||||
using EggLink.DanhengServer.Proto;
|
||||
|
||||
namespace EggLink.DanhengServer.GameServer.Server.Packet.Send.ServerPrefs;
|
||||
|
||||
public class PacketUpdateServerPrefsDataScRsp : BasePacket
|
||||
{
|
||||
public PacketUpdateServerPrefsDataScRsp(uint prefsId) : base(CmdIds.UpdateServerPrefsDataScRsp)
|
||||
{
|
||||
var proto = new UpdateServerPrefsDataScRsp
|
||||
{
|
||||
ServerPrefsId = prefsId
|
||||
};
|
||||
|
||||
SetData(proto);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user