public static void Listener(Pawn pawn, ref Job __result) { if (!pawn.IsAndroidTier()) { return; } if (Utils.ExceptionAndroidCanReloadWithPowerList.Contains(pawn.def.defName)) { CompAndroidState ca = pawn.GetComp <CompAndroidState>(); if (ca == null || !pawn.Spawned || !ca.UseBattery || pawn.Drafted) { return; } if (Utils.POWERPP_LOADED && ca.connectedLWPNActive && ca.connectedLWPN != null) { __result = null; return; } Building rsb = Utils.GCATPP.getFreeReloadStation(pawn.Map, pawn); if (rsb == null) { __result = null; return; } CompReloadStation rs = rsb.TryGetComp <CompReloadStation>(); if (rs == null) { __result = null; return; } __result = new Job( DefDatabase <JobDef> .GetNamed("ATPP_GoReloadBattery"), new LocalTargetInfo(rs.getFreeReloadPlacePos(pawn)), new LocalTargetInfo(rsb)); } }
public override IEnumerable <FloatMenuOption> GetFloatMenuOptions(Pawn myPawn) { FloatMenuOption failureReason = this.GetFailureReason(myPawn); if (failureReason != null) { yield return(failureReason); } else { yield return(new FloatMenuOption("ATPP_ForceReload".Translate(), delegate(){ CompReloadStation rs = this.TryGetComp <CompReloadStation>(); Job job = new Job(DefDatabase <JobDef> .GetNamed("ATPP_GoReloadBattery"), new LocalTargetInfo(rs.getFreeReloadPlacePos(myPawn)), new LocalTargetInfo(this)); myPawn.jobs.TryTakeOrderedJob(job, JobTag.Misc); }, MenuOptionPriority.Default, null, null, 0f, null, null)); } }