Пример #1
0
        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)));
 }