// The function called when edit button is pressed public void handleEditButtonPressed() { GameObject instanceEditor = (GameObject)Instantiate(prefabedEditor, transform.parent.parent.parent.parent.parent); CreateRulePageSix instanceScript = instanceEditor.GetComponent <CreateRulePageSix>(); instanceScript.oldBanner = this; // populate num of syllable and accent instanceScript.syllableNum = format.numOfSyllable; instanceScript.holderOfSylNum.text = format.numOfSyllable.ToString(); instanceScript.aFormat = format; // populate the accents if (format.accentRules != null && format.accentRules.Length > 0) { instanceScript.accentNum = format.accentRules.Length; instanceScript.holderOfAccNum.text = format.accentRules.Length.ToString(); instanceScript.accentNum = format.accentRules.Length; foreach (WordFormat.AccentRule ar in format.accentRules) { GameObject newAccentRuleItem = (GameObject)Instantiate(instanceScript.prefabedOneAccent, instanceScript.accentPanel.transform); AddAccentPageSix accentScript = newAccentRuleItem.transform.GetComponent <AddAccentPageSix>(); // if count back if (ar.backword) { accentScript.coundBack.value = 1; } else { accentScript.coundBack.value = 0; } Debug.Log(accentScript.coundBack.value); // positions accentScript.holder.text = ar.position.ToString(); // accent types if (ar.accents.Length > 1) { string commonCon = null, commonLvl = null; bool findUniqueCon = false, findUniqueLvl = false; foreach (AccentPhone ap in ar.accents) { if (commonCon == null) { commonCon = ap.Contour; commonLvl = ap.Level; } else { if (!commonCon.Equals(ap.Contour)) { findUniqueCon = true; } if (!commonLvl.Equals(ap.Level)) { findUniqueLvl = true; } } } if (findUniqueLvl && findUniqueCon) { accentScript.accentType.value = accentScript.accentType.options.Count; } else { if (findUniqueCon) { accentScript.accentType.value = findValueFromDropDown(accentScript.accentType, commonLvl); } else { accentScript.accentType.value = findValueFromDropDown(accentScript.accentType, commonCon); } } } else if (ar.accents.Length == 1) { accentScript.accentType.value = findValueFromDropDown(accentScript.accentType, ar.accents[0].IPA); } } } // populate affix if (!format.arabicStyle) { if (format.specialLeading != null) { instanceScript.specialAffixToggle.isOn = true; instanceScript.specialAffixPanel.SetActive(true); instanceScript.specialPrefixToggle.isOn = true; instanceScript.prefixPhoneme = new Phoneme(); instanceScript.prefixPhoneme.addPhone(format.specialLeading); // specialPrefixIPA, specialSuffixIPA, specialPrefixLetters instanceScript.specialPrefixIPA.text = instanceScript.prefixPhoneme.getIPA(); instanceScript.specialPrefixLetters.text = instanceScript.prefixPhoneme.letters; } if (format.specialEnding != null) { instanceScript.specialAffixToggle.isOn = true; instanceScript.specialAffixPanel.SetActive(true); instanceScript.specialSuffixToggle.isOn = true; instanceScript.suffixPhoneme = new Phoneme(); instanceScript.suffixPhoneme.addPhone(format.specialEnding); // specialPrefixIPA, specialSuffixIPA, specialPrefixLetters instanceScript.specialSuffixIPA.text = instanceScript.suffixPhoneme.getIPA(); instanceScript.specialSuffixLetters.text = instanceScript.suffixPhoneme.letters; } } // populate special phone if (!format.arabicStyle) { if (format.specialVowel != null && format.specialVowel.Length > 0) { instanceScript.specialPhoneToggle.isOn = true; instanceScript.specialPhonePanel.SetActive(true); instanceScript.specialVowelToggle.isOn = true; string totalIPA = "", totalLet = ""; instanceScript.specialPickedVowel = new Phoneme[format.specialVowel.Length]; for (int i = 0; i < format.specialVowel.Length; i++) { if (i != 0) { totalIPA += " ,"; totalLet += " ,"; } instanceScript.specialPickedVowel[i] = new Phoneme(); instanceScript.specialPickedVowel[i].addPhone(format.specialVowel[i]); totalIPA += instanceScript.specialPickedVowel[i].getIPA(); totalLet += instanceScript.specialPickedVowel[i].letters; } //specialVowelIPA, specialConsonantIPA, specialVowelLetters, specialConsonantLetters; instanceScript.specialVowelIPA.text = totalIPA; instanceScript.specialVowelLetters.text = totalLet; } if (format.specialConsonant != null && format.specialConsonant.Length > 0) { instanceScript.specialPhoneToggle.isOn = true; instanceScript.specialPhonePanel.SetActive(true); instanceScript.specialConsonantToggle.isOn = true; string totalIPA = "", totalLet = ""; instanceScript.specialPickedConsonant = new Phoneme[format.specialConsonant.Length]; for (int i = 0; i < format.specialConsonant.Length; i++) { if (i != 0) { totalIPA += " ,"; totalLet += " ,"; } instanceScript.specialPickedConsonant[i] = new Phoneme(); instanceScript.specialPickedConsonant[i].addPhone(format.specialConsonant[i]); totalIPA += instanceScript.specialPickedConsonant[i].getIPA(); totalLet += instanceScript.specialPickedConsonant[i].letters; } //specialVowelIPA, specialConsonantIPA, specialVowelLetters, specialConsonantLetters; instanceScript.specialConsonantIPA.text = totalIPA; instanceScript.specialConsonantLetters.text = totalLet; } } // populate arabic style if (format.arabicStyle) { instanceScript.arabicFormatToggle.isOn = true; instanceScript.arabicFormatContent.SetActive(true); instanceScript.useSemivoweledConsonant.isOn = format.consonantWithSemivowel; instanceScript.useClusteredConsonant.isOn = format.consonantCluster; while (instanceScript.arabicFormatContent.transform.childCount > 0) { Transform tem = instanceScript.arabicFormatContent.transform.GetChild(0); tem.parent = null; Destroy(tem.gameObject); } foreach (Phoneme vp in format.vowelHolders) { GameObject newPickedVowelItem = (GameObject)Instantiate(instanceScript.prefabedOneVowel, instanceScript.arabicFormatContent.transform); ToBePickedScript pickedScript = newPickedVowelItem.transform.GetComponent <ToBePickedScript>(); pickedScript.aVowelPhoneme = new Phoneme(); pickedScript.aVowelPhoneme.addPhone(vp); pickedScript.IPA.text = vp.getIPA(); pickedScript.letter.text = vp.letters; } } }
// Save the newly created rule public void onSaveButtonPressed() { aFormat = new WordFormat(); aFormat.numOfSyllable = syllableNum; if (arabicFormatToggle.isOn) { aFormat.arabicStyle = true; aFormat.consonantWithSemivowel = useSemivoweledConsonant.isOn; aFormat.consonantCluster = useClusteredConsonant.isOn; List <Phoneme> forVowelHolder = new List <Phoneme>(); for (int i = 0; i < arabicFormatContent.transform.childCount; i++) { ToBePickedScript script = arabicFormatContent.transform.GetChild(i).GetComponent <ToBePickedScript>(); if (script.aVowelPhoneme == null) { aFormat.arabicStyle = false; aFormat.consonantWithSemivowel = false; aFormat.consonantCluster = false; break; } forVowelHolder.Add(script.aVowelPhoneme); } aFormat.vowelHolders = forVowelHolder.ToArray(); } else { aFormat.arabicStyle = false; // Get accent rules if (accentNum > 0) { List <WordFormat.AccentRule> aList = new List <WordFormat.AccentRule>(); for (int i = 0; i < accentPanel.transform.childCount; i++) { AddAccentPageSix script = accentPanel.transform.GetChild(i).GetComponent <AddAccentPageSix>(); WordFormat.AccentRule wfar = new WordFormat.AccentRule(); if (script.coundBack.options.ToArray()[script.coundBack.value].text.Equals("Backward")) { wfar.backword = true; } else { wfar.backword = false; } try { if (script.positionField.text.Equals("")) { wfar.position = int.Parse(script.holder.text); } else { wfar.position = int.Parse(script.positionField.text); } if (wfar.position > syllableNum) { continue; } Manager manager = UnityEngine.Object.FindObjectOfType <Manager>(); LanguageManager languageManager = manager.languageManager; AccentPhone[] accents = languageManager.accents; if (script.accentType.value.Equals("all")) { wfar.accents = accents; } else { List <AccentPhone> potentialAccent = new List <AccentPhone>(); foreach (AccentPhone actp in accents) { string value = script.accentType.options.ToArray()[script.accentType.value].text; string IPA = actp.IPA; string contour = actp.Contour; string level = actp.Level; if (value.Equals(IPA) || value.Equals(contour) || value.Equals(level)) { potentialAccent.Add(actp); } } wfar.accents = potentialAccent.ToArray(); } aList.Add(wfar); } catch (Exception e) { continue; } } aFormat.accentRules = aList.ToArray(); } // Get special affix if (specialAffixToggle.isOn) { if (specialPrefixToggle.isOn && prefixPhoneme != null && prefixPhoneme.phones.Length > 0) { aFormat.specialLeading = prefixPhoneme; } if (specialSuffixToggle.isOn && suffixPhoneme != null && suffixPhoneme.phones.Length > 0) { aFormat.specialEnding = suffixPhoneme; } } // Get special phone if (specialPhoneToggle.isOn) { if (specialVowelToggle.isOn && specialPickedVowel != null && specialPickedVowel.Length > 0) { aFormat.specialVowel = specialPickedVowel; } if (specialConsonantToggle.isOn && specialPickedConsonant != null && specialPickedConsonant.Length > 0) { aFormat.specialConsonant = specialPickedConsonant; } } // Create a rule banner // prefabedRuleBanner // RuleBannerPageSix } if (oldBanner != null) { oldBanner.format = aFormat; oldBanner.description.text = aFormat.getDescription(); } if (oldBanner == null && fromThisPanel != null) { GameObject instanceBanner = (GameObject)Instantiate(prefabedRuleBanner, fromThisPanel.transform); RuleBannerPageSix instanceScript = instanceBanner.GetComponent <RuleBannerPageSix>(); instanceScript.format = aFormat; instanceScript.description.text = aFormat.getDescription(); } Destroy(this.transform.gameObject); }