private void Awake() { fakeBLE = fakeBLE.GetComponent <FakeBLE>(); tsc01 = new TopSpeedChallenge(TopSpeedImage, 30); msc01 = new MaintainSpeedChallenge(MaintainSpeedImage, 30, 20); tdc01 = new TotalDistanceChallenge(TotalDistanceImage, 30); //Not sure of value }
// Tracks the speed every second IEnumerator MaintainSpeedTracker(MaintainSpeedChallenge challenge, float time) { // Loops and calculate the time that has passed for (float deltaTime = 0; ; deltaTime = Time.time - time) { // Calculate the current speed float speed = CalculateSpeed(); // Check if the speed is correct and the time is achieved if (deltaTime >= challenge.Time && speed >= challenge.Speed) { StartCoroutine(MaintainSpeedTrigger(challenge)); yield break; } else if (speed >= challenge.Speed) { // speed is correct, time is not achieved, wait for a second and check again yield return(new WaitForSeconds(1)); } else { // Resets the challenges as the player failed challenge.Active = false; yield break; } } }
private void Awake() { // Need to find out how to change certain statuses //ChallengeData data = SaveSystem.LoadChallengeData(); //challengeStatuses = new bool[numChallenges]; // Initialize the challenges with certain stats tsc01 = new TopSpeedChallenge(TopSpeedImage, 20); msc01 = new MaintainSpeedChallenge(MaintainSpeedImage, 10, 30); rpc01 = new RacePlacementChallenge(RacePlacementImage, 3); tdc01 = new TotalDistanceChallenge(TotalDistanceImage, 1); //Not sure of value //RealTimeClient.Instance.RaceEnd += RaceEndTrigger; }
IEnumerator MaintainSpeedTrigger(MaintainSpeedChallenge challenge) { Debug.Log("MAINTAINSPEEDACHIEVED"); challenge.Achieved = true; challenge.Image.SetActive(true); challengeTitle.GetComponent <Text>().text = challenge.Title; challengeDescription.GetComponent <Text>().text = challenge.Description; challengePanel.SetActive(true); yield return(new WaitForSeconds(7)); challengePanel.SetActive(false); challenge.Image.SetActive(false); }
IEnumerator MaintainSpeedTracker(MaintainSpeedChallenge challenge, float time) { for (float deltaTime = 0; ; deltaTime = Time.time - time) { float speed = calculateSpeed(fakeBLE.rpm); if (deltaTime >= challenge.Time && speed >= challenge.Speed) { StartCoroutine(MaintainSpeedTrigger(challenge)); yield break; } else if (speed >= challenge.Speed) { Debug.Log("DeltaTime " + deltaTime); yield return(new WaitForSeconds(1)); } else { Debug.Log("Speed fail"); challenge.Active = false; yield break; } } }