Files
caliverse_server/GameServer/Entity/Effect/Farming/FarmingEffect.cs
2025-05-01 07:20:41 +09:00

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;
}
}