Exemple #1
0
    internal void AttemptAction(Actionable pAction, MovementController pMovementController = null, Action pExternalActionWhenSuccessful = null, Action pExternalActionWhenFailed = null)
    {
        MovementController           = pMovementController;
        ExternalActionWhenSuccessful = pExternalActionWhenSuccessful;
        ExternalActionWhenFailed     = pExternalActionWhenFailed;
        ActionAfterFinishing         = pAction.OnFinishedAction;
        CurrentAction = pAction;
        var parameters = pAction.GetActionableParameters();

        if (parameters.ActionParticles != null)
        {
            ActionableParticles = Instantiate(parameters.ActionParticles, pAction.transform); //Start particles
            ActionableParticles.transform.rotation = Quaternion.LookRotation(Vector3.forward);
        }

        PlayActionSound();
        PlayAnimation();

        pAction.OnStartAction();
        var progressBar = Instantiate(ProgressBarPrefab);

        progressBar.transform.SetParent(Canvas.transform);
        ProgressBar = progressBar.transform.GetChild(0).GetComponent <Image>();
        TotalTime   = parameters.TimeToTakeAction;
        IsActioning = true;
        MovementController?.StopMovement();
    }