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); }
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); }
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); } }
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); }