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