private void CreateNewLevelAfter(int? index = null) { var spawners = LevelSettings.GetAllSpawners; var newLevel = new LevelSpecifics(); var newWave = new LevelWave(); newLevel.WaveSettings.Add(newWave); int newLevelIndex; if (index == null) { newLevelIndex = _settings.LevelTimes.Count; } else { newLevelIndex = index.Value + 1; } UndoHelper.RecordObjectPropertyForUndo(ref _isDirty, _settings, "Add Level"); _settings.LevelTimes.Insert(newLevelIndex, newLevel); foreach (var spawner in spawners) { var spawnerScript = spawner.GetComponent<WaveSyncroPrefabSpawner>(); spawnerScript.InsertLevel(newLevelIndex); } }
private static void DeleteWave(LevelSpecifics spec, int waveToDelete, int levelNumber) { var spawners = LevelSettings.GetAllSpawners; var spawnerScripts = new List<WaveSyncroPrefabSpawner>(); foreach (var s in spawners) { spawnerScripts.Add(s.GetComponent<WaveSyncroPrefabSpawner>()); } spec.WaveSettings.RemoveAt(waveToDelete); foreach (var script in spawnerScripts) { script.DeleteWave(levelNumber, waveToDelete); } }
private static void CloneWave(LevelSpecifics spec, int waveToInsertAt, int level) { var spawners = LevelSettings.GetAllSpawners; var newWave = spec.WaveSettings[waveToInsertAt].Clone(); waveToInsertAt++; spec.WaveSettings.Insert(waveToInsertAt, newWave); foreach (var spawner in spawners) { var spawnerScript = spawner.GetComponent<WaveSyncroPrefabSpawner>(); spawnerScript.InsertWave(waveToInsertAt, level); } }