Example #1
0
        // Start is called before the first frame update
        private void Start()
        {
            // initialize class variables
            this.mainCamera = Camera.main;

            // Initialize Camera
            this.InitCamera();
            // this.InitSun();

            // Disable boss health bar until needed
            healthBar.gameObject.SetActive(false);
            timeRemaining.gameObject.SetActive(false);
            attackNameText.gameObject.SetActive(false);

            // Start Music
            audioManager.Play();

            sliptime     = GameObject.Find("SlipTimeManager").GetComponent <SlipTimeManager>();
            playerLiving = GameObject.Find("Player").GetComponent <Living>();

            // Load enemy prefabs
            GameObject saucer1 = Resources.Load <GameObject>(Path.Combine("Enemies", "SaucerDrone_SEE"));
            GameObject saucer2 = Resources.Load <GameObject>(Path.Combine("Enemies", "SaucerDrone_SWW"));
            GameObject saucer3 = Resources.Load <GameObject>(Path.Combine("Enemies", "SaucerDrone_SSE"));
            GameObject saucer4 = Resources.Load <GameObject>(Path.Combine("Enemies", "SaucerDrone_SSW"));
            GameObject saucer5 = Resources.Load <GameObject>(Path.Combine("Enemies", "SaucerDrone_SWnwLa3"));
            GameObject saucer6 = Resources.Load <GameObject>(Path.Combine("Enemies", "SaucerDrone_SEneLa3"));
            GameObject saucer7 = Resources.Load <GameObject>(Path.Combine("Enemies", "SaucerDrone_SEELa5"));
            GameObject saucer8 = Resources.Load <GameObject>(Path.Combine("Enemies", "SaucerDrone_SWWLa5"));
            GameObject roid1   = Resources.Load <GameObject>(Path.Combine("Enemies", "Roid_EELS10"));
            GameObject roid2   = Resources.Load <GameObject>(Path.Combine("Enemies", "Roid_WWLS10"));
            GameObject roid3   = Resources.Load <GameObject>(Path.Combine("Enemies", "Roid_SSLs10"));
            GameObject bomber1 = Resources.Load <GameObject>(Path.Combine("Enemies", "Bomber_SNSaLa3"));
            GameObject bomber2 = Resources.Load <GameObject>(Path.Combine("Enemies", "Bomber_SNS"));
            GameObject midboss = Resources.Load <GameObject>(Path.Combine("Enemies", "MidBoss"));
            GameObject boss    = Resources.Load <GameObject>(Path.Combine("Enemies", "Boss"));

            bossObject = boss;

            // Load the enemy queue

            /*
             * 00:00 - 00:10
             */
            // A wave of small ships moving top left to mid-right
            les.CurvedWave(10, 12f, saucer1, new Vector3(-6, 7, 0), EntrySide.Left);

            // A wave of small ships moving top right to mid-left
            les.CurvedWave(10, 13f, saucer2, new Vector3(6, 7, 0), EntrySide.Right);

            // A wave of small ships that move in from the top and leave from the sides
            les.TopWave(10, 17f, saucer3, new Vector3(1, 7, 0), EntrySide.Right, 1);
            les.TopWave(10, 17f, saucer4, new Vector3(-1, 7, 0), EntrySide.Left, 1);

            /*
             * 00:12 - 00:40
             */
            // A wave of doubled ships moving from top left to mid-right
            les.CurvedWave(10, 22f, saucer1, new Vector3(-6, 7, 0), EntrySide.Left, 2);
            // Meanwhile, some shooter ships enter from top right
            les.TopRow(5, 24f, saucer6, new Vector3(4, 7, 0), EntrySide.Right);

            // A wave of doubled ships moving from top right to mid-left
            les.CurvedWave(10, 26f, saucer2, new Vector3(6, 7, 0), EntrySide.Right, 2);
            // Meanwhile, some shooter ships enter from top left
            les.TopRow(5, 28f, saucer5, new Vector3(-4, 7, 0), EntrySide.Left);

            les.TopRow(15, 32f, saucer6, new Vector3(4, 8, 0), EntrySide.Right);
            les.TopRow(15, 36f, saucer6, new Vector3(4, 8.5f, 0), EntrySide.Right);


            // A wave of ships down the center to shoot down, while waves enter from corners with buckets of kill shots
            les.TopWave(15, 40f, saucer4, new Vector3(-1, 8, 0), EntrySide.Left, 1);
            les.TopWave(15, 40f, saucer3, new Vector3(1, 8, 0), EntrySide.Right, 1);
            les.CurvedWave(10, 42f, saucer7, new Vector3(-6, 7, 0), EntrySide.Left, 1, 0.7f);

            les.TopWave(15, 46f, saucer4, new Vector3(-1, 8, 0), EntrySide.Left, 1);
            les.TopWave(15, 46f, saucer3, new Vector3(1, 8, 0), EntrySide.Right, 1);
            les.CurvedWave(10, 48f, saucer8, new Vector3(6, 7, 0), EntrySide.Right, 1, 0.7f);

            /*
             * 00:40 - 01:21
             */
            // Bomber from top to constrain followed by killshot waves
            les.Add(new EnemySpawn {
                enemy = bomber2, spawnPosition = new Vector3(0, 7, 0), spawnTime = 52f
            });
            les.CurvedWave(10, 54f, saucer7, new Vector3(-6, 7, 0), EntrySide.Left, 1, 0.7f);

            // Two bombers with a wave
            les.Add(new EnemySpawn {
                enemy = bomber2, spawnPosition = new Vector3(-1, 7, 0), spawnTime = 58f
            });
            les.CurvedWave(10, 59f, saucer8, new Vector3(6, 7, 0), EntrySide.Right, 1, 0.7f);

            les.Add(new EnemySpawn {
                enemy = bomber2, spawnPosition = new Vector3(1, 7, 0), spawnTime = 63f
            });
            les.CurvedWave(10, 64f, saucer7, new Vector3(-6, 7, 0), EntrySide.Right, 1, 0.7f);

            les.TopWave(15, 70f, saucer4, new Vector3(-1, 8, 0), EntrySide.Left, 1);
            les.TopWave(15, 70f, saucer3, new Vector3(1, 8, 0), EntrySide.Right, 1);
            les.Add(new EnemySpawn {
                enemy = bomber2, spawnPosition = new Vector3(-3, 7, 0), spawnTime = 71f
            });
            les.Add(new EnemySpawn {
                enemy = bomber2, spawnPosition = new Vector3(3, 7, 0), spawnTime = 71f
            });

            les.CurvedWave(15, 75f, saucer1, new Vector3(-6, 7, 0), EntrySide.Left, 1, 0.7f);
            les.CurvedWave(15, 75f, saucer2, new Vector3(6, 7, 0), EntrySide.Right, 1, 0.7f);

            les.Add(new EnemySpawn {
                enemy = bomber2, spawnPosition = new Vector3(-3, 7, 0), spawnTime = 76f
            });
            les.Add(new EnemySpawn {
                enemy = bomber2, spawnPosition = new Vector3(3, 7, 0), spawnTime = 76f
            });

            les.Add(new EnemySpawn {
                enemy = bomber2, spawnPosition = new Vector3(0, 7, 0), spawnTime = 81f
            });

            /*
             * 01:26 - 01:35 -- build to midboss
             */
            // Cue midboss build track
            spawnQueue = les.GetSpawnQueue();
            playSongWhenSpawnEnemyCount.Add(spawnQueue.Count);
            // Bomber from top to constrain followed by killshot waves
            les.Add(new EnemySpawn {
                enemy = bomber1, spawnPosition = new Vector3(0, 7, 0), spawnTime = 86f
            });
            les.CurvedWave(10, 87f, saucer7, new Vector3(-6, 7, 0), EntrySide.Left, 1, 0.7f);

            // Two bombers with a wave
            les.Add(new EnemySpawn {
                enemy = bomber1, spawnPosition = new Vector3(-1, 7, 0), spawnTime = 90f
            });
            les.Add(new EnemySpawn {
                enemy = bomber1, spawnPosition = new Vector3(1, 7, 0), spawnTime = 90f
            });
            les.CurvedWave(10, 91f, saucer8, new Vector3(6, 7, 0), EntrySide.Right, 1, 0.7f);

            // Three bombers with two waves
            les.Add(new EnemySpawn {
                enemy = bomber1, spawnPosition = new Vector3(0, 7, 0), spawnTime = 95f
            });
            les.CurvedWave(10, 96f, saucer7, new Vector3(-6, 7, 0), EntrySide.Left, 1, 0.7f);
            les.CurvedWave(10, 96f, saucer8, new Vector3(6, 7, 0), EntrySide.Right, 1, 0.7f);

            // MIDBOSS
            les.Add(new EnemySpawn {
                enemy = midboss, spawnPosition = new Vector3(0, 4f, 0), spawnTime = 109f, waitUntilDead = true
            });

            /*
             * 2:10 - 2:40
             */
            // Have you played EoSD Stage 4?
            les.CurvedWave(5, 110f, roid1, new Vector3(-5, 3, 0), EntrySide.Left);

            // Trigger post-midboss level track.
            spawnQueue = les.GetSpawnQueue();
            playSongWhenSpawnEnemyCount.Add(spawnQueue.Count);

            les.CurvedWave(5, 115f, roid2, new Vector3(5, 3.5f, 0), EntrySide.Right);

            les.TopWave(5, 120f, roid3, new Vector3(-3, 6, 0), EntrySide.Left);

            les.CurvedWave(5, 125f, roid2, new Vector3(5, 4f, 0), EntrySide.Right);

            les.TopWave(5, 130f, roid3, new Vector3(3, 6, 0), EntrySide.Right);

            les.CurvedWave(5, 135f, roid1, new Vector3(-5, 4, 0), EntrySide.Left);

            les.TopWave(5, 140f, roid3, new Vector3(3, 6, 0), EntrySide.Right);

            /*
             * 2:40 - 3:00
             */
            les.Add(new EnemySpawn {
                enemy = bomber1, spawnPosition = new Vector3(3, 6, 0), spawnTime = 145
            });
            les.CurvedWave(5, 146, roid1, new Vector3(-5, 3, 0), EntrySide.Left);

            les.Add(new EnemySpawn {
                enemy = bomber1, spawnPosition = new Vector3(-3, 6, 0), spawnTime = 151
            });
            les.CurvedWave(5, 152, roid2, new Vector3(5, 3, 0), EntrySide.Right);

            les.Add(new EnemySpawn {
                enemy = bomber1, spawnPosition = new Vector3(0, 6, 0), spawnTime = 157
            });
            les.CurvedWave(5, 158, roid2, new Vector3(5, 3, 0), EntrySide.Right);
            les.CurvedWave(5, 158, roid1, new Vector3(-5, 3, 0), EntrySide.Left);

            // Cue outro track
            spawnQueue = les.GetSpawnQueue();
            playSongWhenSpawnEnemyCount.Add(spawnQueue.Count);

            les.TopRow(5, 164, roid3, new Vector3(-4, 5, 0), EntrySide.Left);

            les.TopRow(5, 170, roid3, new Vector3(4, 5, 0), EntrySide.Right);

            // BOSS
            les.Add(new EnemySpawn {
                enemy = boss, spawnPosition = new Vector3(0, 4f, 0), spawnTime = 180f, waitUntilDead = true
            });

            // Sort list by time and convert to queue
            spawnQueue = les.GetSpawnQueue();
            //playSongWhenSpawnEnemyCount.Add(spawnQueue.Count);
        }
Example #2
0
 public void SetData(SlipTimeManager slipTimeManager, Vector3 localScale, float maxTimeAlive)
 {
     this.slipTimeManager = slipTimeManager;
     transform.localScale = localScale;
     this.maxTimeAlive    = maxTimeAlive;
 }