public void BeginEndOfLevelChallenge() { CurrentSceneBuildIndex = SceneManager.GetActiveScene().buildIndex; SceneManager.LoadScene("ChallengeMode"); GameManager.instance.CharactersCanMove = false; for (var i = 0; i < CollectedChallengeWords.Count; i++) { GameObject challengeWordObj = new GameObject(); Text challengeWordText = challengeWordObj.AddComponent <Text>(); challengeWordText.text = CollectedChallengeWords.ElementAt(i); challengeWordText.fontSize = 32; challengeWordText.alignment = TextAnchor.MiddleCenter; challengeWordText.color = Color.white; challengeWordText.font = GameManager.instance.WordFont; var challengeWordTextRectTransform = challengeWordText.GetComponent <RectTransform>(); challengeWordTextRectTransform.SetParent(GameManager.instance.Canvas.transform); challengeWordTextRectTransform.offsetMin = new Vector2(0, 0.5f); challengeWordTextRectTransform.offsetMax = new Vector2(0, 0.5f); challengeWordTextRectTransform.anchoredPosition = new Vector2((i + 1) * 80, 0); challengeWordTextRectTransform.localScale = new Vector3(1, 1, 1); challengeWordTextRectTransform.anchorMin = new Vector2(0, 0.5f); challengeWordTextRectTransform.anchorMax = new Vector2(0, 0.5f); challengeWordTextRectTransform.pivot = new Vector2(0, 0.5f); challengeWordTextRectTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, 64); challengeWordTextRectTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, 256); challengeWordObj.SetActive(true); challengeModeWords.AddLast(new ChallengeWord { Word = CollectedChallengeWords.ElementAt(i), ChallengeModeWordText = challengeWordText, IsCurrentWord = false, IsSelected = false }); } challengeModeWords.First.Value.IsSelected = true; ChallengeWord randomWord = getRandomChallengeModeWord(challengeModeWords); speakWord(randomWord); ChallengeMode = true; }
void RunChallengeMode() { if (LevelCompleted == false && ChallengeMode) { // select random challenge word if (!challengeModeWords.Any(w => w.IsCurrentWord)) { ChallengeWord randomWord = getRandomChallengeModeWord(challengeModeWords); randomWord.IsCurrentWord = true; speakWord(randomWord); } // var selectedWord = challengeModeWords.SingleOrDefault(c => c.IsSelected); // if word is not selected select one at random if (selectedWord == null) { getRandomChallengeModeWord(challengeModeWords).IsSelected = true; } // update coloring for text foreach (var node in challengeModeWords) { if (node.IsSelected) { node.ChallengeModeWordText.color = Color.cyan; } else { node.ChallengeModeWordText.color = Color.white; } } // Left if (Time.time > timestamp && Input.GetAxis("Horizontal") < 0.0f) { var selectedNode = challengeModeWords.Find(selectedWord); if (selectedNode.Previous != null) { selectedNode.Previous.Value.IsSelected = true; selectedWord.IsSelected = false; } timestamp = Time.time + timeBetweenChallengeSelect; } // right else if (Time.time > timestamp && Input.GetAxis("Horizontal") > 0.0f) { var selectedNode = challengeModeWords.Find(selectedWord); if (selectedNode.Next != null) { selectedNode.Next.Value.IsSelected = true; selectedWord.IsSelected = false; } timestamp = Time.time + timeBetweenChallengeSelect; } else if (Input.GetButtonDown("Submit")) { if (selectedWord.IsCurrentWord) { WindowsVoice.speak("That is correct!"); Destroy(selectedWord.ChallengeModeWordText); challengeModeWords.Remove(selectedWord); // Level has been completed LevelCompleted = !challengeModeWords.Any(); } else { WindowsVoice.speak("That is incorrect!"); } } } }
private void speakWord(ChallengeWord word) { WindowsVoice.speak($"Select the word {word.Word}"); }