Exemplo n.º 1
0
 public static bool Prefix(Caravan caravan, Settlement settlement)
 {
     if (settlement.Faction != null && settlement.Faction.def.HasModExtension <CustomGenOption>() ||
         (Find.World.worldObjects.AllWorldObjects.Find(o => o.Tile == settlement.Tile && o.def.HasModExtension <CustomGenOption>()) is WorldObject worldObject))
     {
         if (!settlement.HasMap)
         {
             CGO.useCustomWindowContent = true;
             CGO.dateTime = DateTime.Now;
             LongEventHandler.QueueLongEvent(delegate()
             {
                 CGO.allTip = DefDatabase <TipSetDef> .AllDefsListForReading.SelectMany((TipSetDef set) => set.tips).InRandomOrder().ToList();
                 if (CGO.allTip.Count > 0)
                 {
                     CGO.tipAvailable = true;
                 }
                 CustomAttackNowNoLetter(caravan, settlement);
                 LongEventHandler.ExecuteWhenFinished(() =>
                 {
                     KLog.Message($"Generation done in {(DateTime.Now - CGO.dateTime).Duration().TotalSeconds}");
                     // Send letter
                     if (settlement.Faction != null)
                     {
                         SendAttackLetter(caravan, settlement);
                     }
                     // Clear
                     CGO.ClearUI();
                     CGO.ClearAll();
                     LongEventHandler_Patches.LongEventsOnGUI_Prefix.structure = null;
                 });
             }, "GeneratingMapForNewEncounter", true, delegate(Exception e)
             {
                 Log.Error($"{e}");
                 CGO.ClearUI();
                 CGO.ClearAll();
             }, true);
         }
         else
         {
             AccessTools.Method(typeof(SettlementUtility), "AttackNow").Invoke(null, new object[] { caravan, settlement });
         }
         return(false);
     }
     return(true);
 }