Ejemplo n.º 1
0
    private void PopulateInventory_Recurse(ref RecursiveInventoryPopulateArgs args)
    {
        if (this.maxPackagesToSpawn > this.LootPackages.Length)
        {
            this.maxPackagesToSpawn = this.LootPackages.Length;
        }
        int length = 0;

        if (this.spawnOneOfEach)
        {
            length = this.LootPackages.Length;
        }
        else
        {
            length = Random.Range(this.minPackagesToSpawn, this.maxPackagesToSpawn);
        }
        for (int i = 0; !args.inventoryExausted && (i < length); i++)
        {
            LootWeightedEntry entry = null;
            if (this.spawnOneOfEach)
            {
                entry = this.LootPackages[i];
            }
            else
            {
                entry = WeightSelection.RandomPickEntry(this.LootPackages) as LootWeightedEntry;
            }
            if (entry == null)
            {
                Debug.Log("Massive fuckup...");
                return;
            }
            Object obj2 = entry.obj;
            if (obj2 != null)
            {
                if (obj2 is ItemDataBlock)
                {
                    ItemDataBlock datablock = obj2 as ItemDataBlock;
                    if (!object.ReferenceEquals(args.inventory.AddItem(datablock, Inventory.Slot.Preference.Define(args.spawnCount, false, Inventory.Slot.KindFlags.Belt | Inventory.Slot.KindFlags.Default), Random.Range(entry.amountMin, entry.amountMax + 1)), null))
                    {
                        args.spawnCount++;
                        if (args.inventory.noVacantSlots)
                        {
                            args.inventoryExausted = true;
                        }
                    }
                }
                else if (obj2 is LootSpawnList)
                {
                    ((LootSpawnList)obj2).PopulateInventory_Recurse(ref args);
                }
            }
        }
    }
Ejemplo n.º 2
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);
                }
            }
        }
    }
Ejemplo n.º 3
0
 public static object RandomPick(WeightSelection.WeightedEntry[] array)
 {
     return(WeightSelection.RandomPickEntry(array).obj);
 }
Ejemplo n.º 4
0
 public static T RandomPick <T>(WeightSelection.WeightedEntry <T>[] array)
 {
     return(WeightSelection.RandomPickEntry <T>(array).obj);
 }