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(); _movementComponent = GetComponent(); } 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); } } }