コード例 #1
0
        public TestAwesomeInventoryLoadout()
        {
            ThingStuffPairWithQuality pair1 = new ThingStuffPairWithQuality
            {
                thing   = _thingDef,
                stuff   = ThingDefOf.Plasteel,
                quality = QualityCategory.Legendary
            };

            ThingStuffPairWithQuality pair2 = new ThingStuffPairWithQuality
            {
                thing   = _thingDef,
                stuff   = ThingDefOf.Steel,
                quality = QualityCategory.Good
            };

            ThingStuffPairWithQuality pair3 = new ThingStuffPairWithQuality
            {
                thing   = _thingDef,
                stuff   = ThingDefOf.Steel,
                quality = QualityCategory.Legendary
            };

            Thing finemeal = ThingMaker.MakeThing(ThingDefOf.MealFine);

            finemeal.stackCount = 11;

            _things.Add(pair1.MakeThing());
            _things.Add(pair2.MakeThing());
            _things.Add(pair3.MakeThing());
            _things.Add(finemeal);
        }
コード例 #2
0
        public TestCompAwesomeInventoryLoadout()
        {
            _pawn         = PawnGenerator.GeneratePawn(PawnKindDefOf.Colonist);
            _pawn.outfits = new Pawn_OutfitTracker(_pawn);
            _pawn.apparel.DestroyAll();
            _pawn.equipment.DestroyAllEquipment();
            _pawn.inventory.DestroyAll();

            _comp = _pawn.TryGetComp <CompAwesomeInventoryLoadout>();

            ThingStuffPairWithQuality pair1 = new ThingStuffPairWithQuality
            {
                thing   = _weaponThingDef,
                stuff   = ThingDefOf.Plasteel,
                quality = QualityCategory.Legendary
            };

            ThingStuffPairWithQuality pair2 = new ThingStuffPairWithQuality
            {
                thing   = _weaponThingDef,
                stuff   = ThingDefOf.Steel,
                quality = QualityCategory.Good
            };

            ThingStuffPairWithQuality pair3 = new ThingStuffPairWithQuality
            {
                thing   = _weaponThingDef,
                stuff   = ThingDefOf.Steel,
                quality = QualityCategory.Legendary
            };

            ThingStuffPairWithQuality pair4 = new ThingStuffPairWithQuality
            {
                thing   = _apparelThingDef,
                stuff   = ThingDefOf.Cloth,
                quality = QualityCategory.Normal,
            };

            ThingStuffPairWithQuality pair5 = new ThingStuffPairWithQuality
            {
                thing   = _apparelThingDef,
                stuff   = ThingDefOf.Leather_Plain,
                quality = QualityCategory.Legendary,
            };

            Thing finemeal = ThingMaker.MakeThing(ThingDefOf.MealFine);

            finemeal.stackCount = 11;

            _pairs.Add(pair1);
            _pairs.Add(pair2);
            _pairs.Add(pair3);
            _pairs.Add(pair4);
            _pairs.Add(pair5);

            _things.Add(pair1.MakeThing());
            _things.Add(pair2.MakeThing());
            _things.Add(pair3.MakeThing());
            _things.Add(finemeal);
        }
コード例 #3
0
        static Test_AddItem()
        {
            ThingDef thingDef = ThingDef.Named("MeleeWeapon_Knife");
            ThingStuffPairWithQuality pair1 = new ThingStuffPairWithQuality
            {
                thing   = thingDef,
                stuff   = ThingDefOf.Plasteel,
                quality = QualityCategory.Legendary
            };

            ThingStuffPairWithQuality pair2 = new ThingStuffPairWithQuality
            {
                thing   = thingDef,
                stuff   = ThingDefOf.Steel,
                quality = QualityCategory.Good
            };

            ThingStuffPairWithQuality pair3 = new ThingStuffPairWithQuality
            {
                thing   = thingDef,
                stuff   = ThingDefOf.Steel,
                quality = QualityCategory.Legendary
            };

            Thing finemeal = ThingMaker.MakeThing(ThingDefOf.MealFine);

            finemeal.stackCount = 11;

            things.Add(pair1.MakeThing());
            things.Add(pair2.MakeThing());
            things.Add(pair3.MakeThing());
            things.Add(finemeal);
        }
