Example #1
0
    private void Awake()
    {
        hologram = Instantiate(prefab.gameObject).GetComponent <Spawnable>();
        foreach (Collider2D c in hologram.GetComponentsInChildren <Collider2D>())
        {
            Destroy(c);
        }
        foreach (Rigidbody2D c in hologram.GetComponentsInChildren <Rigidbody2D>())
        {
            Destroy(c);
        }
        hologram.gameObject.SetActive(false);

        i.color = unselectedColor;

        Spawner s = FindObjectOfType <Spawner>();

        if (s.toSpawn == null)
        {
            DoSelect();
        }
    }
Example #2
0
    public static IEnumerator spawnEnemy(Spawnable target /*not already instantiated*/)
    {
        target = Instantiate(target.gameObject).GetComponent <Spawnable>();

        foreach (Transform obj in target.GetComponentsInChildren <Transform>())
        {
            foreach (SpawnSetting setting in obj.GetComponents <SpawnSetting>())
            {
                if (setting.changeBefore)
                {
                    setting.change(obj.gameObject);
                }
            }
        }

        Spawnable newTarget = Instantiate(target.gameObject).GetComponent <Spawnable>();

        target.gameObject.SetActive(false);


        GameObject replacement = null;

        foreach (Transform obj in newTarget.GetComponentsInChildren <Transform>())
        {
            if (obj.gameObject.tag != "PlaceHolder")
            {
                GameObject createdReplacement = null;

                if (obj.GetComponent <Enemy>() != null)
                {
                    //warning

                    createdReplacement = Instantiate(GameplayComponents.main.warning.gameObject);
                    createdReplacement.GetComponent <Animator>().SetFloat("Delay", target.delay);
                }
                else if (obj.GetComponent <Enemy>() == null)
                {
                    //blank

                    createdReplacement = Instantiate(GameplayComponents.main.blank.gameObject);
                }

                if (obj.transform == newTarget.transform)
                {
                    replacement = createdReplacement;

                    /*replacement.AddComponent<AudioSource>();
                     * replacement.GetComponent<AudioSource>().clip = GameplayComponents.main.warningSound;
                     * replacement.GetComponent<AudioSource>().Play();*/
                }

                createdReplacement.transform.position   = obj.transform.position;
                createdReplacement.transform.rotation   = Quaternion.Euler(Vector3.zero);
                createdReplacement.transform.localScale = obj.localScale;

                createdReplacement.GetComponent <PlaceHolder>().original = obj.gameObject /* original prefab file, gotta fix*/;

                //make correct family tree

                Tools.ReplaceGameObject(obj.gameObject, createdReplacement);
            }
        }

        replacement.transform.SetParent(GameplayComponents.main.enemyHolder.transform);

        yield return(new WaitForSeconds(target.delay));

        Destroy(replacement.gameObject);

        target.gameObject.SetActive(true);
        target.transform.SetParent(GameplayComponents.main.enemyHolder.transform);

        foreach (SpawnSetting setting in target.GetComponentsInChildren <SpawnSetting>())
        {
            if (!setting.changeBefore)
            {
                setting.change(setting.gameObject);
            }
        }
    }