using MikuSB.Database; using MikuSB.Enums.Player; using MikuSB.Proto; using System.Text.Json; using System.Text.Json.Serialization; namespace MikuSB.GameServer.Server.CallGS.Handlers.Misc; [CallGSApi("PlayerSetting_SetShowBubble")] public class PlayerSetting_SetShowBubble : ICallGSHandler { public async Task Handle(Connection connection, string param, ushort seqNo) { var player = connection.Player!; var req = JsonSerializer.Deserialize(param); if (req == null) return; var item = player.InventoryManager.GetNormalItem(req.Id); if (item == null) { await CallGSRouter.SendScript(connection, "PlayerSetting_SetShowBubble", "{\"err\":\"error.BadParam\"}"); return; } player.SetShowItem((int)ProfileShowItemTypeEnum.SHOWITEM_BUBBLE, item.UniqueId); DatabaseHelper.SaveDatabaseType(player.Data); var sync = new NtfSyncPlayer(); sync.ShowItems.AddRange(player.Data.ShowItems); await CallGSRouter.SendScript(connection, "PlayerSetting_SetShowBubble", "null", sync); } } internal sealed class SetShowBubbleParam { [JsonPropertyName("nID")] public uint Id { get; set; } }