private void UpdateGenderedTermVariablesForCharacter(DynamicGenderCharacter character) { Pronoun?pronounOrNull = ReadPronounFromFungusVar(character.PronounVarName); if (!pronounOrNull.HasValue) { Debug.LogWarning("Unable to load Fungus variables for character: " + character.Name); return; } Pronoun pronoun = pronounOrNull.Value; Dictionary <GenderedTermType, string> genderedTermsByTermType = GenderedTermDictionary.GetGenderedTermsForPronoun(pronoun); foreach (KeyValuePair <GenderedTermType, string> gameScriptVarNamePair in character.GameScriptVarNames) { GenderedTermType termType = gameScriptVarNamePair.Key; string gameScriptVarName = gameScriptVarNamePair.Value; string genderedTerm; if (!genderedTermsByTermType.TryGetValue(termType, out genderedTerm)) { Debug.LogWarning("Unknown gendered term type \"" + termType.ToString() + "\" for " + character.Name + "not in dictionary."); continue; } // check if we need to capitalize this gendered term if (gameScriptVarName.Contains(DynamicGenderCharacterGameData.CAP_SUFFIX)) { genderedTerm = CapitalizeString(genderedTerm); } fungusHelper.UpdateVariable(gameScriptVarName, genderedTerm); } }
/// <exception cref="InvalidEnumArgumentException">Thrown if a valid Pronoun is passed in without being supported</exception> public static string GetTerm(this GenderedTermType t, Pronoun pronoun) { GenderedTermTypeAttr attr = GetAttr(t); switch (pronoun) { case Pronoun.HE: return(attr.HeTerm); case Pronoun.SHE: return(attr.SheTerm); case Pronoun.THEY: return(attr.TheyTerm); default: throw new InvalidEnumArgumentException("Unsupported pronoun: \"" + pronoun.ToString() + "\""); } }
private static MemberInfo ForValue(GenderedTermType t) { return(typeof(GenderedTermType).GetField(Enum.GetName(typeof(GenderedTermType), t))); }
private static GenderedTermTypeAttr GetAttr(GenderedTermType t) { return((GenderedTermTypeAttr)Attribute.GetCustomAttribute(ForValue(t), typeof(GenderedTermTypeAttr))); }