// using System.Collections; // using UnityEngine; // using UnityEngine.AddressableAssets; // using UnityEngine.InputSystem; // using UnityEngine.Serialization; // // namespace DDD // { // public class RestaurantPlayer : MonoBehaviour // { // #region Variables // // private RestaurantPlayerDataSo _playerData; // private RestaurantPlayerView _playerView; // // private InputAction _moveAction; // private InputAction _dashAction; // private Coroutine _dashInstance; // // private Vector3 _inputDirection; // private Vector3 _currentDirection = Vector3.back; // // public bool IsMoving; // public bool IsDashing; // public bool IsDashCoolDownActive; // // private float _finalSpeed; // // private PlayerStateMachine _stateMachine; // // #endregion // // // Unity events // // #region Unity events // // private void Awake() // { // _playerData = Addressables.LoadAssetAsync("RestaurantPlayerDataSo").WaitForCompletion(); // _playerView = GetComponent(); // } // // private void Start() // { // _moveAction = InputManager.Instance.GetAction(InputActionMaps.Restaurant, nameof(RestaurantActions.Move)); // _dashAction = InputManager.Instance.GetAction(InputActionMaps.Restaurant, nameof(RestaurantActions.Dash)); // // _moveAction.performed += OnMove; // _moveAction.canceled += OnMove; // _dashAction.performed += OnDash; // // _stateMachine = new PlayerStateMachine(); // ChangeState(new IdleState(this, _playerView)); // } // // //public CellManager cellManager; // private void Update() // { // _stateMachine.Update(); // // FlipVisualLook(); // // //UpdateCell // //cellManager.SetupCell(transform.position); // } // // private void FixedUpdate() // { // if (!CanMove()) return; // // Move(); // } // // private void OnDestroy() // { // _moveAction.performed -= OnMove; // _moveAction.canceled -= OnMove; // _dashAction.performed -= OnDash; // } // // #endregion // // // Methods // #region Methods // // public void SetCurrentDirection(Vector3 normalDirection) // { // if (normalDirection == Vector3.zero) return; // // _currentDirection = normalDirection; // } // // private void FlipVisualLook() // { // Vector3 localScale = _playerView.GetLocalScale(); // localScale.x = _currentDirection.x switch // { // > 0.01f => -Mathf.Abs(localScale.x), // < -0.01f => Mathf.Abs(localScale.x), // _ => localScale.x // }; // _playerView.SetLocalScale(localScale); // } // // public void OnMove(InputAction.CallbackContext context) // { // var movementInput = _moveAction.ReadValue(); // _inputDirection = new Vector3(movementInput.x, 0, movementInput.y).normalized; // } // // public bool CanMove() // { // return _playerData.IsMoveEnabled && !IsDashing; // } // // public void Move() // { // SetCurrentDirection(_inputDirection); // IsMoving = _inputDirection != Vector3.zero; // // var finalVelocity = _inputDirection * _playerData.MoveSpeed; // _playerView.SetVelocity(finalVelocity); // } // // public void OnDash(InputAction.CallbackContext context) // { // if (!CanDash()) return; // // Dash(); // } // // public bool CanDash() // { // return _playerData.IsDashEnabled && !IsDashing && !IsDashCoolDownActive; // } // // public void Dash() // { // Utils.StartUniqueCoroutine(this, ref _dashInstance, DashCoroutine()); // } // // private IEnumerator DashCoroutine() // { // IsDashing = true; // IsDashCoolDownActive = true; // _playerView.PlayDashParticle(); // // AudioManager.Instance.PlaySfx(_playerData.DashSfxName); // // var dashDirection = _inputDirection; // if (dashDirection == Vector3.zero) // { // dashDirection = _currentDirection; // } // // var elapsedTime = 0f; // while (elapsedTime <= _playerData.DashTime) // { // var finalVelocity = dashDirection * _playerData.DashSpeed; // _playerView.SetVelocity(finalVelocity); // // elapsedTime += Time.fixedDeltaTime; // yield return new WaitForFixedUpdate(); // } // // EndDash(_playerData.DashCooldown); // } // // public void EndDash(float dashCooldown = float.PositiveInfinity) // { // Utils.EndUniqueCoroutine(this, ref _dashInstance); // _playerView.SetVelocity(Vector3.zero); // IsDashing = false; // // if (float.IsPositiveInfinity(dashCooldown)) // { // dashCooldown = _playerData.DashCooldown; // } // // // TODO : ui 연동 // StartCoroutine(Utils.CoolDownCoroutine(dashCooldown, () => IsDashCoolDownActive = false)); // } // // public void ChangeState(IStateMachine stateMachine) // { // _stateMachine.ChangeState(stateMachine); // } // // #endregion // } // }