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); } } } }
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); } } } }
public static object RandomPick(WeightSelection.WeightedEntry[] array) { return(WeightSelection.RandomPickEntry(array).obj); }
public static T RandomPick <T>(WeightSelection.WeightedEntry <T>[] array) { return(WeightSelection.RandomPickEntry <T>(array).obj); }