WutheringWaves/GameServer/Systems/Entity/PlayerEntity.cs
2024-02-10 19:04:03 +03:00

66 lines
2 KiB
C#

using GameServer.Systems.Entity.Component;
using Protocol;
namespace GameServer.Systems.Entity;
internal class PlayerEntity : EntityBase
{
public PlayerEntity(long id, int configId, int playerId) : base(id)
{
ConfigId = configId;
PlayerId = playerId;
}
public int ConfigId { get; }
public int PlayerId { get; }
public override void AddComponents()
{
base.AddComponents();
EntityConcomitantsComponent concomitantsComponent = ComponentSystem.Create<EntityConcomitantsComponent>();
concomitantsComponent.CustomEntityIds.Add(Id);
EntityVisionSkillComponent visionSkillComponent = ComponentSystem.Create<EntityVisionSkillComponent>();
visionSkillComponent.SetExploreTool(1001);
_ = ComponentSystem.Create<EntityAttributeComponent>();
InitAttributes();
}
private void InitAttributes()
{
EntityAttributeComponent attributeComponent = ComponentSystem.Get<EntityAttributeComponent>();
attributeComponent.SetAttribute(EAttributeType.Life, 1000);
attributeComponent.SetAttribute(EAttributeType.LifeMax, 1000);
attributeComponent.SetAttribute(EAttributeType.Lv, 1);
}
public override EEntityType Type => EEntityType.Player;
public override EntityConfigType ConfigType => EntityConfigType.Character;
public override EntityPb Pb
{
get
{
EntityPb pb = new()
{
Id = Id,
EntityType = (int)Type,
ConfigType = (int)ConfigType,
EntityState = (int)State,
ConfigId = ConfigId,
Pos = Pos,
Rot = Rot,
PlayerId = PlayerId,
LivingStatus = (int)LivingStatus,
IsVisible = IsVisible,
InitLinearVelocity = new(),
InitPos = new()
};
pb.ComponentPbs.AddRange(ComponentSystem.Pb);
return pb;
}
}
}