private void BuildRandom(int[] ids, TurretComponent[] components)
    {
        TurretComponentLibrary library = FindObjectOfType <TurretComponentLibrary>();
        int count = 0;
        List <TurretComponent> newComponents = new List <TurretComponent>();

        for (int i = 0; i < components.Length; i++)
        {
            for (int j = 0; j < components[i].slots.Length && j < ids.Length; j++)
            {
                TurretComponent[] prefabs = library.GetComponentsMatching(components[i].slots[j]);
                if (prefabs.Length > 0 && ids[count] < prefabs.Length && ids[count] >= 0)
                {
                    TurretComponent turretComponent = prefabs[ids[count]];
                    TurretComponent newComponent    = components[i].InstantiateComponentAt(turretComponent, components[i].slots[j]);
                    newComponents.Add(newComponent);
                }
                count++;
                if (count >= generateIds.Length)
                {
                    return;
                }
            }
        }
        if (newComponents.Count > 0)
        {
            BuildRandom(Util.Subset(ids, count), newComponents.ToArray());
        }
    }
Example #2
0
 // ==== DEBUG ====
 internal override void BuildRandom()
 {
     foreach (Slot slot in slots)
     {
         TurretComponentLibrary library = FindObjectOfType <TurretComponentLibrary>();
         if (library != null)
         {
             TurretComponent[] components = library.GetComponentsMatching(slot, typeof(Motor));
             if (components.Length > 0)
             {
                 TurretComponent baseComponent = components[UnityEngine.Random.Range(0, components.Length)];
                 InstantiateComponentAt(baseComponent, slot);
                 slot.component.BuildRandom();
             }
         }
     }
 }
Example #3
0
    internal virtual void BuildRandom(int[] generateIds)
    {
        TurretComponentLibrary library = FindObjectOfType <TurretComponentLibrary>();

        if (library != null)
        {
            for (int i = 0; i < slots.Length && i < generateIds.Length; i++)
            {
                TurretComponent[] components = library.GetComponentsMatching(slots[i]);
                if (components.Length > 0 && generateIds[i] < components.Length && generateIds[i] >= 0)
                {
                    TurretComponent turretComponent = components[generateIds[i]];
                    InstantiateComponentAt(turretComponent, slots[i]);
                    slots[i].component.BuildRandom(Util.Subset(generateIds, slots.Length));
                }
            }
        }
    }