private void OnFinishedWithCurrentAction() { if ((_queuedAction.Action == CatAction.Dash && Dash.DashCooldownRemaining > 0) || (_queuedAction.Action == CatAction.Laser && Laser.LaserEyesCooldownRemaining > 0)) { _queuedAction = new DirectionalCatAction(CatAction.Moving, Vector3.zero); } StartCoroutine(TransitionToNextAction(_delays[_currentAction.Action][_queuedAction.Action], _actions[_queuedAction.Action](_queuedAction.Direction))); _currentAction = _queuedAction; _queuedAction = new DirectionalCatAction(CatAction.Moving, Vector3.zero); }
private void Update() { if (Application.isEditor && Input.GetKey("z") && Input.GetKey("v") && Input.GetKey("x")) { state.DashUnlocked = true; state.SlashUnlocked = true; state.RendUnlocked = true; state.LaserEyesUnlocked = true; } var direction = Vector3.ClampMagnitude(Vector3.Normalize(new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"))), 1f); if (state.DashUnlocked && Input.GetButtonDown("Dash")) { _queuedAction = new DirectionalCatAction(CatAction.Dash, direction); } else if (state.LaserEyesUnlocked && Input.GetButtonDown("FireLaser")) { _queuedAction = new DirectionalCatAction(CatAction.Laser, direction); } else if (state.SlashUnlocked && Input.GetButtonDown("Fire1")) { if (_currentAction.Action == CatAction.Dash) { _queuedAction = new DirectionalCatAction(CatAction.DashSlash, _currentAction.Direction); } else if (_currentAction.Action == CatAction.StandingSlash || _currentAction.Action == CatAction.MovingSlash) { _queuedAction = new DirectionalCatAction(direction == Vector3.zero ? CatAction.StandingDoubleSlash : CatAction.MovingDoubleSlash, direction); } else { _queuedAction = new DirectionalCatAction(direction == Vector3.zero ? CatAction.StandingSlash : CatAction.MovingSlash, direction); } } else if (state.RendUnlocked && Input.GetButtonDown("Fire2")) { if (_currentAction.Action == CatAction.Dash) { _queuedAction = new DirectionalCatAction(CatAction.DashRend, _currentAction.Direction); } else { _queuedAction = new DirectionalCatAction(direction == Vector3.zero ? CatAction.StandingRend : CatAction.MovingRend, direction); } } if (_currentAction.Action == CatAction.Moving && _queuedAction.Action != CatAction.Moving) { Movement.Stop(); OnFinishedWithCurrentAction(); } }