80 lines
2.7 KiB
C#
80 lines
2.7 KiB
C#
using ServerCommon;
|
|
using ServerCore; using ServerBase;
|
|
|
|
using META_ID = System.UInt32;
|
|
|
|
namespace GameServer
|
|
{
|
|
public class Package : EntityBase
|
|
{
|
|
private Package(EntityBase parent)
|
|
: base(EntityType.PackageAction, parent)
|
|
{
|
|
}
|
|
|
|
public override async Task<Result> onInit()
|
|
{
|
|
var parent = getDirectParent();
|
|
NullReferenceCheckHelper.throwIfNull(parent, () => $"parent is null !!!");
|
|
addEntityAttribute(new PackageRepeatAttribute(this, parent));
|
|
|
|
return await base.onInit();
|
|
}
|
|
|
|
public static async Task<(Result, Package?)> createPackageFromDoc(EntityBase parent, PackageRepeatDoc doc)
|
|
{
|
|
var package = new Package(parent);
|
|
var result = await package.onInit();
|
|
if (result.isFail())
|
|
{
|
|
return (result, null);
|
|
}
|
|
|
|
var err_msg = string.Empty;
|
|
|
|
var package_attribute = package.getEntityAttribute<PackageRepeatAttribute>();
|
|
ArgumentNullException.ThrowIfNull(package_attribute);
|
|
|
|
if (package_attribute.copyEntityAttributeFromDoc(doc) == false)
|
|
{
|
|
err_msg = $"Failed to copyEntityAttributeFromDoc !!! : doc_type {doc.GetType()} - {package.getRootParent().toBasicString()}";
|
|
result.setFail(ServerErrorCode.DynamoDbDocCopyToEntityAttributeFailed, err_msg);
|
|
Log.getLogger().error(err_msg);
|
|
return (result, null);
|
|
}
|
|
|
|
return (result, package);
|
|
}
|
|
|
|
public static async Task<(Result, Package?)> createPackage(Player owner, string order_guid, META_ID product_meta_id, int left_count, DateTime next_give_time)
|
|
{
|
|
var package = new Package(owner);
|
|
var result = await package.onInit();
|
|
if (result.isFail())
|
|
{
|
|
return (result, null);
|
|
}
|
|
|
|
var err_msg = string.Empty;
|
|
|
|
var package_attribute = package.getEntityAttribute<PackageRepeatAttribute>();
|
|
if (package_attribute == null)
|
|
{
|
|
err_msg = $"Failed to get package attribute : {nameof(PackageRepeatAttribute)}";
|
|
result.setFail(ServerErrorCode.EntityAttributeIsNull, err_msg);
|
|
Log.getLogger().error(err_msg);
|
|
return (result, null);
|
|
}
|
|
|
|
package_attribute.OrderGuid = order_guid;
|
|
package_attribute.ProductMetaId = product_meta_id;
|
|
package_attribute.LeftCount = left_count;
|
|
package_attribute.NextGiveTime = next_give_time;
|
|
|
|
package_attribute.newEntityAttribute();
|
|
|
|
return (result, package);
|
|
}
|
|
}
|
|
}
|