Exemple #1
0
 public void PopulateInventory(Inventory inven)
 {
     LootSpawnList.RecursiveInventoryPopulateArgs recursiveInventoryPopulateArg = new LootSpawnList.RecursiveInventoryPopulateArgs();
     recursiveInventoryPopulateArg.inventory = inven;
     recursiveInventoryPopulateArg.spawnCount = 0;
     recursiveInventoryPopulateArg.inventoryExausted = inven.noVacantSlots;
     if (!recursiveInventoryPopulateArg.inventoryExausted)
     {
         this.PopulateInventory_Recurse(ref recursiveInventoryPopulateArg);
     }
 }
Exemple #2
0
 public void PopulateInventory(Inventory inven)
 {
     LootSpawnList.RecursiveInventoryPopulateArgs recursiveInventoryPopulateArg = new LootSpawnList.RecursiveInventoryPopulateArgs();
     recursiveInventoryPopulateArg.inventory         = inven;
     recursiveInventoryPopulateArg.spawnCount        = 0;
     recursiveInventoryPopulateArg.inventoryExausted = inven.noVacantSlots;
     if (!recursiveInventoryPopulateArg.inventoryExausted)
     {
         this.PopulateInventory_Recurse(ref recursiveInventoryPopulateArg);
     }
 }
Exemple #3
0
    private void PopulateInventory_Recurse(ref LootSpawnList.RecursiveInventoryPopulateArgs args)
    {
        if (this.maxPackagesToSpawn > (int)this.LootPackages.Length)
        {
            this.maxPackagesToSpawn = (int)this.LootPackages.Length;
        }
        int num = 0;

        num = (!this.spawnOneOfEach ? UnityEngine.Random.Range(this.minPackagesToSpawn, this.maxPackagesToSpawn) : (int)this.LootPackages.Length);
        for (int i = 0; !args.inventoryExausted && i < num; i++)
        {
            LootSpawnList.LootWeightedEntry lootWeightedEntry = null;
            lootWeightedEntry = (!this.spawnOneOfEach ? WeightSelection.RandomPickEntry(this.LootPackages) as LootSpawnList.LootWeightedEntry : this.LootPackages[i]);
            if (lootWeightedEntry == null)
            {
                Debug.Log("Massive fuckup...");
                return;
            }
            UnityEngine.Object obj = lootWeightedEntry.obj;
            if (obj)
            {
                if (obj is ItemDataBlock)
                {
                    if (!object.ReferenceEquals(args.inventory.AddItem(obj as ItemDataBlock, Inventory.Slot.Preference.Define(args.spawnCount, false, Inventory.Slot.KindFlags.Default | Inventory.Slot.KindFlags.Belt), UnityEngine.Random.Range(lootWeightedEntry.amountMin, lootWeightedEntry.amountMax + 1)), null))
                    {
                        args.spawnCount = args.spawnCount + 1;
                        if (args.inventory.noVacantSlots)
                        {
                            args.inventoryExausted = true;
                        }
                    }
                }
                else if (obj is LootSpawnList)
                {
                    ((LootSpawnList)obj).PopulateInventory_Recurse(ref args);
                }
            }
        }
    }