private void HandleInputOnce(PlayerInputData inputData)
 {
     if (inputData.inputTokens[6]) // Jump
     {
         inputData.EatInputToken(6);
         if (AdvancedMovement.CanStand(movementController)) // If can stand
         {
             if (!movementController.IsAirborne())
             {
                 stateMachine.ChangeState(playerController.jumpingState);
             }
         }
     }
     else if (inputData.inputTokens[3]) // Crouch
     {
         inputData.EatInputToken(3);
         if (!movementController.IsAirborne())
         {
             stateMachine.ChangeState(playerController.crouchingState);
         }
         else
         {
             stateMachine.ChangeState(playerController.fallingState);
         }
     }
 }
Exemple #2
0
    private void HandleInputOnce(PlayerInputData inputData)
    {
        WeaponType primaryWeapon = playerController.playerCharacterData.GetPrimaryWeapon();

        if (inputData.inputTokens[8]) // Light
        {
            inputData.EatInputToken(8);
            if (primaryWeapon != WeaponType.NONE)
            {
                stateMachine.ChangeState(playerController.lightActionState);
            }
        }
        else if (inputData.inputTokens[9]) // Medium
        {
            inputData.EatInputToken(9);
            if (primaryWeapon != WeaponType.NONE)
            {
                stateMachine.ChangeState(playerController.mediumActionState);
            }
        }
        else if (inputData.inputTokens[10]) // Heavy
        {
            inputData.EatInputToken(10);
            if (primaryWeapon != WeaponType.NONE)
            {
                stateMachine.ChangeState(playerController.heavyActionState);
            }
        }
        else if (inputData.inputTokens[6]) // Jump
        {
            inputData.EatInputToken(6);
            if (AdvancedMovement.CanStand(movementController)) // If can stand
            {
                IState prevState = stateMachine.PeekPreviousState();
                if (prevState == playerController.crouchingState)
                {
                    // If prev state was crouching, skip airborne check
                    stateMachine.ChangeState(playerController.jumpingState);
                }
                else if (!movementController.IsAirborne())
                {
                    stateMachine.ChangeState(playerController.jumpingState);
                }
            }
        }
        else if (inputData.inputTokens[3]) // Crouch
        {
            inputData.EatInputToken(3);
            if (!movementController.IsAirborne())
            {
                stateMachine.ChangeState(playerController.crouchingState);
            }
            else
            {
                stateMachine.ChangeState(playerController.fallingState);
            }
        }
    }
 private void HandleDashStop()
 {
     BasicMovement.StopAll(movementController);
     playerController.playerInputData.EatInputToken(7); // remove dash input token if present
     if (movementController.IsAirborne())               // if in the air
     {
         if (AdvancedMovement.CanStand(movementController))
         {
             stateMachine.ChangeState(playerController.fallingState); // fall
         }
         else
         {
             stateMachine.ChangeState(playerController.crouchingState); // crouch
         }
     }
     else if (AdvancedMovement.CanStand(movementController))// else if on the ground and can stand
     {
         BasicMovement.StopHorizontal(movementController);
         if (canSprint)                                                     // If player can sprint
         {
             stateMachine.ChangeState(playerController.sprintingState);     // sprint
         }
         else if (timeInSeconds >= PlayerTimings.PLAYER_DASH_TOTAL)         // if recovery is over
         {
             if (playerController.playerInputData.pressedInputs[3])         // if holding down (crouch)
             {
                 stateMachine.ChangeState(playerController.crouchingState); // crouch
             }
             else // if not holding down
             {
                 stateMachine.ChangeState(playerController.standingState); // stand
             }
         }
     }
     else
     {
         stateMachine.ChangeState(playerController.crouchingState); // crouch
     }
     return;
 }
    public void ExecutePhysics()
    {
        if (movementController.IsAirborne())
        {
            if (AdvancedMovement.CanStand(movementController))
            {
                stateMachine.ChangeState(playerController.fallingState); // Go to falling state
                return;
            }
        }
        if (!playerController.playerInputData.pressedInputs[3]) // crouch release
        {
            if (AdvancedMovement.CanStand(movementController))
            {
                stateMachine.ChangeState(playerController.standingState);
                return;
            }
        }

        HandleInput(playerController.playerInputData);
        HandleInputOnce(playerController.playerInputData);
    }
    private IState DetermineStateEnding()
    {
        IState prevState = stateMachine.PeekPreviousState();

        if (AdvancedMovement.CanStand(movementController))
        {
            if (prevState == playerController.crouchingState)
            {
                return(prevState);
            }
            else if (prevState == playerController.crouchingGuardState)
            {
                return(prevState);
            }
            else if (prevState == playerController.standingGuardState)
            {
                return(prevState);
            }
            else if (prevState == playerController.walkingState)
            {
                return(playerController.standingGuardState);
            }
            else if (movementController.IsAirborne())
            {
                return(playerController.fallingState);
            }
            else // default
            {
                return(playerController.standingState);
            }
        }
        else // if there is no room above the player's head
        {
            return(playerController.crouchingState); // crouch
        }
    }