示例#1
0
    public static List <Wave> LoadWaveset(string name)
    {
        string path = Game.WAVESET_SAVE_DIRECTORY + name + WAVESET_FILE_EXTENSION;

        string[] content = ModuleAssemblyLoader.GetContents(path);

        List <Wave> locWaves = new List <Wave> ();

        Wave cw = null;

        Wave.Subwave cs = null;
        Wave.Enemy   ce = null;

        for (int i = 0; i < content.Length; i++)
        {
            string c = content [i];

            // Find wave
            if (c.Length > 4)
            {
                if (c.Substring(0, 5) == "\twave")
                {
                    cw = new Wave();
                    locWaves.Add(cw);
                }
            }

            // Find and read subwave
            if (c.Length > 5)
            {
                if (c.Substring(0, 6) == "\t\tsptm")
                {
                    cs           = new Wave.Subwave();
                    cs.spawnTime = float.Parse(c.Substring(7));
                    cw.subwaves.Add(cs);
                }
            }

            // Find and read enemy
            if (c.Length > 6)
            {
                if (c.Substring(0, 7) == "\t\t\tenmy")
                {
                    ce       = new Wave.Enemy();
                    ce.enemy = EnemyManager.cur.GetEnemyFromName(c.Substring(8));
                }

                if (c.Substring(0, 7) == "\t\t\tamnt")
                {
                    ce.spawnAmount = int.Parse(c.Substring(8));
                    cs.enemies.Add(ce);
                }
            }
        }

        return(locWaves);
    }
示例#2
0
    void AddFinalBoss()
    {
        // What the f**k is this shit?
        Wave.Enemy e = new Wave.Enemy();
        e.enemy       = endBoss;
        e.spawnAmount = 1;
        Wave.Subwave s = new Wave.Subwave();
        s.enemies.Add(e);
        s.spawnTime = 1f;
        Wave w = new Wave();

        w.subwaves.Add(s);
        waves.Add(w);
    }
示例#3
0
    void ContinueWave(bool first)
    {
        endedIndex = 0;
        if (!first)
        {
            subwaveNumber++;
        }

        if (waves [waveNumber - 1].subwaves.Count > subwaveNumber)
        {
            currentSubwave = waves [waveNumber - 1].subwaves [subwaveNumber];
            spawnIndex     = new int[currentSubwave.enemies.Count];

            for (int i = 0; i < currentSubwave.enemies.Count; i++)
            {
                SendMessage("Spawn" + i.ToString());
            }
            //Invoke ("ContinueFalseWave", currentSubwave.spawnTime + 2f);
        }
    }
示例#4
0
    public void EndWave(bool finished)
    {
        PlayerInput.cur.flushBattlefieldAnimator.SetBool("Flashing", false);
        ForceInstantCleanEnemyArray();

        Game.CrossfadeMusic(Game.game.constructionMusic, 2f);
        SetPortals(false);

        Game.ChangeButtons(true);
        waveStarted    = false;
        currentSubwave = null;
        subwaveNumber  = 0;
        if (Game.fastGame)
        {
            Game.ToggleFastGameSpeed();
        }
        waveStartedIndicator.color = Color.green;
        UpdateAmountModifier();

        if (finished && Datastream.healthAmount > 0)
        {
            Game.credits += 25 * ExternalWaveNumber;
            PlayerInput.ChangeFlushTimer(-1);
            Game.game.SaveGame("autosave");
            Datastream.healthAmount = Mathf.Min(Datastream.healthAmount + Datastream.healPerWave, Datastream.STARTING_HEALTH);
            Datastream.cur.UpdateNumberMaterials();
        }

        if (waves.Count >= waveNumber + 1)
        {
            UpdateUpcomingWaveScreen(waves [waveNumber], ExternalWaveNumber, upcomingWindow);
        }

        waveCounterIndicator.text = "Wave: " + ExternalWaveNumber.ToString();
        if (Game.state == Game.State.Started)
        {
            waveStartedIndicator.GetComponentInParent <HoverContextElement>().text = "Start wave " + (waveNumber + 1).ToString();
        }
        HoverContextElement.activeElement = null;
        PlayerInput.ChangeFlushTimer(0);
    }