/* * Action */ void FixedUpdate() { switch (currentAction) { case ActionState.Idle: if (watchBallLock) { currentAction = ActionState.Locking; } break; case ActionState.Locking: if (!watchBallLock) { currentAction = ActionState.UnLocking; } else { if (Hud.Locking()) { Ball.WatchBall.SetActive(true); currentAction = ActionState.Loading; } } break; case ActionState.UnLocking: if (watchBallLock) { currentAction = ActionState.Locking; } if (Hud.UnLocking()) { currentAction = ActionState.Idle; } break; case ActionState.Loading: if (!watchBall && !watchBallLock) { currentAction = ActionState.Firing; firingOrientation = Player.transform.eulerAngles.y; Ball.WatchBall.SetActive(false); } Club.Load(); Hud.SetPowerBarAmount(Club.LoadingAmount()); break; case ActionState.Firing: Hud.SetPowerBarAmount(0); Club.Fire(); if (!Ball.IsShooted() && Club.HasShooted()) //Shoot now { Ball.Shoot(Club.LoadingTime * Club.clubForceCoef, Club.clubAngle, firingOrientation); Hud.UpdateScore(Score++); } else if (Club.IsFired()) { currentAction = ActionState.Fired; AnalyticsGame.Shoot(); } break; case ActionState.Fired: if (Ball.IsOutOfBound()) { currentAction = ActionState.OutOfBound; break; } if (Ball.IsStopped()) { Hud.FadeOut(); currentAction = ActionState.MoveToTheBall; } break; case ActionState.Won: Ball.StopAndMove(Holes.CurrentHole.BeginPosition.transform.position); //Go to next hole //BallInfo.ShowInformation(Ball.transform.position, Localization.Hole); Hud.FadeOut(); currentAction = ActionState.MoveToTheBall; break; case ActionState.OutOfBound: BallInfo.ShowInformation(Ball.transform.position, Localization.OutOfZone); Ball.StopAndGetBackToOldPos(); Hud.UpdateScore(Score++); Hud.FadeOut(); currentAction = ActionState.MoveToTheBall; AnalyticsGame.OutOfBound(); break; case ActionState.MoveToTheBall: if (Hud.IsFadingIn()) { Bag.MoveToTheBall(Ball.transform.position, Holes.CurrentHole.transform.position); Player.transform.position = Ball.transform.position; Club.Reset(); SetWind(); Hud.EnableReticle(true); currentAction = ActionState.Idle; locked = false; } break; } }