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); } } }
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 } }