Пример #1
0
    public void BuildRandom()
    {
        if (turretBase != null)
        {
            DestroyTurret();
        }

        TurretComponentLibrary library = FindObjectOfType <TurretComponentLibrary>();

        if (library != null)
        {
            if (generateIds.Length > 0)
            {
                UnityEngine.Random.seed = generateSeed;
                Base[] bases = library.GetBases();
                if (bases.Length > 0 && generateIds[0] < bases.Length && generateIds[0] >= 0)
                {
                    Base baseComponent = bases[generateIds[0]];
                    Base instance      = InstantiateBase(baseComponent);
                    BuildRandom(Util.Subset(generateIds, 1), new TurretComponent[] { instance });
                }
            }
            else
            {
                UnityEngine.Random.seed = generateSeed;
                Base[] bases = library.GetBases();
                if (bases.Length > 0)
                {
                    Base baseComponent = bases[UnityEngine.Random.Range(0, bases.Length)];
                    InstantiateBase(baseComponent);
                    turretBase.BuildRandom();
                }
            }
        }
    }
Пример #2
0
    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());
        }
    }
Пример #3
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();
             }
         }
     }
 }
Пример #4
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));
                }
            }
        }
    }
Пример #5
0
 public void Awake()
 {
     instance = this;
 }