Example #1
0
        private static bool TryResolveSymbol(object obj, string subSymbol, string symbolArgs, out TaggedString resolvedStr, string fullStringForReference)
        {
            Pawn pawn = obj as Pawn;

            if (pawn != null)
            {
                switch (subSymbol)
                {
                case "":
                    resolvedStr = ((pawn.Name != null) ? Find.ActiveLanguageWorker.WithIndefiniteArticle(pawn.Name.ToStringShort, pawn.gender, plural: false, name: true).ApplyTag(TagType.Name) : ((TaggedString)pawn.KindLabelIndefinite()));
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "nameFull":
                    resolvedStr = ((pawn.Name != null) ? Find.ActiveLanguageWorker.WithIndefiniteArticle(pawn.Name.ToStringFull, pawn.gender, plural: false, name: true).ApplyTag(TagType.Name) : ((TaggedString)pawn.KindLabelIndefinite()));
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "nameFullDef":
                    resolvedStr = ((pawn.Name != null) ? Find.ActiveLanguageWorker.WithDefiniteArticle(pawn.Name.ToStringFull, pawn.gender, plural: false, name: true).ApplyTag(TagType.Name) : ((TaggedString)pawn.KindLabelDefinite()));
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "label":
                    resolvedStr = pawn.LabelNoCountColored;
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "labelShort":
                    resolvedStr = ((pawn.Name != null) ? pawn.Name.ToStringShort.ApplyTag(TagType.Name) : ((TaggedString)pawn.KindLabel));
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "definite":
                    resolvedStr = ((pawn.Name != null) ? Find.ActiveLanguageWorker.WithDefiniteArticle(pawn.Name.ToStringShort, pawn.gender, plural: false, name: true).ApplyTag(TagType.Name) : ((TaggedString)pawn.KindLabelDefinite()));
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "nameDef":
                    resolvedStr = ((pawn.Name != null) ? Find.ActiveLanguageWorker.WithDefiniteArticle(pawn.Name.ToStringShort, pawn.gender, plural: false, name: true).ApplyTag(TagType.Name) : ((TaggedString)pawn.KindLabelDefinite()));
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "indefinite":
                    resolvedStr = ((pawn.Name != null) ? Find.ActiveLanguageWorker.WithIndefiniteArticle(pawn.Name.ToStringShort, pawn.gender, plural: false, name: true).ApplyTag(TagType.Name) : ((TaggedString)pawn.KindLabelIndefinite()));
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "nameIndef":
                    resolvedStr = ((pawn.Name != null) ? Find.ActiveLanguageWorker.WithIndefiniteArticle(pawn.Name.ToStringShort, pawn.gender, plural: false, name: true).ApplyTag(TagType.Name) : ((TaggedString)pawn.KindLabelIndefinite()));
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "pronoun":
                    resolvedStr = pawn.gender.GetPronoun();
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "possessive":
                    resolvedStr = pawn.gender.GetPossessive();
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "objective":
                    resolvedStr = pawn.gender.GetObjective();
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "factionName":
                    resolvedStr = ((pawn.Faction != null) ? pawn.Faction.Name.ApplyTag(pawn.Faction) : ((TaggedString)""));
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "factionPawnSingular":
                    resolvedStr = ((pawn.Faction != null) ? pawn.Faction.def.pawnSingular : "");
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "factionPawnSingularDef":
                    resolvedStr = ((pawn.Faction != null) ? Find.ActiveLanguageWorker.WithDefiniteArticle(pawn.Faction.def.pawnSingular) : "");
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "factionPawnSingularIndef":
                    resolvedStr = ((pawn.Faction != null) ? Find.ActiveLanguageWorker.WithIndefiniteArticle(pawn.Faction.def.pawnSingular) : "");
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "factionPawnsPlural":
                    resolvedStr = ((pawn.Faction != null) ? pawn.Faction.def.pawnsPlural : "");
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "factionPawnsPluralDef":
                    resolvedStr = ((pawn.Faction != null) ? Find.ActiveLanguageWorker.WithDefiniteArticle(pawn.Faction.def.pawnsPlural, LanguageDatabase.activeLanguage.ResolveGender(pawn.Faction.def.pawnsPlural, pawn.Faction.def.pawnSingular), plural: true) : "");
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "factionPawnsPluralIndef":
                    resolvedStr = ((pawn.Faction != null) ? Find.ActiveLanguageWorker.WithIndefiniteArticle(pawn.Faction.def.pawnsPlural, LanguageDatabase.activeLanguage.ResolveGender(pawn.Faction.def.pawnsPlural, pawn.Faction.def.pawnSingular), plural: true) : "");
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "factionRoyalFavorLabel":
                    resolvedStr = ((pawn.Faction != null) ? pawn.Faction.def.royalFavorLabel : "");
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "kind":
                    resolvedStr = pawn.KindLabel;
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "kindDef":
                    resolvedStr = pawn.KindLabelDefinite();
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "kindIndef":
                    resolvedStr = pawn.KindLabelIndefinite();
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "kindPlural":
                    resolvedStr = pawn.GetKindLabelPlural();
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "kindPluralDef":
                    resolvedStr = Find.ActiveLanguageWorker.WithDefiniteArticle(pawn.GetKindLabelPlural(), pawn.gender, plural: true);
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "kindPluralIndef":
                    resolvedStr = Find.ActiveLanguageWorker.WithIndefiniteArticle(pawn.GetKindLabelPlural(), pawn.gender, plural: true);
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "kindBase":
                    resolvedStr = pawn.kindDef.label;
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "kindBaseDef":
                    resolvedStr = Find.ActiveLanguageWorker.WithDefiniteArticle(pawn.kindDef.label);
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "kindBaseIndef":
                    resolvedStr = Find.ActiveLanguageWorker.WithIndefiniteArticle(pawn.kindDef.label);
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "kindBasePlural":
                    resolvedStr = pawn.kindDef.GetLabelPlural();
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "kindBasePluralDef":
                    resolvedStr = Find.ActiveLanguageWorker.WithDefiniteArticle(pawn.kindDef.GetLabelPlural(), LanguageDatabase.activeLanguage.ResolveGender(pawn.kindDef.GetLabelPlural(), pawn.kindDef.label), plural: true);
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "kindBasePluralIndef":
                    resolvedStr = Find.ActiveLanguageWorker.WithIndefiniteArticle(pawn.kindDef.GetLabelPlural(), LanguageDatabase.activeLanguage.ResolveGender(pawn.kindDef.GetLabelPlural(), pawn.kindDef.label), plural: true);
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "race":
                    resolvedStr = pawn.def.label;
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "raceDef":
                    resolvedStr = Find.ActiveLanguageWorker.WithDefiniteArticle(pawn.def.label);
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "raceIndef":
                    resolvedStr = Find.ActiveLanguageWorker.WithIndefiniteArticle(pawn.def.label);
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "lifeStage":
                    resolvedStr = pawn.ageTracker.CurLifeStage.label;
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "lifeStageDef":
                    resolvedStr = Find.ActiveLanguageWorker.WithDefiniteArticle(pawn.ageTracker.CurLifeStage.label, pawn.gender);
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "lifeStageIndef":
                    resolvedStr = Find.ActiveLanguageWorker.WithIndefiniteArticle(pawn.ageTracker.CurLifeStage.label, pawn.gender);
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "lifeStageAdjective":
                    resolvedStr = pawn.ageTracker.CurLifeStage.Adjective;
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "title":
                    resolvedStr = ((pawn.story != null) ? pawn.story.Title : "");
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "titleDef":
                    resolvedStr = ((pawn.story != null) ? Find.ActiveLanguageWorker.WithDefiniteArticle(pawn.story.Title, pawn.gender) : "");
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "titleIndef":
                    resolvedStr = ((pawn.story != null) ? Find.ActiveLanguageWorker.WithIndefiniteArticle(pawn.story.Title, pawn.gender) : "");
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "bestRoyalTitle":
                    resolvedStr = PawnResolveBestRoyalTitle(pawn);
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "bestRoyalTitleIndef":
                    resolvedStr = Find.ActiveLanguageWorker.WithIndefiniteArticle(PawnResolveBestRoyalTitle(pawn));
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "bestRoyalTitleDef":
                    resolvedStr = Find.ActiveLanguageWorker.WithDefiniteArticle(PawnResolveBestRoyalTitle(pawn));
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "royalTitleInCurrentFaction":
                    resolvedStr = PawnResolveRoyalTitleInCurrentFaction(pawn);
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "royalTitleInCurrentFactionIndef":
                    resolvedStr = Find.ActiveLanguageWorker.WithIndefiniteArticle(PawnResolveRoyalTitleInCurrentFaction(pawn));
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "royalTitleInCurrentFactionDef":
                    resolvedStr = Find.ActiveLanguageWorker.WithDefiniteArticle(PawnResolveRoyalTitleInCurrentFaction(pawn));
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "age":
                    resolvedStr = pawn.ageTracker.AgeBiologicalYears.ToString();
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "chronologicalAge":
                    resolvedStr = pawn.ageTracker.AgeChronologicalYears.ToString();
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "ageFull":
                    resolvedStr = pawn.ageTracker.AgeNumberString;
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "relationInfo":
                {
                    resolvedStr = "";
                    TaggedString text = resolvedStr;
                    PawnRelationUtility.TryAppendRelationsWithColonistsInfo(ref text, pawn);
                    resolvedStr = text.RawText;
                    return(true);
                }

                case "relationInfoInParentheses":
                    resolvedStr = "";
                    PawnRelationUtility.TryAppendRelationsWithColonistsInfo(ref resolvedStr, pawn);
                    if (!resolvedStr.NullOrEmpty())
                    {
                        resolvedStr = "(" + resolvedStr + ")";
                    }
                    return(true);

                case "gender":
                    resolvedStr = ResolveGenderSymbol(pawn.gender, pawn.RaceProps.Animal, symbolArgs, fullStringForReference);
                    return(true);

                case "humanlike":
                    resolvedStr = ResolveHumanlikeSymbol(pawn.RaceProps.Humanlike, symbolArgs, fullStringForReference);
                    return(true);

                default:
                    resolvedStr = "";
                    return(false);
                }
            }
            Thing thing = obj as Thing;

            if (thing != null)
            {
                switch (subSymbol)
                {
                case "":
                    resolvedStr = Find.ActiveLanguageWorker.WithIndefiniteArticle(thing.Label);
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "label":
                    resolvedStr = thing.Label;
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "labelPlural":
                    resolvedStr = Find.ActiveLanguageWorker.Pluralize(thing.LabelNoCount);
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "labelPluralDef":
                    resolvedStr = Find.ActiveLanguageWorker.WithDefiniteArticle(Find.ActiveLanguageWorker.Pluralize(thing.LabelNoCount), LanguageDatabase.activeLanguage.ResolveGender(Find.ActiveLanguageWorker.Pluralize(thing.LabelNoCount), thing.LabelNoCount), plural: true);
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "labelPluralIndef":
                    resolvedStr = Find.ActiveLanguageWorker.WithIndefiniteArticle(Find.ActiveLanguageWorker.Pluralize(thing.LabelNoCount), LanguageDatabase.activeLanguage.ResolveGender(Find.ActiveLanguageWorker.Pluralize(thing.LabelNoCount), thing.LabelNoCount), plural: true);
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "labelShort":
                    resolvedStr = thing.LabelShort;
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "definite":
                    resolvedStr = Find.ActiveLanguageWorker.WithDefiniteArticle(thing.Label);
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "indefinite":
                    resolvedStr = Find.ActiveLanguageWorker.WithIndefiniteArticle(thing.Label);
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "pronoun":
                    resolvedStr = LanguageDatabase.activeLanguage.ResolveGender(thing.LabelNoCount).GetPronoun();
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "possessive":
                    resolvedStr = LanguageDatabase.activeLanguage.ResolveGender(thing.LabelNoCount).GetPossessive();
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "objective":
                    resolvedStr = LanguageDatabase.activeLanguage.ResolveGender(thing.LabelNoCount).GetObjective();
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "factionName":
                    resolvedStr = ((thing.Faction != null) ? thing.Faction.Name : "");
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "gender":
                    resolvedStr = ResolveGenderSymbol(LanguageDatabase.activeLanguage.ResolveGender(thing.LabelNoCount), animal: false, symbolArgs, fullStringForReference);
                    return(true);

                default:
                    resolvedStr = "";
                    return(false);
                }
            }
            Hediff hediff = obj as Hediff;

            if (hediff != null)
            {
                if (subSymbol == "label")
                {
                    resolvedStr = hediff.Label;
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);
                }
                if (subSymbol == "labelNoun")
                {
                    resolvedStr = ((!hediff.def.labelNoun.NullOrEmpty()) ? hediff.def.labelNoun : hediff.Label);
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);
                }
            }
            WorldObject worldObject = obj as WorldObject;

            if (worldObject != null)
            {
                switch (subSymbol)
                {
                case "":
                    resolvedStr = Find.ActiveLanguageWorker.WithIndefiniteArticle(worldObject.Label, plural: false, worldObject.HasName);
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "label":
                    resolvedStr = worldObject.Label;
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "labelPlural":
                    resolvedStr = Find.ActiveLanguageWorker.Pluralize(worldObject.Label);
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "labelPluralDef":
                    resolvedStr = Find.ActiveLanguageWorker.WithDefiniteArticle(Find.ActiveLanguageWorker.Pluralize(worldObject.Label), LanguageDatabase.activeLanguage.ResolveGender(Find.ActiveLanguageWorker.Pluralize(worldObject.Label), worldObject.Label), plural: true, worldObject.HasName);
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "labelPluralIndef":
                    resolvedStr = Find.ActiveLanguageWorker.WithIndefiniteArticle(Find.ActiveLanguageWorker.Pluralize(worldObject.Label), LanguageDatabase.activeLanguage.ResolveGender(Find.ActiveLanguageWorker.Pluralize(worldObject.Label), worldObject.Label), plural: true, worldObject.HasName);
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "definite":
                    resolvedStr = Find.ActiveLanguageWorker.WithDefiniteArticle(worldObject.Label, plural: false, worldObject.HasName);
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "indefinite":
                    resolvedStr = Find.ActiveLanguageWorker.WithIndefiniteArticle(worldObject.Label, plural: false, worldObject.HasName);
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "pronoun":
                    resolvedStr = LanguageDatabase.activeLanguage.ResolveGender(worldObject.Label).GetPronoun();
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "possessive":
                    resolvedStr = LanguageDatabase.activeLanguage.ResolveGender(worldObject.Label).GetPossessive();
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "objective":
                    resolvedStr = LanguageDatabase.activeLanguage.ResolveGender(worldObject.Label).GetObjective();
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "factionName":
                    resolvedStr = ((worldObject.Faction != null) ? worldObject.Faction.Name.ApplyTag(worldObject.Faction) : ((TaggedString)""));
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "gender":
                    resolvedStr = ResolveGenderSymbol(LanguageDatabase.activeLanguage.ResolveGender(worldObject.Label), animal: false, symbolArgs, fullStringForReference);
                    return(true);

                default:
                    resolvedStr = "";
                    return(false);
                }
            }
            Faction faction = obj as Faction;

            if (faction != null)
            {
                switch (subSymbol)
                {
                case "":
                    resolvedStr = faction.Name.ApplyTag(faction);
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "name":
                    resolvedStr = faction.Name.ApplyTag(faction);
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "pawnSingular":
                    resolvedStr = faction.def.pawnSingular;
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "pawnSingularDef":
                    resolvedStr = Find.ActiveLanguageWorker.WithDefiniteArticle(faction.def.pawnSingular);
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "pawnSingularIndef":
                    resolvedStr = Find.ActiveLanguageWorker.WithIndefiniteArticle(faction.def.pawnSingular);
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "pawnsPlural":
                    resolvedStr = faction.def.pawnsPlural;
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "pawnsPluralDef":
                    resolvedStr = Find.ActiveLanguageWorker.WithDefiniteArticle(faction.def.pawnsPlural, LanguageDatabase.activeLanguage.ResolveGender(faction.def.pawnsPlural, faction.def.pawnSingular), plural: true);
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "pawnsPluralIndef":
                    resolvedStr = Find.ActiveLanguageWorker.WithIndefiniteArticle(faction.def.pawnsPlural, LanguageDatabase.activeLanguage.ResolveGender(faction.def.pawnsPlural, faction.def.pawnSingular), plural: true);
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "royalFavorLabel":
                    resolvedStr = faction.def.royalFavorLabel;
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "leaderNameDef":
                    resolvedStr = ((faction.leader != null && faction.leader.Name != null) ? Find.ActiveLanguageWorker.WithDefiniteArticle(faction.leader.Name.ToStringShort, faction.leader.gender, plural: false, name: true).ApplyTag(TagType.Name) : ((TaggedString)""));
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "leaderPossessive":
                    resolvedStr = ((faction.leader != null) ? faction.leader.gender.GetPossessive() : "");
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "leaderObjective":
                    resolvedStr = ((faction.leader != null) ? faction.leader.gender.GetObjective() : "");
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "leaderPronoun":
                    resolvedStr = ((faction.leader != null) ? faction.leader.gender.GetPronoun() : "");
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                default:
                    resolvedStr = "";
                    return(false);
                }
            }
            Def def = obj as Def;

            if (def != null)
            {
                PawnKindDef pawnKindDef = def as PawnKindDef;
                if (pawnKindDef != null)
                {
                    switch (subSymbol)
                    {
                    case "labelPlural":
                        resolvedStr = pawnKindDef.GetLabelPlural();
                        EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                        return(true);

                    case "labelPluralDef":
                        resolvedStr = Find.ActiveLanguageWorker.WithDefiniteArticle(pawnKindDef.GetLabelPlural(), LanguageDatabase.activeLanguage.ResolveGender(pawnKindDef.GetLabelPlural(), pawnKindDef.label), plural: true);
                        EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                        return(true);

                    case "labelPluralIndef":
                        resolvedStr = Find.ActiveLanguageWorker.WithIndefiniteArticle(pawnKindDef.GetLabelPlural(), LanguageDatabase.activeLanguage.ResolveGender(pawnKindDef.GetLabelPlural(), pawnKindDef.label), plural: true);
                        EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                        return(true);
                    }
                }
                switch (subSymbol)
                {
                case "":
                    resolvedStr = Find.ActiveLanguageWorker.WithIndefiniteArticle(def.label);
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "label":
                    resolvedStr = def.label;
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "labelPlural":
                    resolvedStr = Find.ActiveLanguageWorker.Pluralize(def.label);
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "labelPluralDef":
                    resolvedStr = Find.ActiveLanguageWorker.WithDefiniteArticle(Find.ActiveLanguageWorker.Pluralize(def.label), LanguageDatabase.activeLanguage.ResolveGender(Find.ActiveLanguageWorker.Pluralize(def.label), def.label), plural: true);
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "labelPluralIndef":
                    resolvedStr = Find.ActiveLanguageWorker.WithIndefiniteArticle(Find.ActiveLanguageWorker.Pluralize(def.label), LanguageDatabase.activeLanguage.ResolveGender(Find.ActiveLanguageWorker.Pluralize(def.label), def.label), plural: true);
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "definite":
                    resolvedStr = Find.ActiveLanguageWorker.WithDefiniteArticle(def.label);
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "indefinite":
                    resolvedStr = Find.ActiveLanguageWorker.WithIndefiniteArticle(def.label);
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "pronoun":
                    resolvedStr = LanguageDatabase.activeLanguage.ResolveGender(def.label).GetPronoun();
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "possessive":
                    resolvedStr = LanguageDatabase.activeLanguage.ResolveGender(def.label).GetPossessive();
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "objective":
                    resolvedStr = LanguageDatabase.activeLanguage.ResolveGender(def.label).GetObjective();
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "gender":
                    resolvedStr = ResolveGenderSymbol(LanguageDatabase.activeLanguage.ResolveGender(def.label), animal: false, symbolArgs, fullStringForReference);
                    return(true);

                default:
                    resolvedStr = "";
                    return(false);
                }
            }
            RoyalTitle royalTitle = obj as RoyalTitle;

            if (royalTitle != null)
            {
                if (subSymbol == null || subSymbol.Length != 0)
                {
                    if (!(subSymbol == "label"))
                    {
                        if (subSymbol == "indefinite")
                        {
                            resolvedStr = Find.ActiveLanguageWorker.WithIndefiniteArticlePostProcessed(royalTitle.Label);
                            EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                            return(true);
                        }
                        resolvedStr = "";
                        return(false);
                    }
                    resolvedStr = royalTitle.Label;
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);
                }
                resolvedStr = royalTitle.Label;
                EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                return(true);
            }
            string text2 = obj as string;

            if (text2 != null)
            {
                switch (subSymbol)
                {
                case "":
                    resolvedStr = text2;
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "plural":
                    resolvedStr = Find.ActiveLanguageWorker.Pluralize(text2);
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "pluralDef":
                    resolvedStr = Find.ActiveLanguageWorker.WithDefiniteArticle(Find.ActiveLanguageWorker.Pluralize(text2), LanguageDatabase.activeLanguage.ResolveGender(Find.ActiveLanguageWorker.Pluralize(text2), text2), plural: true);
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "pluralIndef":
                    resolvedStr = Find.ActiveLanguageWorker.WithIndefiniteArticle(Find.ActiveLanguageWorker.Pluralize(text2), LanguageDatabase.activeLanguage.ResolveGender(Find.ActiveLanguageWorker.Pluralize(text2), text2), plural: true);
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "definite":
                    resolvedStr = Find.ActiveLanguageWorker.WithDefiniteArticle(text2);
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "indefinite":
                    resolvedStr = Find.ActiveLanguageWorker.WithIndefiniteArticle(text2);
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "pronoun":
                    resolvedStr = LanguageDatabase.activeLanguage.ResolveGender(text2).GetPronoun();
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "possessive":
                    resolvedStr = LanguageDatabase.activeLanguage.ResolveGender(text2).GetPossessive();
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "objective":
                    resolvedStr = LanguageDatabase.activeLanguage.ResolveGender(text2).GetObjective();
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);

                case "gender":
                    resolvedStr = ResolveGenderSymbol(LanguageDatabase.activeLanguage.ResolveGender(text2), animal: false, symbolArgs, fullStringForReference);
                    return(true);

                default:
                    resolvedStr = "";
                    return(false);
                }
            }
            if (obj is int || obj is long)
            {
                int num = (int)((obj is int) ? ((int)obj) : ((long)obj));
                if (subSymbol == null || subSymbol.Length != 0)
                {
                    if (!(subSymbol == "ordinal"))
                    {
                        if (subSymbol == "multiple")
                        {
                            resolvedStr = ResolveMultipleSymbol(num, symbolArgs, fullStringForReference);
                            return(true);
                        }
                        resolvedStr = "";
                        return(false);
                    }
                    resolvedStr = Find.ActiveLanguageWorker.OrdinalNumber(num).ToString();
                    EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                    return(true);
                }
                resolvedStr = num.ToString();
                EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                return(true);
            }
            if (obj is TaggedString)
            {
                EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                resolvedStr = ((TaggedString)obj).RawText;
            }
            if (subSymbol.NullOrEmpty())
            {
                EnsureNoArgs(subSymbol, symbolArgs, fullStringForReference);
                if (obj == null)
                {
                    resolvedStr = "";
                }
                else
                {
                    resolvedStr = obj.ToString();
                }
                return(true);
            }
            resolvedStr = "";
            return(false);
        }