public FloatMenuOption CommFloatMenuOption(Building_CommsConsole console, Pawn negotiator) { string label = "CallOnRadio".Translate(GetCallLabel()); Action action = null; AcceptanceReport canCommunicate = CanCommunicateWith_NewTemp(negotiator); if (!canCommunicate.Accepted) { if (!canCommunicate.Reason.NullOrEmpty()) { action = delegate { Messages.Message(canCommunicate.Reason, console, MessageTypeDefOf.RejectInput, historical: false); }; } } else { action = delegate { if (!Building_OrbitalTradeBeacon.AllPowered(Map).Any()) { Messages.Message("MessageNeedBeaconToTradeWithShip".Translate(), console, MessageTypeDefOf.RejectInput, historical: false); } else { console.GiveUseCommsJob(negotiator, this); } }; } return(FloatMenuUtility.DecoratePrioritizedTask(new FloatMenuOption(label, action, MenuOptionPriority.InitiateSocial), negotiator, console)); }
protected override IEnumerable <Toil> MakeNewToils() { _003CMakeNewToils_003Ec__Iterator0 _003CMakeNewToils_003Ec__Iterator = (_003CMakeNewToils_003Ec__Iterator0) /*Error near IL_0036: stateMachine*/; this.FailOnDespawnedOrNull(TargetIndex.A); yield return(Toils_Goto.GotoCell(TargetIndex.A, PathEndMode.InteractionCell).FailOn(delegate(Toil to) { Building_CommsConsole building_CommsConsole = (Building_CommsConsole)to.actor.jobs.curJob.GetTarget(TargetIndex.A).Thing; return !building_CommsConsole.CanUseCommsNow; })); /*Error: Unable to find new state assignment for yield return*/; }
public override AlertReport GetReport() { foreach (Map map in Find.Maps) { if (map.passingShipManager.passingShips.Count > 0) { Building_CommsConsole console = map.listerBuildings.AllBuildingsColonistOfClass <Building_CommsConsole>().FirstOrDefault(); if (console != null) { return(AlertReport.CulpritIs((GlobalTargetInfo)((Thing)console))); } } } return(false); }
public FloatMenuOption CommFloatMenuOption(Building_CommsConsole console, Pawn negotiator) { string label = "CallOnRadio".Translate(this.GetCallLabel()); Action action = delegate { if (!Building_OrbitalTradeBeacon.AllPowered(this.Map).Any <Building_OrbitalTradeBeacon>()) { Messages.Message("MessageNeedBeaconToTradeWithShip".Translate(), console, MessageTypeDefOf.RejectInput, false); return; } console.GiveUseCommsJob(negotiator, this); }; return(FloatMenuUtility.DecoratePrioritizedTask(new FloatMenuOption(label, action, MenuOptionPriority.InitiateSocial, null, null, 0f, null, null), negotiator, console, "ReservedBy")); }
public FloatMenuOption CommFloatMenuOption(Building_CommsConsole console, Pawn negotiator) { if (IsPlayer) { return(null); } string text = "CallOnRadio".Translate(GetCallLabel()); text = text + " (" + PlayerRelationKind.GetLabel() + ", " + PlayerGoodwill.ToStringWithSign() + ")"; if (!LeaderIsAvailableToTalk()) { string str = (leader == null) ? ((string)"LeaderUnavailableNoLeader".Translate()) : ((string)"LeaderUnavailable".Translate(leader.LabelShort, leader)); return(new FloatMenuOption(text + " (" + str + ")", null, def.FactionIcon, Color)); } return(FloatMenuUtility.DecoratePrioritizedTask(new FloatMenuOption(text, delegate { console.GiveUseCommsJob(negotiator, this); }, def.FactionIcon, Color, MenuOptionPriority.InitiateSocial), negotiator, console)); }
public FloatMenuOption CommFloatMenuOption(Building_CommsConsole console, Pawn negotiator) { if (this.IsPlayer) { return(null); } string text = "CallOnRadio".Translate(new object[] { this.GetCallLabel() }); string text2 = text; text = string.Concat(new string[] { text2, " (", this.PlayerRelationKind.GetLabel(), ", ", this.PlayerGoodwill.ToStringWithSign(), ")" }); if (!this.LeaderIsAvailableToTalk()) { string str; if (this.leader != null) { str = "LeaderUnavailable".Translate(new object[] { this.leader.LabelShort }); } else { str = "LeaderUnavailableNoLeader".Translate(); } return(new FloatMenuOption(text + " (" + str + ")", null, MenuOptionPriority.Default, null, null, 0f, null, null)); } return(FloatMenuUtility.DecoratePrioritizedTask(new FloatMenuOption(text, delegate { console.GiveUseCommsJob(negotiator, this); }, MenuOptionPriority.InitiateSocial, null, null, 0f, null, null), negotiator, console, "ReservedBy")); }
protected override IEnumerable <Toil> MakeNewToils() { this.FailOnDespawnedOrNull(TargetIndex.A); yield return(Toils_Goto.GotoCell(TargetIndex.A, PathEndMode.InteractionCell).FailOn(delegate(Toil to) { Building_CommsConsole building_CommsConsole = (Building_CommsConsole)to.actor.jobs.curJob.GetTarget(TargetIndex.A).Thing; return !building_CommsConsole.CanUseCommsNow; })); Toil openComms = new Toil(); openComms.initAction = delegate { Pawn actor = openComms.actor; Building_CommsConsole building_CommsConsole = (Building_CommsConsole)actor.jobs.curJob.GetTarget(TargetIndex.A).Thing; if (building_CommsConsole.CanUseCommsNow) { actor.jobs.curJob.commTarget.TryOpenComms(actor); } }; yield return(openComms); }
public bool MoveNext() { uint num = (uint)this.$PC; this.$PC = -1; switch (num) { case 0u: this.FailOnDespawnedOrNull(TargetIndex.A); this.$current = Toils_Goto.GotoCell(TargetIndex.A, PathEndMode.InteractionCell).FailOn(delegate(Toil to) { Building_CommsConsole building_CommsConsole = (Building_CommsConsole)to.actor.jobs.curJob.GetTarget(TargetIndex.A).Thing; return(!building_CommsConsole.CanUseCommsNow); }); if (!this.$disposing) { this.$PC = 1; } return(true); case 1u: < MakeNewToils > c__AnonStorey.openComms = new Toil(); < MakeNewToils > c__AnonStorey.openComms.initAction = delegate() { Pawn actor = < MakeNewToils > c__AnonStorey.openComms.actor; Building_CommsConsole building_CommsConsole = (Building_CommsConsole)actor.jobs.curJob.GetTarget(TargetIndex.A).Thing; if (building_CommsConsole.CanUseCommsNow) { actor.jobs.curJob.commTarget.TryOpenComms(actor); } }; this.$current = < MakeNewToils > c__AnonStorey.openComms; if (!this.$disposing) { this.$PC = 2; } return(true);
public override IEnumerable <FloatMenuOption> GetFloatMenuOptions(Pawn myPawn) { if (!myPawn.CanReach(this, PathEndMode.InteractionCell, Danger.Some, false, TraverseMode.ByPawn)) { FloatMenuOption item = new FloatMenuOption("CannotUseNoPath".Translate(), null, MenuOptionPriority.Default, null, null, 0f, null, null); List <FloatMenuOption> list = new List <FloatMenuOption>(); list.Add(item); return(list); } if (base.Spawned && base.Map.gameConditionManager.ConditionIsActive(GameConditionDefOf.SolarFlare)) { FloatMenuOption item2 = new FloatMenuOption("CannotUseSolarFlare".Translate(), null, MenuOptionPriority.Default, null, null, 0f, null, null); List <FloatMenuOption> list = new List <FloatMenuOption>(); list.Add(item2); return(list); } if (!this.powerComp.PowerOn) { FloatMenuOption item3 = new FloatMenuOption("CannotUseNoPower".Translate(), null, MenuOptionPriority.Default, null, null, 0f, null, null); List <FloatMenuOption> list = new List <FloatMenuOption>(); list.Add(item3); return(list); } if (!myPawn.health.capacities.CapableOf(PawnCapacityDefOf.Talking)) { FloatMenuOption item4 = new FloatMenuOption("CannotUseReason".Translate("IncapableOfCapacity".Translate(PawnCapacityDefOf.Talking.label)), null, MenuOptionPriority.Default, null, null, 0f, null, null); List <FloatMenuOption> list = new List <FloatMenuOption>(); list.Add(item4); return(list); } if (myPawn.skills.GetSkill(SkillDefOf.Social).TotallyDisabled) { FloatMenuOption item5 = new FloatMenuOption("CannotPrioritizeWorkTypeDisabled".Translate(SkillDefOf.Social.LabelCap), null, MenuOptionPriority.Default, null, null, 0f, null, null); List <FloatMenuOption> list = new List <FloatMenuOption>(); list.Add(item5); return(list); } if (!this.CanUseCommsNow) { Log.Error(myPawn + " could not use comm console for unknown reason."); FloatMenuOption item6 = new FloatMenuOption("Cannot use now", null, MenuOptionPriority.Default, null, null, 0f, null, null); List <FloatMenuOption> list = new List <FloatMenuOption>(); list.Add(item6); return(list); } List <FloatMenuOption> list2 = new List <FloatMenuOption>(); IEnumerable <ICommunicable> enumerable = myPawn.Map.passingShipManager.passingShips.Cast <ICommunicable>().Concat(Find.FactionManager.AllFactionsInViewOrder.Cast <ICommunicable>()); foreach (ICommunicable item7 in enumerable) { ICommunicable localCommTarget = item7; string text = "CallOnRadio".Translate(localCommTarget.GetCallLabel()); Faction faction = localCommTarget as Faction; if (faction != null) { if (!faction.IsPlayer) { if (Building_CommsConsole.LeaderIsAvailableToTalk(faction)) { goto IL_0339; } string str = (faction.leader == null) ? "LeaderUnavailableNoLeader".Translate() : "LeaderUnavailable".Translate(faction.leader.LabelShort); list2.Add(new FloatMenuOption(text + " (" + str + ")", null, MenuOptionPriority.Default, null, null, 0f, null, null)); } continue; } goto IL_0339; IL_0339: Action action = delegate { ICommunicable commTarget2 = localCommTarget; if (item7 is TradeShip && !Building_OrbitalTradeBeacon.AllPowered(base.Map).Any()) { Messages.Message("MessageNeedBeaconToTradeWithShip".Translate(), this, MessageTypeDefOf.RejectInput); } else { Job job = new Job(JobDefOf.UseCommsConsole, this); job.commTarget = commTarget2; myPawn.jobs.TryTakeOrderedJob(job, JobTag.Misc); PlayerKnowledgeDatabase.KnowledgeDemonstrated(ConceptDefOf.OpeningComms, KnowledgeAmount.Total); } }; list2.Add(FloatMenuUtility.DecoratePrioritizedTask(new FloatMenuOption(text, action, MenuOptionPriority.InitiateSocial, null, null, 0f, null, null), myPawn, this, "ReservedBy")); } return(list2); }