Files
hjha-server/GameFix/Common/Card/DeckSerializer.cs
xiaoou e9616125ce feat: initial commit - HJHA game server full source
6 major server modules (PdkFriendServer/GlobalSever/ServerCore/GameModule/GameNetModule) +
game logic (GameFix/GameDAL/ServerData) +
network layer (NetWorkMessage) +
data layer (ObjectModel) +
utilities (MrWu/Core/Config/CloudAPI/dll) +
adapters (zyxAdapter/base)

.NET 8.0 C# solution, 16 projects, 958 source files
2026-07-07 12:02:15 +08:00

77 lines
2.2 KiB
C#

#if Server
using System;
using System.Text;
using MessagePack;
using MessagePack.Formatters;
using MessagePack.Resolvers;
using Newtonsoft.Json;
namespace GameFix.Poker
{
public class DeckSerializer
{
private Deck mDeck;
private MessagePackSerializerOptions mOptions;
private JsonSerializerSettings mMemSaveJsonSet;
public DeckSerializer(Deck deck)
{
mDeck = deck;
// MessagePack
var resolver = CompositeResolver.Create(
new IMessagePackFormatter[]
{
new CardMessagePackFormatter(mDeck),
},
new IFormatterResolver[]
{
StandardResolver.Instance
}
);
mOptions = MessagePackSerializerOptions.Standard
.WithResolver(resolver);
// .WithCompression(MessagePackCompression.Lz4BlockArray);
// Json
mMemSaveJsonSet = new JsonSerializerSettings();
mMemSaveJsonSet.DefaultValueHandling = DefaultValueHandling.Ignore;
mMemSaveJsonSet.Converters = new JsonConverter[] { new CardIdJsonConverter(mDeck) };
}
public byte[] Serialize<T>(T value, bool isJson = false)
{
if (isJson)
{
string jsonData = JsonHelper.SerializeObject(value, mMemSaveJsonSet);
return Encoding.UTF8.GetBytes(jsonData);
}
return MessagePackSerializer.Serialize(value, mOptions);
}
public T Deserialize<T>(byte[] data, bool isJson = false)
{
if (isJson)
{
string jsondata = Encoding.UTF8.GetString(data);
return JsonHelper.DeserializeObject<T>(jsondata, mMemSaveJsonSet);
}
return MessagePackSerializer.Deserialize<T>(data, mOptions);
}
}
}
#else
namespace GameFix.Poker
{
public class DeckSerializer
{
private Deck mDeck;
public DeckSerializer(Deck deck)
{
mDeck = deck;
}
}
}
#endif