using Google.Protobuf.WellKnownTypes; using ServerCommon; using ServerCore; using ServerBase; using BEACON_GUID = System.String; using META_ID = System.UInt32; using ANCHOR_GUID = System.String; namespace GameServer { public class Craft : EntityBase { public Craft(EntityBase parent) : base(EntityType.Craft, parent) { } public override async Task onInit() { var direct_parent = getDirectParent(); NullReferenceCheckHelper.throwIfNull(direct_parent, () => $"direct_parent is null !!!"); addEntityAttribute(new CraftAttribute(this, direct_parent)); return await base.onInit(); } public override string toBasicString() { return $"{this.getTypeName()} - {getRootParent().toBasicString()}"; } public override string toSummaryString() { return $"{this.getTypeName()} - {getRootParent().toBasicString()}"; } public static async Task<(Result, Craft?)> createCraftFromDoc(EntityBase parent, CraftDoc doc) { var craft = new Craft(parent); var result = await craft.onInit(); if (result.isFail()) { return (result, null); } var err_msg = string.Empty; var craft_attribute = craft.getEntityAttribute(); if (craft_attribute == null) { err_msg = $"Failed to get craft attribute : {nameof(CraftAttribute)}"; result.setFail(ServerErrorCode.EntityAttributeIsNull, err_msg); Log.getLogger().error(err_msg); return (result, null); } if (craft_attribute.copyEntityAttributeFromDoc(doc) == false) { err_msg = $"Failed to copyEntityAttributeFromDoc !!! : doc_type {doc.GetType()} - {craft.getRootParent().toBasicString()}"; result.setFail(ServerErrorCode.DynamoDbDocCopyToEntityAttributeFailed, err_msg); Log.getLogger().error(err_msg); return (result, null); } return (result, craft); } public static async Task<(Result, Craft?)> createCraft(EntityBase parent, ANCHOR_GUID anchor_guid, META_ID craft_meta_id, BEACON_GUID beacon_guid, DateTime now, DateTime craft_finish_time, int craft_count) { var craft = new Craft(parent); var result = await craft.onInit(); if (result.isFail()) { return (result, null); } var err_msg = string.Empty; var craft_attribute = craft.getEntityAttribute(); if (craft_attribute == null) { err_msg = $"Failed to get craft attribute : {nameof(CraftAttribute)}"; result.setFail(ServerErrorCode.EntityAttributeIsNull, err_msg); Log.getLogger().error(err_msg); return (result, null); } craft_attribute.AnchorGuid = anchor_guid; craft_attribute.CraftMetaId = craft_meta_id; craft_attribute.CraftStartTime = now; craft_attribute.CraftFinishTime = craft_finish_time; craft_attribute.BeaconGuid = beacon_guid; craft_attribute.CraftCount = craft_count; craft_attribute.newEntityAttribute(); return (result, craft); } public CraftInfo toCraftData4Client() { var craft_4_client = new CraftInfo(); var craft_attribute = getEntityAttribute(); NullReferenceCheckHelper.throwIfNull(craft_attribute, () => $"craft_attribute is null !!!"); craft_4_client.AnchorGuid = craft_attribute.AnchorGuid; craft_4_client.CraftMetaId = (int)craft_attribute.CraftMetaId; craft_4_client.CraftStartTime = new Timestamp(); if (craft_attribute.CraftStartTime != new DateTime()) { craft_4_client.CraftStartTime = Timestamp.FromDateTime(craft_attribute.CraftStartTime); } craft_4_client.CraftFinishTime = Timestamp.FromDateTime(craft_attribute.CraftFinishTime); craft_4_client.BeaconGuid = craft_attribute.BeaconGuid; craft_4_client.CraftCount = craft_attribute.CraftCount; return craft_4_client; } } }