55 lines
1.6 KiB
C#
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);
|
|
}
|
|
}
|
|
} |