private void NewPhrase() { var unshownPhrases = new List <Phrase>(); foreach (var phrase in phrases) { if (!phrase.Value) { unshownPhrases.Add(phrase.Key); } } if (unshownPhrases.Count == 0) { phrases.Clear(); foreach (var phrase in HorizonController.GetPhrases()) { phrases.Add(phrase, false); } NewPhrase(); return; } var selectedPhrase = unshownPhrases[Random.Range(0, unshownPhrases.Count)]; phrasePanel.ShowPhrase(ServiceLocator.Text.Get(selectedPhrase.ID)); phrases[selectedPhrase] = true; }