protected override bool TryExecuteWorker(IncidentParms parms) { WorldComponent_MFI_AnnualExpo worldComp = Find.World.GetComponent <WorldComponent_MFI_AnnualExpo>(); if (worldComp == null) { return(false); } if (!TryGetRandomAvailableTargetMap(map: out Map map)) { return(false); } if (map == null) { return(false); } if (!TryFindTile(tile: out int tile)) { return(false); } if (!TryGetFactionHost(out Faction faction)) { return(false); } AnnualExpo annualExpo = (AnnualExpo)WorldObjectMaker.MakeWorldObject(def: MFI_DefOf.MFI_AnnualExpoObject); annualExpo.Tile = tile; annualExpo.GetComponent <TimeoutComp>().StartTimeout(TimeoutDaysRange.RandomInRange * GenDate.TicksPerDay); worldComp.events.InRandomOrder().TryMinBy(kvp => kvp.Value, out KeyValuePair <EventDef, int> result); annualExpo.eventDef = result.Key; annualExpo.host = faction; annualExpo.SetFaction(faction); worldComp.timesHeld++; worldComp.events[result.Key]++; Find.WorldObjects.Add(o: annualExpo); Find.LetterStack.ReceiveLetter(label: this.def.letterLabel, text: "MFI_AnnualExpoLetterText".Translate( Find.ActiveLanguageWorker.OrdinalNumber(worldComp.TimesHeld), Find.World.info.name, annualExpo.host.Name, annualExpo.eventDef.theme, annualExpo.eventDef.themeDesc), textLetterDef: this.def.letterDef, lookTargets: annualExpo); return(true); }
private static FloatMenuAcceptanceReport CanVisit(Caravan caravan, AnnualExpo annualExpo) { return(annualExpo != null && annualExpo.Spawned); }
public static IEnumerable <FloatMenuOption> GetFloatMenuOptions(Caravan caravan, AnnualExpo annualExpo) { return(CaravanArrivalActionUtility.GetFloatMenuOptions(acceptanceReportGetter: () => CanVisit(caravan, annualExpo), arrivalActionGetter: () => new CaravanArrivalAction_VisitAnnualExpo(annualExpo), label: "VisitPeaceTalks".Translate(annualExpo.Label), caravan: caravan, pathDestination: annualExpo.Tile, revalidateWorldClickTarget: annualExpo)); }
public CaravanArrivalAction_VisitAnnualExpo(AnnualExpo annualExpo) { this.annualExpo = annualExpo; }
private static FloatMenuAcceptanceReport CanVisit(AnnualExpo annualExpo) { return(annualExpo is { Spawned : true });
public static IEnumerable <FloatMenuOption> GetFloatMenuOptions(Caravan caravan, AnnualExpo annualExpo) { return(CaravanArrivalActionUtility.GetFloatMenuOptions(() => CanVisit(annualExpo), () => new CaravanArrivalAction_VisitAnnualExpo(annualExpo), "VisitPeaceTalks".Translate(annualExpo.Label), caravan, annualExpo.Tile, annualExpo)); }