Files
caliverse_server/ServerCommon/Helper/ClientMessageHelper.cs
2025-05-01 07:20:41 +09:00

62 lines
2.3 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
using Google.Protobuf.WellKnownTypes;
using ServerCore; using ServerBase;
namespace ServerCommon;
public static class ClientMessageHelper
{
public static global::Item toItemData4Client(this ItemBase item)
{
var parent = item.getRootParent();
NullReferenceCheckHelper.throwIfNull(parent, () => $"parent is null !!!");
var item_attribute = item.getEntityAttribute<ItemAttributeBase>();
NullReferenceCheckHelper.throwIfNull(item_attribute, () => $"item_attribute is null !!! - {parent.toBasicString()}");
return item_attribute.toItemData4Client();
}
public static global::Item toItemData4Client(this ItemAttributeBase itemAttributeBase)
{
var owner = itemAttributeBase.getOwner();
NullReferenceCheckHelper.throwIfNull(owner, () => $"owner is null !!!");
var parent = owner.getRootParent();
NullReferenceCheckHelper.throwIfNull(parent, () => $"parent is null !!! - {owner.toBasicString()}");
var item_4_client = new global::Item();
item_4_client.ItemGuid = itemAttributeBase.ItemGuid;
item_4_client.ItemId = (Int32)itemAttributeBase.ItemMetaId;
item_4_client.Count = itemAttributeBase.ItemStackCount;
item_4_client.Slot = itemAttributeBase.EquipedPos;
item_4_client.Level = itemAttributeBase.Level;
item_4_client.Attributeids.AddRange(itemAttributeBase.Attributes.Select<UInt16, Int32>(x => x).ToList());
(var result, DynamoDbDocBase? doc_base) = itemAttributeBase.toDocBase(false).GetAwaiter().GetResult();
if(result.isFail())
{
var err_msg = $"Failed to toDocBase() !!!, in toItemData4Client() : {result.toBasicString()} - {owner.toBasicString()}, {parent.toBasicString()}";
Log.getLogger().error(err_msg);
return item_4_client;
}
NullReferenceCheckHelper.throwIfNull(doc_base, () => $"doc_base is null !!! - {itemAttributeBase.toBasicString()}");
item_4_client.CreateTime = doc_base.getCreatedDateTime().ProcessedTime.ToTimestamp();
item_4_client.CreateTime = doc_base.getUpdatedDateTime().ProcessedTime.ToTimestamp();
return item_4_client;
}
}