コード例 #4
0
        /// <summary>
        /// Initializes a new instance of the <see cref="AILoadout"/> class.
        /// Copy constructor, except the label is different.
        /// </summary>
        /// <param name="loadout"></param>
        public AILoadout(AILoadout loadout) : this(loadout?.label)
        {
            ValidateArg.NotNull(loadout, nameof(loadout));

            _loadoutDic = new Dictionary <ThingStuffPairWithQuality, ThingFilterAll>();
            foreach (Thing thing in loadout.CachedList)
            {
                Thing item = thing.DeepCopy();
                ThingStuffPairWithQuality pair = item.MakeThingStuffPairWithQuality();
                _loadoutDic.Add(pair, new ThingFilterAll(item, loadout[pair]));
                _cachedList.Add(item);
            }

            filter.CopyAllowancesFrom(loadout.filter);
        }
コード例 #5
0
        public static bool CompareThing(Thing x, Thing y)
        {
            if (ReferenceEquals(x, y))
            {
                return(true);
            }
            if (x == null || y == null)
            {
                return(false);
            }
            ThingStuffPairWithQuality pairX = x.MakeThingStuffPairWithQuality();
            ThingStuffPairWithQuality pairY = y.MakeThingStuffPairWithQuality();

            return(pairX == pairY);
        }
コード例 #6
0
        public static Thing MakeThing(ThingStuffPairWithQuality pair)
        {
            if (pair.thing.MadeFromStuff && pair.stuff == null)
            {
                pair.stuff = AwesomeInventoryStuffDefOf.AwesomeInventoryGenericResource;
            }

            Thing thing = pair.MakeThing();

            if (thing.def.useHitPoints)
            {
                thing.HitPoints = thing.MaxHitPoints;
            }

            return(thing);
        }
コード例 #7
0
        /// <inheritdoc/>
        public override bool Equals(T x, T y)
        {
            if (ReferenceEquals(x, y))
            {
                return(true);
            }

            if (x == null || y == null)
            {
                return(false);
            }

            ThingStuffPairWithQuality pairX = x.MakeThingStuffPairWithQuality();
            ThingStuffPairWithQuality pairY = y.MakeThingStuffPairWithQuality();

            return(pairX == pairY);
        }
コード例 #8
0
        public static Thing MakeThingWithoutID(this ThingStuffPairWithQuality pair)
        {
            if (pair.thing.MadeFromStuff && pair.stuff == null)
            {
                pair.stuff = AwesomeInventoryStuffDefOf.AwesomeInventoryGenericResource;
            }

            if (pair.stuff != null && !pair.stuff.IsStuff)
            {
                Log.Error("MakeThing error: Tried to make " + pair.thing + " from " + pair.stuff + " which is not a stuff. Assigning default.");
                pair.stuff = GenStuff.DefaultStuffFor(pair.thing);
            }

            if (!pair.thing.MadeFromStuff && pair.stuff != null)
            {
                Log.Error("MakeThing error: " + pair.thing + " is not madeFromStuff but stuff=" + pair.stuff + ". Setting to null.");
                pair.stuff = null;
            }

            Thing thing = (Thing)Activator.CreateInstance(pair.thing.thingClass);

            thing.def = pair.thing;
            thing.SetStuffDirect(pair.stuff);
            if (thing.def.useHitPoints)
            {
                thing.HitPoints = thing.MaxHitPoints;
            }

            if (thing is ThingWithComps thingWithComps)
            {
                thingWithComps.InitializeComps();
            }

            thing.TryGetComp <CompQuality>()?.SetQuality(pair.Quality, ArtGenerationContext.Outsider);
            return(thing);
        }
コード例 #9
0
 public SavePairFilter(ThingStuffPairWithQuality pair)
 {
     _thing           = pair.thing;
     _stuff           = pair.stuff;
     _qualityCategory = pair.quality;
 }