Terraria.ModLoader.NPCLoader.ChooseSpawn C# (CSharp) Method

ChooseSpawn() public static method

public static ChooseSpawn ( Terraria.ModLoader.NPCSpawnInfo spawnInfo ) : int?
spawnInfo Terraria.ModLoader.NPCSpawnInfo
return int?
        public static int? ChooseSpawn(NPCSpawnInfo spawnInfo)
        {
            IDictionary<int, float> pool = new Dictionary<int, float>();
            pool[0] = 1f;
            foreach (ModNPC npc in npcs)
            {
                float weight = npc.CanSpawn(spawnInfo);
                if (weight > 0f)
                {
                    pool[npc.npc.type] = weight;
                }
            }
            foreach (var hook in HookEditSpawnPool)
            {
                hook(pool, spawnInfo);
            }
            float totalWeight = 0f;
            foreach (int type in pool.Keys)
            {
                totalWeight += pool[type];
            }
            float choice = (float)Main.rand.NextDouble() * totalWeight;
            foreach (int type in pool.Keys)
            {
                float weight = pool[type];
                if (choice < weight)
                {
                    return type;
                }
                choice -= weight;
            }
            return null;
        }