public void CatchBallAction(GameObject actionUser) { //CATCHER TURN GameObject catcher = TeamUtils.GetPlayerTeamMember(PlayerFieldPositionEnum.CATCHER, TeamUtils.GetPlayerIdFromPlayerFieldPosition(PlayerFieldPositionEnum.CATCHER)); PlayerStatus catcherStatusScript = PlayerUtils.FetchPlayerStatusScript(catcher); CatcherBehaviour genericCatcherBehaviourScript = ((CatcherBehaviour)PlayerUtils.FetchCorrespondingPlayerBehaviourScript(catcher, catcherStatusScript)); genericCatcherBehaviourScript.CalculateCatcherColliderInterraction(PitcherGameObject, ballGameObject, ballControllerScript); }
// Update is called once per frame void Update() { if (CommandMenuManager.isMenuDisplayEnabled && !TargetSelectionManager.IsActivated) { PlayerAbilities playerAbilitiesScript = null; switch (this.TurnState) { case TurnStateEnum.STANDBY: break; case TurnStateEnum.PITCHER_TURN: GameObject pitcher = TeamUtils.GetPlayerTeamMember(PlayerFieldPositionEnum.PITCHER, TeamUtils.GetPlayerIdFromPlayerFieldPosition(PlayerFieldPositionEnum.PITCHER)); playerAbilitiesScript = PlayerUtils.FetchPlayerAbilitiesScript(pitcher); break; case TurnStateEnum.BATTER_TURN: GameObject batter = TeamUtils.GetPlayerTeamMember(PlayerFieldPositionEnum.BATTER, TeamUtils.GetPlayerIdFromPlayerFieldPosition(PlayerFieldPositionEnum.BATTER)); playerAbilitiesScript = PlayerUtils.FetchPlayerAbilitiesScript(batter); break; case TurnStateEnum.RUNNER_TURN: GameObject runner = this.GetNextRunner(); if (runner != null) { playerAbilitiesScript = PlayerUtils.FetchPlayerAbilitiesScript(runner); } break; case TurnStateEnum.CATCHER_TURN: GameObject catcher = TeamUtils.GetPlayerTeamMember(PlayerFieldPositionEnum.CATCHER, TeamUtils.GetPlayerIdFromPlayerFieldPosition(PlayerFieldPositionEnum.CATCHER)); playerAbilitiesScript = PlayerUtils.FetchPlayerAbilitiesScript(catcher); break; case TurnStateEnum.FIELDER_TURN: GameObject fielder = TeamUtils.GetPlayerTeamMember(CurrentFielderTypeTurn, TeamUtils.GetPlayerIdFromPlayerFieldPosition(CurrentFielderTypeTurn)); playerAbilitiesScript = PlayerUtils.FetchPlayerAbilitiesScript(fielder); break; default: break; } if (playerAbilitiesScript != null) { CameraController.FocusOnPlayer(playerAbilitiesScript.gameObject.transform); CommandMenuManager.GenerateCommandMenu(playerAbilitiesScript); } } }
public void HitBallAction(GameObject actionUser) { //BATTER TURN GameObject batter = TeamUtils.GetPlayerTeamMember(PlayerFieldPositionEnum.BATTER, TeamUtils.GetPlayerIdFromPlayerFieldPosition(PlayerFieldPositionEnum.BATTER)); BatterBehaviour batterBehaviourScript = PlayerUtils.FetchBatterBehaviourScript(batter); batterBehaviourScript.IsReadyToSwing = true; batterBehaviourScript.IsSwingHasFinished = false; if (PlayerUtils.HasBatterPosition(batter)) { PlayerStatus playerStatusScript = PlayerUtils.FetchPlayerStatusScript(batter); batterBehaviourScript.CalculateBatterColliderInterraction(PitcherGameObject, BallControllerScript, playerStatusScript); } }
private void OnTriggerStay2D(Collider2D collision) { if (ColliderUtils.HasBallCollided(collision) && !GameData.isPaused) { GameObject ball = collision.gameObject; BallController ballControllerScript = BallUtils.FetchBallControllerScript(ball); if (ballControllerScript.IsHit) { timeElapsed += Time.deltaTime; if (timeElapsed >= TIME_TO_WAIT_IN_FOUL_ZONE) { Debug.Log("the ball is foul"); timeElapsed = 0; DialogBoxManager dialogBoxManagerScript = GameUtils.FetchDialogBoxManager(); dialogBoxManagerScript.DisplayDialogAndTextForGivenAmountOfTime(1f, false, "FOUL!!"); PlayersTurnManager playersTurnManager = GameUtils.FetchPlayersTurnManager(); GameObject pitcher = TeamUtils.GetPlayerTeamMember(PlayerFieldPositionEnum.PITCHER, TeamUtils.GetPlayerIdFromPlayerFieldPosition(PlayerFieldPositionEnum.PITCHER)); GameManager gameManager = GameUtils.FetchGameManager(); GameObject currentBatter = gameManager.AttackTeamBatterListClone.First(); BatterBehaviour currentBatterBehaviour = PlayerUtils.FetchBatterBehaviourScript(currentBatter); GameObject bat = currentBatterBehaviour.EquipedBat; currentBatterBehaviour.FoulOutcomeCount += 1; currentBatter.transform.rotation = Quaternion.identity; bat.transform.position = FieldUtils.GetBatCorrectPosition(currentBatter.transform.position); bat.transform.rotation = Quaternion.Euler(0f, 0f, -70f); gameManager.ReinitPitcher(pitcher); gameManager.ReturnBallToPitcher(ballControllerScript.gameObject); gameManager.ReinitRunners(gameManager.AttackTeamRunnerList); ballControllerScript.IsInFoulState = false; playersTurnManager.TurnState = TurnStateEnum.PITCHER_TURN; PlayersTurnManager.IsCommandPhase = true; } } } }
public void CalculateCatcherColliderInterraction(GameObject pitcherGameObject, GameObject ballGameObject, BallController ballControllerScript) { GameManager gameManager = GameUtils.FetchGameManager(); GameObject currentBatter = gameManager.AttackTeamBatterListClone.First(); BatterBehaviour currentBatterBehaviour = PlayerUtils.FetchBatterBehaviourScript(currentBatter); GameObject bat = currentBatterBehaviour.EquipedBat; PlayerStatus currentBatterStatus = PlayerUtils.FetchPlayerStatusScript(currentBatter); PlayersTurnManager playersTurnManager = GameUtils.FetchPlayersTurnManager(); GameObject pitcher = TeamUtils.GetPlayerTeamMember(PlayerFieldPositionEnum.PITCHER, TeamUtils.GetPlayerIdFromPlayerFieldPosition(PlayerFieldPositionEnum.PITCHER)); float catchSuccesRate = ActionCalculationUtils.CalculateCatchSuccessRate(this.gameObject, pitcherGameObject); if (!ActionCalculationUtils.HasActionSucceeded(catchSuccesRate)) { ballControllerScript.Target = null; ballControllerScript.IsPitched = false; ballControllerScript.Target = FieldUtils.GetTileCenterPositionInGameWorld(FieldUtils.GetCathcherOutBallZonePosition()); if (currentBatterBehaviour.StrikeOutcomeCount == 3) { RunnerBehaviour runnerBehaviour = currentBatterBehaviour.ConvertBatterToRunner(currentBatterStatus); currentBatterBehaviour.AddRunnerAbilitiesToBatter(currentBatter); //Not realy hit but rather not catch properly!!!!! ballControllerScript.IsHit = true; currentBatterStatus.IsAllowedToMove = true; runnerBehaviour.EnableMovement = true; this.SetUpNewBatter(gameManager); bat.GetComponent <CapsuleCollider2D>().enabled = false; StartCoroutine(this.WaitForPeriod(4f)); } else { gameManager.ReinitPitcher(pitcher); gameManager.ReturnBallToPitcher(ballControllerScript.gameObject); gameManager.ReinitRunners(gameManager.AttackTeamRunnerList); currentBatter.transform.rotation = Quaternion.identity; bat.transform.position = FieldUtils.GetBatCorrectPosition(currentBatter.transform.position); bat.transform.rotation = Quaternion.Euler(0f, 0f, -70f); playersTurnManager.TurnState = TurnStateEnum.PITCHER_TURN; PlayersTurnManager.IsCommandPhase = true; } } else { bool isInWalkState = false; ballGameObject.SetActive(false); ballControllerScript.CurrentHolder = this.gameObject; if (currentBatterBehaviour.StrikeOutcomeCount == 3) { currentBatter.SetActive(false); gameManager.AttackTeamBatterListClone.Remove(currentBatter); this.SetUpNewBatter(gameManager); currentBatterBehaviour.StrikeOutcomeCount = 0; currentBatterBehaviour.BallOutcomeCount = 0; gameManager.BatterOutCount++; } else if (currentBatterBehaviour.BallOutcomeCount == 4) { isInWalkState = true; RunnerBehaviour newRunnerBehaviour = currentBatterBehaviour.ConvertBatterToRunner(currentBatterStatus); currentBatterBehaviour.AddRunnerAbilitiesToBatter(currentBatter); newRunnerBehaviour.IsInWalkState = isInWalkState; currentBatterStatus.IsAllowedToMove = true; newRunnerBehaviour.EnableMovement = true; currentBatterBehaviour.StrikeOutcomeCount = 0; currentBatterBehaviour.BallOutcomeCount = 0; this.SetUpNewBatter(gameManager); } else { currentBatter.transform.rotation = Quaternion.identity; bat.transform.position = FieldUtils.GetBatCorrectPosition(currentBatter.transform.position); bat.transform.rotation = Quaternion.Euler(0f, 0f, -70f); } gameManager.ReinitPitcher(pitcher); gameManager.ReturnBallToPitcher(ballControllerScript.gameObject); gameManager.ReinitRunners(gameManager.AttackTeamRunnerList); bool isInningHalfEnd = gameManager.BatterOutCount == 3; if (isInningHalfEnd) { //Team switch attack/defense gameManager.BatterOutCount = 0; gameManager.ProcessNextInningHalf(); } if (!isInWalkState && !isInningHalfEnd) { playersTurnManager.TurnState = TurnStateEnum.PITCHER_TURN; PlayersTurnManager.IsCommandPhase = true; } } }