示例#1
0
        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);
 }
示例#4
0
        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"));
        }
示例#5
0
        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));
        }
示例#6
0
        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"));
        }
示例#7
0
        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);
示例#9
0
        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);
        }