public void InstantiateSwitchTiles(LevelDataSO level) { foreach (SwitchTileData switchTileData in level.switchTileDataList) { InstantiateSwitchTile(switchTileData); } }
public void Load(LevelDataSO toLoad) { if (toLoad) { _board.settings = toLoad.boardSettings; LevelGoal oldGoal, goal; oldGoal = _gameManager.GetComponent <LevelGoal>(); if (toLoad.timedEnabled) { goal = _gameManager.gameObject.AddComponent <LevelGoalTimed>() as LevelGoal; goal.Load(toLoad.timedGoal); } else if (toLoad.collectedEnabled) { goal = _gameManager.gameObject.AddComponent <LevelGoalCollected>() as LevelGoal; goal.Load(toLoad.collectedGoal); } else { goal = _gameManager.gameObject.AddComponent <LevelGoalScored>() as LevelGoal; goal.Load(toLoad.scoreGoal); } DestroyImmediate(oldGoal); } }
public void Save(string fileName) { LevelGoalData goalData = _gameManager.GetComponent <LevelGoal>().ForSave(); LevelDataSO data = CreateAsset <LevelDataSO>(fileName); data.boardSettings = _board.settings; if (goalData.GetType() == typeof(CollectedGoalData)) { data.collectedGoal = (CollectedGoalData)goalData; data.collectedEnabled = true; } else if (goalData.GetType() == typeof(TimedGoalData)) { data.timedGoal = (TimedGoalData)goalData; data.timedEnabled = true; } else { data.scoreGoal = goalData; data.scoreEnabled = true; } EditorUtility.SetDirty(data); }
public void LevelLoadData() { foreach (LevelDataSO SO in levelDatas) { string saveString = SaveManager.Loading(SO.iD); Debug.Log(saveString); if (saveString != null) //CHECKS IF FILE EXISTS { //LevelDataRecorder SavedData = JsonUtility.FromJson<LevelDataRecorder>(saveString); CANT USE FROMJSON WITH SOs LevelDataSO SavedData = new LevelDataSO(); JsonUtility.FromJsonOverwrite(saveString, SavedData); levelDatas[int.Parse(SO.iD) - 1].isCompleted = SavedData.isCompleted; levelDatas[int.Parse(SO.iD) - 1].iD = SavedData.iD; levelDatas[int.Parse(SO.iD) - 1].minutes = SavedData.minutes; levelDatas[int.Parse(SO.iD) - 1].seconds = SavedData.seconds; levelDatas[int.Parse(SO.iD) - 1].totalEnemies = SavedData.totalEnemies; levelDatas[int.Parse(SO.iD) - 1].enemiesKilled = SavedData.enemiesKilled; levelDatas[int.Parse(SO.iD) - 1].deaths = SavedData.deaths; // Put .whaetver thats on the SO like .deaths, .kills, etc. //https://www.youtube.com/watch?v=6uMFEM-napE&t=64s Go to 6:00 Min, make multiple files per scriptable saved object } } }
public void InstantiateWaves(LevelDataSO level) { //Layer 0 IntantiateLayerWave(level.layer0WaveDataList, layer0WavePrefab); //Layer 1 IntantiateLayerWave(level.layer1WaveDataList, layer1WavePrefab); //Layer 2 if (layer2WavePrefab != null) { IntantiateLayerWave(level.layer2WaveDataList, layer2WavePrefab); } }
public void InstantiateSpawners(LevelDataSO level) { //Layer 0 InstantiateLayerSpanwers(level.layer0SpawnerDataList, layer0SpawnerPrefab); //Layer 1 InstantiateLayerSpanwers(level.layer1SpawnerDataList, layer1SpawnerPrefab); //Layer 2 if (layer2SpawnerPrefab != null) { InstantiateLayerSpanwers(level.layer2SpawnerDataList, layer2SpawnerPrefab); } }
// After LevelData SO was loaded, the method checks the data is not null, and than init level parameters and start spawning. private void OnLoadDone(AsyncOperationHandle <LevelDataSO> obj) { if (obj.Result == null) { Debug.LogError("[Addressables] Load result is null."); return; } levelData = obj.Result; OnLevelDataLoadedEvent.Invoke(); currentScore = levelData.StartScore; maxLevelScore = currentScore; OnScoreChangesEvent.Invoke(currentScore); targets = levelData.Targets; StartCoroutine(SpawnTarget()); }
private void LoadLevel(int index) { LevelDataSO level = FindLevel(index); //Set player position playerController.initPositionData = level.playerSpawnPosition; playerController.ResetPosition(); //Instantiate switch tiles currentLevelTileList.Clear(); InstantiateSwitchTiles(level); //Set graphical stuff (background & level name sprites) if (level.backgroundSpriteData != null) { backgroundSpriteRenderer.spriteData = level.backgroundSpriteData; backgroundSpriteRenderer.Init(); } if (level.levelIndicatorSpriteData != null) { levelNameSpriteRenderer.spriteData = level.levelIndicatorSpriteData; levelNameSpriteRenderer.Init(); } //Instantiate spawners currentLevelSpawnerList.Clear(); InstantiateSpawners(level); //Instantiate waves (aka spawner generator) currentLevelWaveList.Clear(); InstantiateWaves(level); //End level firework if (level.isEndLevel) { endFireWork = Instantiate(endFireworkPrefab); endFireWork.transform.parent = transform; endFireWork.name = "Firework"; } }
void Update() { if (level == null) { level = levelManager.GetCurrentLevelData(); UpdateSceneSwitchTileList(); UpdateSceneSpawnerList(); UpdateSceneWaveList(); } else { level = levelManager.GetCurrentLevelData(); //If switch tile are added or removed from the level scriptable object, update the scene accordingly int levelAllSwitchTileCount = level.switchTileDataList.Length; if (levelAllSwitchTileCount != sceneSwitchTileDataList.Count) { levelManager.DestroySwitchTiles(); levelManager.InstantiateSwitchTiles(level); } UpdateSceneSwitchTileList(); //If spawners are added or removed from the level scriptable object, update the scene accordingly int levelAllSpawnerCount = level.layer0SpawnerDataList.Length + level.layer1SpawnerDataList.Length + level.layer2SpawnerDataList.Length; if (levelAllSpawnerCount != sceneSpawnerDataList.Count) { levelManager.DestroySpawners(); levelManager.InstantiateSpawners(level); } UpdateSceneSpawnerList(); //If waves are added or removed from the level scriptable object, update the scene accordingly int levelAllWaveCount = level.layer0WaveDataList.Length + level.layer1WaveDataList.Length + level.layer2WaveDataList.Length; if (levelAllWaveCount != sceneWaveDataList.Count) { levelManager.DestroyWaves(); levelManager.InstantiateWaves(level); } UpdateSceneWaveList(); } }
private LevelDataSO FindLevel(int levelIndex) { LevelDataSO res = null; int i = 0; bool found = false; while (!found && i < levelDataSOList.Length) { if (levelDataSOList[i].levelIndex == levelIndex) { found = true; res = levelDataSOList[i]; } i++; } if (res == null) { Debug.LogError("Error: Could not find level " + levelIndex); } return(res); }
override public void OnInspectorGUI() { // Save EditorGUILayout.BeginHorizontal(); fName = EditorGUILayout.TextField("Save As", fName); EditorGUI.BeginDisabledGroup(fName.Length == 0); if (GUILayout.Button("Save")) { lvlLoader.Save(fName); } EditorGUI.EndDisabledGroup(); EditorGUILayout.EndHorizontal(); // Load EditorGUILayout.BeginHorizontal(); toLoad = EditorGUILayout.ObjectField("Level Data SO", toLoad, typeof(LevelDataSO), false) as LevelDataSO; EditorGUI.BeginDisabledGroup(toLoad == null); if (GUILayout.Button("Load")) { lvlLoader.Load(toLoad); } EditorGUI.EndDisabledGroup(); EditorGUILayout.EndHorizontal(); }
private void OnEnable() { _selectedLevelEvent = (LevelDataSO)target; PrepareSceneList(); }
private void OnLevelButtonClicked(LevelDataSO levelData) { levelData.Execute(((SceneLoaderManager)_sceneLoaderManagerSO.Manager)); }
public void OnEnable() { data = target as LevelDataSO; }