private void OnPlayerStateChange(PlayerStateController.PlayerStates newPlayerState) { switch (newPlayerState) { case PlayerStateController.PlayerStates.Stomp: break; case PlayerStateController.PlayerStates.Running: break; } _currentPlayerState = newPlayerState; }
private bool IsStateChangeAllowed(PlayerStateController.PlayerStates newState) { bool returnValue = false; switch (_currentPlayerState) { case PlayerStateController.PlayerStates.Idle: if (newState == PlayerStateController.PlayerStates.Running) { returnValue = true; } break; case PlayerStateController.PlayerStates.Running: returnValue = true; break; case PlayerStateController.PlayerStates.Dead: if (newState == PlayerStateController.PlayerStates.Idle) { returnValue = true; } break; case PlayerStateController.PlayerStates.Attack: if (newState == PlayerStateController.PlayerStates.Running || newState == PlayerStateController.PlayerStates.Dead) { returnValue = true; } break; case PlayerStateController.PlayerStates.Stomp: if (newState == PlayerStateController.PlayerStates.Running || newState == PlayerStateController.PlayerStates.Dead) { returnValue = true; } break; case PlayerStateController.PlayerStates.Teleport: if (newState == PlayerStateController.PlayerStates.Running || newState == PlayerStateController.PlayerStates.Dead) { returnValue = true; } break; } return(returnValue); }
private void OnPlayerStateChange(PlayerStateController.PlayerStates newState) { if (!IsStateChangeAllowed(newState)) { return; } switch (newState) { case PlayerStateController.PlayerStates.Idle: break; case PlayerStateController.PlayerStates.Running: break; case PlayerStateController.PlayerStates.Dead: break; case PlayerStateController.PlayerStates.Attack: AttackDisabled(AttackCooldown); break; case PlayerStateController.PlayerStates.Stomp: RaycastHit2D hit = Physics2D.Raycast(RaycastPosition.transform.position, Vector2.right, 5); if (hit != null && hit.transform.tag == "Enemy") { Vector3 buttSmashPosition = hit.transform.position; buttSmashPosition.y += ButtSmashHeight; transform.position = buttSmashPosition; StompDisabled(StompCooldown); } else { Debug.Log(hit.transform.tag); } break; case PlayerStateController.PlayerStates.Teleport: TeleportDisabled(TeleportCooldown); break; } _previousPlayerState = _currentPlayerState; _currentPlayerState = newState; }
bool checkIfAbortOnStateCondition(PlayerStateController.PlayerStates newState) { bool returnVal = false; switch (newState) { case PlayerStateController.PlayerStates.idle: break; case PlayerStateController.PlayerStates.left: break; case PlayerStateController.PlayerStates.right: break; case PlayerStateController.PlayerStates.jump: float nextAllowedJumpTime = PlayerStateController.stateDelayTimer[(int)PlayerStateController.PlayerStates.jump]; if (nextAllowedJumpTime == 0.0f || nextAllowedJumpTime > Time.time) { returnVal = true; } break; case PlayerStateController.PlayerStates.landing: break; case PlayerStateController.PlayerStates.falling: break; case PlayerStateController.PlayerStates.kill: break; case PlayerStateController.PlayerStates.resurrect: break; case PlayerStateController.PlayerStates.firingWeapon: if (PlayerStateController.stateDelayTimer[(int)PlayerStateController.PlayerStates.firingWeapon] > Time.time) { returnVal = true; } break; } return(returnVal); }
void onPlayerStateChange(PlayerStateController.PlayerStates newState) { currentPlayerState = newState; }
public void onStateChange(PlayerStateController.PlayerStates newState) { if (newState == currentState) { return; } if (!checkForValidStatePair(newState)) { return; } if (checkIfAbortOnStateCondition(newState)) { return; } switch (newState) { case PlayerStateController.PlayerStates.idle: playerAnimator.SetBool("Walking", false); break; case PlayerStateController.PlayerStates.left: case PlayerStateController.PlayerStates.right: playerAnimator.SetBool("Walking", true); break; case PlayerStateController.PlayerStates.jump: if (playerHasLanded) { float jumpDirection = 0.0f; if (currentState == PlayerStateController.PlayerStates.left) { jumpDirection = -1.0f; } else if (currentState == PlayerStateController.PlayerStates.right) { jumpDirection = 1.0f; } else { jumpDirection = 0.0f; } body.AddForce(new Vector2(jumpDirection * playerJumpForceHorizontal, playerJumpForceVertical)); playerHasLanded = false; PlayerStateController.stateDelayTimer[(int)PlayerStateController.PlayerStates.jump] = 0f; } break; case PlayerStateController.PlayerStates.landing: playerHasLanded = true; PlayerStateController.stateDelayTimer[(int)PlayerStateController.PlayerStates.jump] = Time.time + 0.1f; break; case PlayerStateController.PlayerStates.falling: PlayerStateController.stateDelayTimer[(int)PlayerStateController.PlayerStates.jump] = 0f; break; case PlayerStateController.PlayerStates.kill: break; case PlayerStateController.PlayerStates.resurrect: transform.position = playerRespawnPoint.transform.position; transform.rotation = Quaternion.identity; body.velocity = Vector2.zero; break; case PlayerStateController.PlayerStates.firingWeapon: GameObject newBullet = (GameObject)Instantiate(bulletPrefab); newBullet.transform.position = bulletSpawnTransform.position; PlayerBulletController bullCon = newBullet.GetComponent <PlayerBulletController>(); bullCon.player = gameObject; bullCon.launchBullet(); onStateChange(currentState); PlayerStateController.stateDelayTimer[(int)PlayerStateController.PlayerStates.firingWeapon] = Time.time + 0.25f; break; } previousState = currentState; currentState = newState; }
bool checkForValidStatePair(PlayerStateController.PlayerStates newState) { bool returnVal = false; switch (currentState) { case PlayerStateController.PlayerStates.idle: returnVal = true; break; case PlayerStateController.PlayerStates.left: returnVal = true; break; case PlayerStateController.PlayerStates.right: returnVal = true; break; case PlayerStateController.PlayerStates.jump: if (newState == PlayerStateController.PlayerStates.landing || newState == PlayerStateController.PlayerStates.kill || newState == PlayerStateController.PlayerStates.firingWeapon) { returnVal = true; } else { returnVal = false; } break; case PlayerStateController.PlayerStates.landing: if (newState == PlayerStateController.PlayerStates.left || newState == PlayerStateController.PlayerStates.right || newState == PlayerStateController.PlayerStates.idle || newState == PlayerStateController.PlayerStates.firingWeapon) { returnVal = true; } else { returnVal = false; } break; case PlayerStateController.PlayerStates.kill: if (newState == PlayerStateController.PlayerStates.resurrect) { returnVal = true; } else { returnVal = false; } break; case PlayerStateController.PlayerStates.resurrect: if (newState == PlayerStateController.PlayerStates.idle) { returnVal = true; } else { returnVal = false; } break; case PlayerStateController.PlayerStates.falling: returnVal = true; break; case PlayerStateController.PlayerStates.firingWeapon: returnVal = true; break; } return(returnVal); }
void onPlayerStateChange(PlayerStateController.PlayerStates newState) { currentPlayerState = newState; }
public void onStateChange(PlayerStateController.PlayerStates newState) { if (newState == currentState) return; if (!checkForValidStatePair(newState)) return; if (checkIfAbortOnStateCondition(newState)) return; switch (newState) { case PlayerStateController.PlayerStates.idle: playerAnimator.SetBool("Walking", false); break; case PlayerStateController.PlayerStates.left: case PlayerStateController.PlayerStates.right: playerAnimator.SetBool("Walking", true); break; case PlayerStateController.PlayerStates.jump: if (playerHasLanded) { float jumpDirection = 0.0f; if (currentState == PlayerStateController.PlayerStates.left) jumpDirection = -1.0f; else if (currentState == PlayerStateController.PlayerStates.right) jumpDirection = 1.0f; else jumpDirection = 0.0f; body.AddForce(new Vector2(jumpDirection * playerJumpForceHorizontal, playerJumpForceVertical)); playerHasLanded = false; PlayerStateController.stateDelayTimer[(int)PlayerStateController.PlayerStates.jump] = 0f; } break; case PlayerStateController.PlayerStates.landing: playerHasLanded = true; PlayerStateController.stateDelayTimer[(int)PlayerStateController.PlayerStates.jump] = Time.time + 0.1f; break; case PlayerStateController.PlayerStates.falling: PlayerStateController.stateDelayTimer[(int)PlayerStateController.PlayerStates.jump] = 0f; break; case PlayerStateController.PlayerStates.kill: break; case PlayerStateController.PlayerStates.resurrect: transform.position = playerRespawnPoint.transform.position; transform.rotation = Quaternion.identity; body.velocity = Vector2.zero; break; case PlayerStateController.PlayerStates.firingWeapon: GameObject newBullet = (GameObject)Instantiate(bulletPrefab); newBullet.transform.position = bulletSpawnTransform.position; PlayerBulletController bullCon = newBullet.GetComponent<PlayerBulletController>(); bullCon.player = gameObject; bullCon.launchBullet(); onStateChange(currentState); PlayerStateController.stateDelayTimer[(int)PlayerStateController.PlayerStates.firingWeapon] = Time.time + 0.25f; break; } previousState = currentState; currentState = newState; }