public static void CheckConfirmSettle(int tile, Action settleAction) { SettlementProximityGoodwillUtility.tmpGoodwillOffsets.Clear(); SettlementProximityGoodwillUtility.AppendProximityGoodwillOffsets(tile, SettlementProximityGoodwillUtility.tmpGoodwillOffsets, false, true); if (SettlementProximityGoodwillUtility.tmpGoodwillOffsets.Any <Pair <Settlement, int> >()) { SettlementProximityGoodwillUtility.SortProximityGoodwillOffsets(SettlementProximityGoodwillUtility.tmpGoodwillOffsets); Find.WindowStack.Add(Dialog_MessageBox.CreateConfirmation("ConfirmSettleNearFactionBase".Translate(new object[] { SettlementProximityGoodwillUtility.MaxDist - 1, 15 }) + "\n\n" + SettlementProximityGoodwillUtility.ProximityGoodwillOffsetsToString(SettlementProximityGoodwillUtility.tmpGoodwillOffsets), settleAction, false, null)); } else { settleAction(); } }
public static void CheckSettlementProximityGoodwillChange() { if (Find.TickManager.TicksGame != 0 && Find.TickManager.TicksGame % 900000 == 0) { List <Settlement> settlements = Find.WorldObjects.Settlements; SettlementProximityGoodwillUtility.tmpGoodwillOffsets.Clear(); for (int i = 0; i < settlements.Count; i++) { Settlement settlement = settlements[i]; if (settlement.Faction == Faction.OfPlayer) { SettlementProximityGoodwillUtility.AppendProximityGoodwillOffsets(settlement.Tile, SettlementProximityGoodwillUtility.tmpGoodwillOffsets, true, false); } } if (SettlementProximityGoodwillUtility.tmpGoodwillOffsets.Any <Pair <Settlement, int> >()) { SettlementProximityGoodwillUtility.SortProximityGoodwillOffsets(SettlementProximityGoodwillUtility.tmpGoodwillOffsets); List <Faction> allFactionsListForReading = Find.FactionManager.AllFactionsListForReading; bool flag = false; string text = "LetterFactionBaseProximity".Translate() + "\n\n" + SettlementProximityGoodwillUtility.ProximityGoodwillOffsetsToString(SettlementProximityGoodwillUtility.tmpGoodwillOffsets); for (int j = 0; j < allFactionsListForReading.Count; j++) { Faction faction = allFactionsListForReading[j]; if (faction != Faction.OfPlayer) { int num = 0; for (int k = 0; k < SettlementProximityGoodwillUtility.tmpGoodwillOffsets.Count; k++) { if (SettlementProximityGoodwillUtility.tmpGoodwillOffsets[k].First.Faction == faction) { num += SettlementProximityGoodwillUtility.tmpGoodwillOffsets[k].Second; } } FactionRelationKind playerRelationKind = faction.PlayerRelationKind; if (faction.TryAffectGoodwillWith(Faction.OfPlayer, num, false, false, null, null)) { flag = true; faction.TryAppendRelationKindChangedInfo(ref text, playerRelationKind, faction.PlayerRelationKind, null); } } } if (flag) { Find.LetterStack.ReceiveLetter("LetterLabelFactionBaseProximity".Translate(), text, LetterDefOf.NegativeEvent, null); } } } }