public static List <Entry> GetBuildingTooltip(BlockScheme scheme, List <Entry> _entries = null) { List <Entry> entries = new List <Entry>(); entries.Add(new Entry("block" + scheme.ID.ToString(), "blockName", informationType.Neutral)); entries.Add(new Entry("block" + scheme.ID.ToString(), "blockDescription", informationType.Neutral)); entries.Add(new Entry(entryType.LineBreak)); // Porting previous block tooltip entries to this list if (_entries != null) { foreach (Entry tte in _entries) { entries.Add(tte); } entries.Add(new Entry(entryType.LineBreak)); } // Flag reading to get the block bonuses and maluses foreach (List <string> flag in FlagReader.GetFlags(scheme)) { string name = flag[0]; flag.Remove(name); string[] parameters = flag.ToArray(); for (int i = 0; i < parameters.Length; i++) { string popInfo = ""; bool wasPop = false; foreach (string popName in parameters[i].Split('-')) { if (GameManager.instance.populationManager.GetPopulationByCodename(popName) != null) { if (popInfo.Length > 0) { popInfo += " " + GameManager.instance.localization.GetLineFromCategory("stats", "orSeparator") + " "; } popInfo += GameManager.instance.localization.GetLineFromCategory("populationType", popName); wasPop = true; } } if (wasPop) { parameters[i] = popInfo; } } entries.Add(new Entry( name.ToLower(), "flagParameter", FlagReader.IsPositive(name) ? informationType.Positive : informationType.Negative, parameters )); } // Conditional unlocking ConditionalUnlocks unlocker = GameManager.instance.cityManager.conditionalUnlocker; if (!unlocker.CanBeUnlocked(scheme.ID)) { entries.Add(new Entry(entryType.LineBreak)); // Bold line entries.Add(new Entry( "toUnlockThisBuildingYouMust", "conditionalUnlock", informationType.Neutral ) { formatters = new string[1] { "b" } }); // Condition (= <= >= < >) foreach (ScriptInterpreter.FormattedComparison condition in unlocker.GetFormattedUnlockConditions(scheme.ID)) { // If Int, no need to tranlate it entries.Add(new Entry( condition.oprtr, "conditionalUnlock", informationType.Negative, condition.lefthandData.GetLocalization(GameManager.instance.localization), condition.righthandData.GetLocalization(GameManager.instance.localization) )); } } return(entries); }