Example #1
0
    private IEnumerator Routine()
    {
        float timer = 0;

        while (true)
        {
            yield return(new WaitForSeconds(1));

            timer += 1;
            if (Random.value <= trapFreq.Evaluate(Mathf.Clamp01(timer / maxTime)))
            {
                int        rng = Random.Range(0, 4);
                GameObject o;
                switch (rng)
                {
                case 0:
                    //turret.Activate();
                    o = Instantiate(turret.gameObject, hazardParent.transform);
                    o.transform.position = new Vector3(Random.Range(-25f, 25f), o.transform.position.y, Random.Range(-15f, 15f));
                    if (timer / maxTime > 0.6f)
                    {
                        o.GetComponent <Turret>().HardModeActivate();
                    }
                    else
                    {
                        o.GetComponent <Hazard>().Activate();
                    }
                    break;

                case 1:
                    trap.Activate();
                    break;

                case 2:
                    if (Random.value < 0.5f)
                    {
                        o = Instantiate(ramp.gameObject, hazardParent.transform);
                    }
                    else
                    {
                        o = Instantiate(bar.gameObject, hazardParent.transform);
                    }
                    o.transform.position = new Vector3(Random.Range(-25, 25), o.transform.position.y, Random.Range(-15, 15));
                    o.transform.rotation = Quaternion.Euler(o.transform.rotation.eulerAngles.x, Random.Range(0, 360), o.transform.rotation.eulerAngles.z);
                    o.GetComponent <Hazard>().Activate();
                    break;

                case 3:
                    bulldozer.Activate();
                    break;

                default:
                    break;
                }
            }

            if (Random.value <= barrierFreq.Evaluate(Mathf.Clamp01(timer / maxTime)))
            {
                barrier.Activate();
            }
        }
    }