131 lines
4.4 KiB
C#
131 lines
4.4 KiB
C#
using ServerCommon;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using ServerCore; using ServerBase;
|
|
using OWNER_GUID = System.String;
|
|
using MASTER_GUID = System.String;
|
|
|
|
namespace GameServer
|
|
{
|
|
public class Myhome : EntityBase, IMergeWithInventory
|
|
{
|
|
public Myhome(MASTER_GUID masterGuid)
|
|
: base(EntityType.MyHome, masterGuid)
|
|
{
|
|
}
|
|
|
|
public override async Task<Result> onInit()
|
|
{
|
|
addEntityAttribute(new MyhomeAttribute(this));
|
|
|
|
addEntityAction(new MyhomeAction(this));
|
|
addEntityAction(new MyhomeInventoryAction(this));
|
|
|
|
return await base.onInit();
|
|
}
|
|
|
|
public async Task<Result> onMerge(List<ReservedSlotOnInven> reservedSlotOnInvens, TransactionRunner transactionRunner)
|
|
{
|
|
var result = new Result();
|
|
|
|
var inventory_action = getEntityAction<InventoryActionBase>();
|
|
ArgumentNullException.ThrowIfNull(inventory_action, $"inventory_action is null !!! - {toBasicStringWithMaster()}");
|
|
ArgumentNullException.ThrowIfNull(transactionRunner, $"transactionRunner is null !!! - {toBasicStringWithMaster()}");
|
|
|
|
result = await inventory_action.onMergeInventory(reservedSlotOnInvens, transactionRunner);
|
|
if (result.isFail())
|
|
{
|
|
return result;
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
public override EntityBase? onGetMasterEntity()
|
|
{
|
|
if (false == hasMasterGuid())
|
|
{
|
|
return null;
|
|
}
|
|
|
|
var err_msg = string.Empty;
|
|
|
|
var master_guid = getMasterGuid();
|
|
ArgumentNullException.ThrowIfNull(master_guid, $"master_guid is null !!! - {toBasicString()}");
|
|
|
|
var server_logc = GameServerApp.getServerLogic();
|
|
ArgumentNullException.ThrowIfNull(server_logc, $"server_logc is null !!! - {toBasicString()}");
|
|
var player_manager = server_logc.getPlayerManager();
|
|
ArgumentNullException.ThrowIfNull(player_manager, $"player_manager is null !!! - {toBasicString()}");
|
|
|
|
if (false == player_manager.tryGetUserByPrimaryKey(master_guid, out var found_player))
|
|
{
|
|
return null;
|
|
}
|
|
|
|
return found_player;
|
|
}
|
|
|
|
public override TAction getEntityAction<TAction>()
|
|
{
|
|
if (typeof(TAction) == typeof(InventoryActionBase))
|
|
{
|
|
var myhome_action = base.getEntityAction<MyhomeInventoryAction>() as TAction;
|
|
NullReferenceCheckHelper.throwIfNull(myhome_action, () => $"myhome_action is null !!!");
|
|
return myhome_action;
|
|
}
|
|
|
|
var action = base.getEntityAction<TAction>();
|
|
NullReferenceCheckHelper.throwIfNull(action, () => $"action is null !!!");
|
|
return action;
|
|
}
|
|
|
|
public override Type onGetAvailableItemAttributeType()
|
|
{
|
|
return typeof(MyhomeItemAttribute);
|
|
}
|
|
|
|
public override OWNER_GUID onGetGuidOfOwnerEntityType()
|
|
{
|
|
var myhome_attribute = getEntityAttributeWithReadOnly<MyhomeAttribute>();
|
|
ArgumentNullException.ThrowIfNull(myhome_attribute, $"myhome_attribute is null !!! - {toBasicStringWithMaster()}");
|
|
|
|
return myhome_attribute.MyhomeGuid;
|
|
}
|
|
|
|
public bool isAnchorInMyhome(string anchor_guid)
|
|
{
|
|
var myhome_attribute = getEntityAttributeWithReadOnly<MyhomeAttribute>();
|
|
ArgumentNullException.ThrowIfNull(myhome_attribute, $"myhome_attribute is null !!! - {toBasicStringWithMaster()}");
|
|
|
|
foreach(var anchor in myhome_attribute.UgcInfo.AnchorInfos)
|
|
{
|
|
if(anchor.AnchorGuid == anchor_guid)
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
public override OwnerEntityType onGetOwnerEntityType()
|
|
{
|
|
return OwnerEntityType.Myhome;
|
|
}
|
|
|
|
public override string toBasicString()
|
|
{
|
|
return $"{this.getTypeName()}, MyHomeGuid:{getOriginEntityAttribute<MyhomeAttribute>()?.MyhomeGuid}";
|
|
}
|
|
|
|
public override string toSummaryString()
|
|
{
|
|
return $"{this.getTypeName()}, {getEntityAttribute<MyhomeAttribute>()?.toBasicString()}";
|
|
}
|
|
}
|
|
}
|