Files
2025-05-01 07:20:41 +09:00

121 lines
4.4 KiB
C#

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