public string GetText(DisplayTargetID displayTgtID, Player player, AIntel intel, FacilityReport[] elementReports, bool includeUnknown) {
     if (!IsTextCurrent(displayTgtID, player, intel.CurrentCoverage, elementReports, includeUnknown)) {
         D.Log("{0} generating new text for Label {1}, Player {2}.", GetType().Name, displayTgtID.GetValueName(), player.LeaderName);
         GenerateText(displayTgtID, player, intel, elementReports, includeUnknown);
     }
     return _stringBuilder.ToString();
 }
 public SettlementReport GetReport(Player player, AIntel intel, FacilityReport[] elementReports) {
     if (!IsReportCurrent(player, intel.CurrentCoverage, elementReports)) {
         D.Log("{0} generating new {1} for Player {2}.", GetType().Name, typeof(SettlementReport).Name, player.LeaderName);
         _elementReports = elementReports;
         _report = GenerateReport(player, intel, elementReports);
         _data.AcceptChanges();
     }
     return _report;
 }
 private void GenerateText(DisplayTargetID displayTgtID, Player player, AIntel intel, FacilityReport[] elementReports, bool includeUnknown) {
     _stringBuilder.Clear();
     _currentTextLabelID = displayTgtID;
     LabelFormatter.IncludeUnknown = includeUnknown;
     LabelFormatter.Report = GetReport(player, intel, elementReports);
     var labelLines = LabelFormatter.GetLabelLines(displayTgtID);
     foreach (var line in labelLines) {
         _stringBuilder.AppendLine(line);
         // IMPROVE don't include a line break on the last line
     }
 }
 private bool IsTextCurrent(DisplayTargetID displayTgtID, Player player, IntelCoverage intelCoverage, FacilityReport[] elementReports, bool includeUnknown) {
     return displayTgtID == _currentTextLabelID && includeUnknown == LabelFormatter.IncludeUnknown && IsReportCurrent(player, intelCoverage, elementReports);
 }
 public string GetCursorHudText(AIntel intel, FacilityReport[] elementReports, bool includeUnknown = true) {
     return GetText(DisplayTargetID.CursorHud, _gameMgr.UserPlayer, intel, elementReports, includeUnknown);
 }
 protected SettlementReport GenerateReport(Player player, AIntel intel, FacilityReport[] elementReports) {
     return new SettlementReport(_data, player, intel, elementReports);
 }
 private bool IsReportCurrent(Player player, IntelCoverage intelCoverage, FacilityReport[] elementReports) {
     return _report != null && _report.Player == player && _report.IntelCoverage == intelCoverage && !_data.IsChanged && !elementReports.Except(_elementReports).Any();
 }