151 lines
5.3 KiB
C#
151 lines
5.3 KiB
C#
using Google.Protobuf;
|
|
using Google.Protobuf.WellKnownTypes;
|
|
|
|
|
|
using ServerCore;
|
|
using ServerBase;
|
|
using ServerCommon;
|
|
using ServerCommon.BusinessLogDomain;
|
|
using MetaAssets;
|
|
|
|
|
|
using static ClientToGameReq.Types;
|
|
|
|
|
|
using SESSION_ID = System.Int32;
|
|
using WORLD_META_ID = System.UInt32;
|
|
using META_ID = System.UInt32;
|
|
using ENTITY_GUID = System.String;
|
|
using ACCOUNT_ID = System.String;
|
|
using OWNER_GUID = System.String;
|
|
using USER_GUID = System.String;
|
|
using MASTER_GUID = System.String;
|
|
using CHARACTER_GUID = System.String;
|
|
using ITEM_GUID = System.String;
|
|
using ENTITY_UNIQUE_ID = System.String;
|
|
using ANCHOR_META_GUID = System.String;
|
|
using NPC_UNIQUE_ID = System.String;
|
|
using FARMING_ENTITY_GUID = System.String;
|
|
using LOCATION_UNIQUE_ID = System.String;
|
|
using GUARD_KEY = System.String;
|
|
|
|
|
|
|
|
namespace GameServer;
|
|
|
|
public class FarmingEffect : EntityBase
|
|
{
|
|
private Map m_curr_map;
|
|
|
|
private AtomicString m_guard_key_nullable = new();
|
|
private AtomicBool m_guard_bool = new(false);
|
|
|
|
public FarmingEffect( EntityBase parent, Map currMap)
|
|
: base(EntityType.Farming, parent)
|
|
{
|
|
m_curr_map = currMap;
|
|
}
|
|
|
|
public override async Task<Result> onInit()
|
|
{
|
|
var direct_parent = getDirectParent();
|
|
NullReferenceCheckHelper.throwIfNull(direct_parent, () => $"direct_parent is null !!!");
|
|
|
|
addEntityAttribute(new FarmingEffectAttribute(this, direct_parent));
|
|
addEntityAttribute(new FarmingEffectLocationInTargetAttribute(this));
|
|
addEntityAttribute(new FarmingEffectOwnerAttribute(this));
|
|
|
|
addEntityAction(new FarmingEffectAction(this));
|
|
|
|
return await base.onInit();
|
|
}
|
|
|
|
public override EntityBase? onGetMasterEntity()
|
|
{
|
|
if (false == hasMasterGuid())
|
|
{
|
|
return null;
|
|
}
|
|
|
|
var err_msg = string.Empty;
|
|
|
|
var master_guid = getMasterGuid();
|
|
|
|
var server_logc = GameServerApp.getServerLogic();
|
|
var player_manager = server_logc.getPlayerManager();
|
|
|
|
if (false == player_manager.tryGetUserByPrimaryKey(master_guid, out var found_player))
|
|
{
|
|
// 별도 Task로 처리해주는 처리자가 있다면 해당 처리자를 반환 한다. !!! - kangms
|
|
|
|
err_msg = $"Failed to player_manager.tryGetUserByPrimaryKey() !!!, Not found MasterEntity : MasterGuid:{master_guid} - {toBasicString()}";
|
|
Log.getLogger().error(err_msg);
|
|
|
|
return null;
|
|
}
|
|
|
|
return found_player;
|
|
}
|
|
|
|
public override OWNER_GUID onGetGuidOfOwnerEntityType()
|
|
{
|
|
var farming_effect_attribute = getEntityAttributeWithReadOnly<FarmingEffectAttribute>();
|
|
NullReferenceCheckHelper.throwIfNull(farming_effect_attribute, () => $"farming_effect_attribute is null !!! - {toBasicStringWithMaster()}");
|
|
|
|
return farming_effect_attribute.FarmingEntityGuid;
|
|
}
|
|
|
|
public override OwnerEntityType onGetOwnerEntityType()
|
|
{
|
|
var farming_effect_attribute = getEntityAttributeWithReadOnly<FarmingEffectAttribute>();
|
|
NullReferenceCheckHelper.throwIfNull(farming_effect_attribute, () => $"farming_effect_attribute is null !!! - {toBasicStringWithMaster()}");
|
|
|
|
if(FarmingSummonedEntityType.User == farming_effect_attribute.FarmingSummonedEntityType)
|
|
{
|
|
return OwnerEntityType.User;
|
|
}
|
|
else if (FarmingSummonedEntityType.Beacon == farming_effect_attribute.FarmingSummonedEntityType)
|
|
{
|
|
return OwnerEntityType.UgcNpc;
|
|
}
|
|
|
|
return OwnerEntityType.None;
|
|
}
|
|
|
|
public ANCHOR_META_GUID getAnchorMetaGuid()
|
|
{
|
|
var farming_effect_attribute = getEntityAttributeWithReadOnly<FarmingEffectAttribute>();
|
|
NullReferenceCheckHelper.throwIfNull(farming_effect_attribute, () => $"farming_effect_attribute is null !!! - {toBasicStringWithMaster()}");
|
|
|
|
return farming_effect_attribute.AnchorMetaGuid;
|
|
}
|
|
|
|
public Map getCurrMap() => m_curr_map;
|
|
|
|
public FarmingSummary toFarmingSummary()
|
|
{
|
|
var farming_effect_attribute = getEntityAttributeWithReadOnly<FarmingEffectAttribute>();
|
|
NullReferenceCheckHelper.throwIfNull(farming_effect_attribute, () => $"farming_effect_attribute is null !!! - {toBasicString()}");
|
|
|
|
var farming_effect_action = getEntityAction<FarmingEffectAction>();
|
|
NullReferenceCheckHelper.throwIfNull(farming_effect_action, () => $"farming_effect_action is null !!! - {toBasicString()}");
|
|
|
|
var farming_anchor_info = farming_effect_action.getAnchorInfo();
|
|
var farming_anchor_prop = farming_anchor_info.AnchorProp;
|
|
|
|
var farming_summary = new FarmingSummary();
|
|
farming_summary.FarmingAnchorMetaId = farming_effect_attribute.AnchorMetaGuid;
|
|
farming_summary.FarmingPropMetaId = farming_anchor_prop.TableId;
|
|
farming_summary.FarmingUserGuid = farming_effect_attribute.OwnerGuid;
|
|
|
|
farming_summary.FarmingSummonType = farming_effect_attribute.FarmingSummonedEntityType;
|
|
farming_summary.FarmingEntityGuid = farming_effect_attribute.FarmingEntityGuid;
|
|
|
|
farming_summary.FarmingState = farming_effect_attribute.FarmingState;
|
|
farming_summary.StartTime = farming_effect_attribute.FarmingStartTime.ToTimestamp();
|
|
farming_summary.EndTime = farming_effect_attribute.FarmingEndTime.ToTimestamp();
|
|
|
|
return farming_summary;
|
|
}
|
|
}
|