121 lines
4.4 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|