private void AssignDecisionButtons(CharacterType char_type, ChineseEntry picked = null) { List <ChineseEntry> curr_entries = new List <ChineseEntry>(); if (picked != null) { curr_entries.Add(picked); } List <ChineseEntry> shuffled_entries = my_characters.RequestEntries(nbr_choices, studied_only: false); int i = 0; while (curr_entries.Count < nbr_choices) { ChineseEntry choice_entry = shuffled_entries[i]; curr_entries.Add(choice_entry); i++; } curr_entries = MyUtils.Shuffle(curr_entries); for (var j = 0; j < nbr_choices; j++) { ChineseEntry entry = curr_entries[j]; string button_text = GetEntryText(entry, char_type); decision_buttons[j].SetText(button_text); } }
private string GetEntryText(ChineseEntry entry, CharacterType char_type) { string entry_text; switch (char_type) { case CharacterType.English: entry_text = entry.english; break; case CharacterType.Pinying: entry_text = entry.pinying; break; default: throw new System.Exception("Unknown char_type: " + char_type); } return(entry_text); }
// public static TextSource text_source = TextSource.HalfThreePigs; public List <ChineseEntry> ParseChineseEntries(string text_source) { word_entries = new List <String[]>(); chinese_entries = new List <ChineseEntry>(); if (use_anki_format) { word_entries = ParseStoryEntities(text_source); foreach (String[] word_entry in word_entries) { String raw_chinese_char = word_entry[1]; String raw_pinying = word_entry[2]; String raw_english = word_entry[3]; String parsed_chinese_char = Regex.Replace(raw_chinese_char, "<.*?>", ""); String parsed_english = Regex.Replace(Regex.Replace(raw_english, "•.*", ""), "<CC>", ""); ChineseEntry entry = new ChineseEntry(parsed_chinese_char, raw_pinying, parsed_english); chinese_entries.Add(entry); } } else { word_entries = MyUtils.ParseTextToSplitList(text_source, "\t", expected_length: 4, enforce_expected_length: true); foreach (String[] word_entry in word_entries) { String raw_chinese_char = word_entry[0]; String raw_pinying = word_entry[1]; String raw_english = word_entry[2]; String radical = word_entry[3]; // print(raw_chinese_char + " " + raw_pinying + " " + raw_english); ChineseEntry entry = new ChineseEntry(raw_chinese_char, raw_pinying, raw_english, radical); chinese_entries.Add(entry); } } return(chinese_entries); }