示例#1
0
 public static ushort getAnimal(AnimalSpawnpoint spawn)
 {
     return(LevelAnimals.getAnimal(spawn.type));
 }
 // Token: 0x0600270A RID: 9994 RVA: 0x000E805C File Offset: 0x000E645C
 private void onLevelLoaded(int level)
 {
     if (level > Level.SETUP)
     {
         this.seq = 0u;
         AnimalManager._animals        = new List <Animal>();
         AnimalManager._packs          = null;
         AnimalManager.updates         = 0;
         AnimalManager.tickIndex       = 0;
         AnimalManager._tickingAnimals = new List <Animal>();
         if (Provider.isServer)
         {
             AnimalManager._packs = new List <PackInfo>();
             if (LevelAnimals.spawns.Count > 0)
             {
                 for (int i = 0; i < LevelAnimals.spawns.Count; i++)
                 {
                     AnimalSpawnpoint animalSpawnpoint = LevelAnimals.spawns[i];
                     int num = -1;
                     for (int j = AnimalManager.packs.Count - 1; j >= 0; j--)
                     {
                         List <AnimalSpawnpoint> spawns = AnimalManager.packs[j].spawns;
                         for (int k = 0; k < spawns.Count; k++)
                         {
                             AnimalSpawnpoint animalSpawnpoint2 = spawns[k];
                             if ((animalSpawnpoint2.point - animalSpawnpoint.point).sqrMagnitude < 256f)
                             {
                                 if (num == -1)
                                 {
                                     spawns.Add(animalSpawnpoint);
                                 }
                                 else
                                 {
                                     List <AnimalSpawnpoint> spawns2 = AnimalManager.packs[num].spawns;
                                     for (int l = 0; l < spawns2.Count; l++)
                                     {
                                         spawns.Add(spawns2[l]);
                                     }
                                     AnimalManager.packs.RemoveAtFast(num);
                                 }
                                 num = j;
                                 break;
                             }
                         }
                     }
                     if (num == -1)
                     {
                         PackInfo packInfo = new PackInfo();
                         packInfo.spawns.Add(animalSpawnpoint);
                         AnimalManager.packs.Add(packInfo);
                     }
                 }
                 List <AnimalManager.ValidAnimalSpawnsInfo> list = new List <AnimalManager.ValidAnimalSpawnsInfo>();
                 for (int m = 0; m < AnimalManager.packs.Count; m++)
                 {
                     PackInfo packInfo2            = AnimalManager.packs[m];
                     List <AnimalSpawnpoint> list2 = new List <AnimalSpawnpoint>();
                     for (int n = 0; n < packInfo2.spawns.Count; n++)
                     {
                         list2.Add(packInfo2.spawns[n]);
                     }
                     list.Add(new AnimalManager.ValidAnimalSpawnsInfo
                     {
                         spawns = list2,
                         pack   = packInfo2
                     });
                 }
                 while ((long)AnimalManager.animals.Count < (long)((ulong)AnimalManager.maxInstances) && list.Count > 0)
                 {
                     int index = UnityEngine.Random.Range(0, list.Count);
                     AnimalManager.ValidAnimalSpawnsInfo validAnimalSpawnsInfo = list[index];
                     int index2 = UnityEngine.Random.Range(0, validAnimalSpawnsInfo.spawns.Count);
                     AnimalSpawnpoint animalSpawnpoint3 = validAnimalSpawnsInfo.spawns[index2];
                     validAnimalSpawnsInfo.spawns.RemoveAt(index2);
                     if (validAnimalSpawnsInfo.spawns.Count == 0)
                     {
                         list.RemoveAt(index);
                     }
                     Vector3 point = animalSpawnpoint3.point;
                     point.y += 0.1f;
                     ushort id;
                     if (validAnimalSpawnsInfo.pack.animals.Count > 0)
                     {
                         id = validAnimalSpawnsInfo.pack.animals[0].id;
                     }
                     else
                     {
                         id = LevelAnimals.getAnimal(animalSpawnpoint3);
                     }
                     Animal animal = this.addAnimal(id, point, UnityEngine.Random.Range(0f, 360f), false);
                     if (animal != null)
                     {
                         animal.pack = validAnimalSpawnsInfo.pack;
                         validAnimalSpawnsInfo.pack.animals.Add(animal);
                     }
                 }
                 for (int num2 = AnimalManager.packs.Count - 1; num2 >= 0; num2--)
                 {
                     PackInfo packInfo3 = AnimalManager.packs[num2];
                     if (packInfo3.animals.Count <= 0)
                     {
                         AnimalManager.packs.RemoveAt(num2);
                     }
                 }
             }
         }
     }
 }