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

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