Пример #1
0
        public override Job JobOnThing(Pawn pawn, Thing t)
        {
            TitheContainer container = (TitheContainer)t;

            return(new Job(JobDefOf.HaulToContainer, this.ItemToHaul, container)
            {
                count = this.countToHaul,
                ignoreForbidden = false
            });
        }
Пример #2
0
 public override bool HasJobOnThing(Pawn pawn, Thing t)
 {
     if (t is TitheContainer)
     {
         TitheContainer container = (TitheContainer)t;
         bool           flag      = this.SetItemToCollect(container, out this.countToHaul, out this.ItemToHaul) && this.countToHaul > 0 && container.massUsage < 1f && pawn.health.capacities.CapableOf(PawnCapacityDefOf.Manipulation) && pawn.CanReserveAndReach(t, PathEndMode.Touch, pawn.NormalMaxDanger(), 1) && container.compTithe.tProps.maxContainerCapacity >= container.GetInnerContainer().Count&& container.currentTitheEntries.Any(x => x.active);
         return(flag);
     }
     return(false);
 }
Пример #3
0
        public static void UpdateAllContaners()
        {
            List <Building> list = TitheUtilities.allTitheContainers;

            for (int j = 0; j < list.Count; j++)
            {
                TitheContainer current = (TitheContainer)list[j];
                current.UpdateEntries();
            }
        }
Пример #4
0
        public float UpdateCollectedTithe()
        {
            float           num  = 0;
            List <Building> list = TitheUtilities.allTitheContainers;

            for (int j = 0; j < list.Count; j++)
            {
                TitheContainer current = (TitheContainer)list[j];
                for (int k = 0; k < this.thingDefs.Count; k++)
                {
                    int items = current.GetInnerContainer().TotalStackCountOfDef(thingDefs[k]);
                    num += items * thingDefs[k].BaseMarketValue;
                }
            }

            return(num);
        }
Пример #5
0
        private bool SetItemToCollect(TitheContainer container, out int count, out Thing thing)
        {
            List <ThingDef> listTithes = container.titheDefsEnabled;

            if (!container.currentTitheEntries.NullOrEmpty())
            {
                TitheEntryForContainer entry       = container.currentTitheEntries.RandomElement();
                TitheEntryGlobal       globalEntry = entry.Tithe;
                if (globalEntry.tithePercent < 1f && entry.active)
                {
                    List <Thing> list = (from x in CaravanFormingUtility.AllReachableColonyItems(container.Map, false, false) where globalEntry.thingDefs.Contains(x.def) select x).ToList();
                    if (!list.NullOrEmpty())
                    {
                        thing = list.RandomElement();
                        float num  = Mathf.Min((int)TitheUtilities.SpaceRemainingForThing(container.compTithe, thing) / thing.GetStatValue(StatDefOf.Mass), thing.stackCount);
                        float num2 = TitheUtilities.RemainingTitheToCollect(globalEntry, thing);
                        int   num3 = (int)(Mathf.Min(num, num2));
                        if (num3 < 1)
                        {
                            if (globalEntry.tithePercent < 1f)
                            {
                                num3 = 1;
                            }
                            else
                            {
                                count = 0;
                                return(false);
                            }
                        }
                        count = num3;

                        return(true);
                    }
                }
            }
            thing = null;
            count = 0;
            return(false);
        }