geometry-tower-defense-base/src-ref/Entity/EntityLogic/Player.cs

55 lines
1.6 KiB
C#

using Components;
using GeometryTD.Entity;
using GeometryTD.Entity.EntityData;
namespace GeometryTD.Entity
{
public class Player : EntityBase
{
private float _speed;
private InputComponent _inputComponent;
private MovementComponent _movementComponent;
protected override void OnInit(object userData)
{
base.OnInit(userData);
_inputComponent = GetComponent<InputComponent>();
_movementComponent = GetComponent<MovementComponent>();
}
protected override void OnShow(object userData)
{
base.OnShow(userData);
if (userData is PlayerData playerData)
{
_speed = playerData.Speed;
}
_inputComponent.OnInit();
_inputComponent.SetListening(true);
_movementComponent.OnInit(_speed, this.CachedTransform);
_movementComponent.SetMove(true);
}
protected override void OnUpdate(float elapseSeconds, float realElapseSeconds)
{
base.OnUpdate(elapseSeconds, realElapseSeconds);
_inputComponent.OnUpdate(elapseSeconds, realElapseSeconds);
_movementComponent.SetDirection(_inputComponent.Direction);
_movementComponent.OnUpdate(elapseSeconds, realElapseSeconds);
}
protected override void OnHide(bool isShutdown, object userData)
{
_inputComponent.SetListening(false);
_movementComponent.SetMove(false);
base.OnHide(isShutdown, userData);
}
}
}