diff --git a/Assets/Resources/Levels/BackOnTrack.json b/Assets/Resources/Levels/BackOnTrack.json index 89275bf..45576ea 100644 --- a/Assets/Resources/Levels/BackOnTrack.json +++ b/Assets/Resources/Levels/BackOnTrack.json @@ -4,6 +4,7 @@ "totalJumps": 0, "totalAttempts": 0, "killedCount": 0, + "order": 2, "elements": [ { "type": "Spike", diff --git a/Assets/Resources/Levels/StereoMadness.json b/Assets/Resources/Levels/StereoMadness.json new file mode 100644 index 0000000..37ce183 --- /dev/null +++ b/Assets/Resources/Levels/StereoMadness.json @@ -0,0 +1,17 @@ +{ + "name": "Stereo Madness", + "musicName": "StereoMadness", + "totalJumps": 0, + "totalAttempts": 0, + "killedCount": 0, + "order": 1, + "elements": [ + { + "type": "Spike", + "position": { + "x": 0, + "y": 0 + } + } + ] +} diff --git a/Assets/Resources/Levels/StereoMadness.json.meta b/Assets/Resources/Levels/StereoMadness.json.meta new file mode 100644 index 0000000..8a5f689 --- /dev/null +++ b/Assets/Resources/Levels/StereoMadness.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: b865ad45000d21465bdcfbbca0225616 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Level.cs b/Assets/Scripts/Level.cs index b9b93b1..87f6ff0 100644 --- a/Assets/Scripts/Level.cs +++ b/Assets/Scripts/Level.cs @@ -8,6 +8,7 @@ public class Level public int totalJumps; public int totalAttempts; public int killedCount; + public int order; public static Level CreateFromJSON(string jsonString) { diff --git a/Assets/Scripts/LevelsLoader.cs b/Assets/Scripts/LevelsLoader.cs index 297609f..040c9ea 100644 --- a/Assets/Scripts/LevelsLoader.cs +++ b/Assets/Scripts/LevelsLoader.cs @@ -1,15 +1,38 @@ -using System.IO; +using System.Collections.Generic; using UnityEngine; public class LevelsLoader : MonoBehaviour { - public Level level; + public List levels = new(); + public Level levelCurrent; - public void Start() + private void Start() { DontDestroyOnLoad(gameObject); + LoadAllLevels(); + levelCurrent = levels[0]; + } - TextAsset jsonTextFile = Resources.Load(Path.Combine("Levels", "BackOnTrack")); - level = JsonUtility.FromJson(jsonTextFile.text); + private void LoadAllLevels() + { + TextAsset[] levelFiles = Resources.LoadAll("Levels"); + foreach (TextAsset jsonTextFile in levelFiles) + { + Level loadedLevel = JsonUtility.FromJson(jsonTextFile.text); + levels.Add(loadedLevel); + } + levels.Sort((x, y) => x.order.CompareTo(y.order)); + } + + public void NextLevel() + { + int currentIndex = levels.IndexOf(levelCurrent); + levelCurrent = levels[(currentIndex + 1) % levels.Count]; + } + + public void PreviousLevel() + { + int currentIndex = levels.IndexOf(levelCurrent); + levelCurrent = levels[(currentIndex - 1 + levels.Count) % levels.Count]; } } diff --git a/Assets/Scripts/LevelsSelect/LevelNameText.cs b/Assets/Scripts/LevelsSelect/LevelNameText.cs index 60fa19e..97c36d1 100644 --- a/Assets/Scripts/LevelsSelect/LevelNameText.cs +++ b/Assets/Scripts/LevelsSelect/LevelNameText.cs @@ -1,15 +1,19 @@ using UnityEngine; using UnityEngine.UI; -using UnityEngine.SceneManagement; public class LevelNameText : MonoBehaviour { - public LevelsLoader levelsLoader; public Text levelNameText; + public LevelsLoader levelsLoader; public void Start() { levelsLoader = GameObject.FindGameObjectWithTag("LevelsLoader").GetComponent(); - levelNameText.text = levelsLoader.level.name; + levelNameText.text = levelsLoader.levelCurrent.name; + } + + public void Update() + { + levelNameText.text = levelsLoader.levelCurrent.name; } } diff --git a/Assets/Scripts/LevelsSelect/LevelNextButton.cs b/Assets/Scripts/LevelsSelect/LevelNextButton.cs index bbc4ebd..6bc51ab 100644 --- a/Assets/Scripts/LevelsSelect/LevelNextButton.cs +++ b/Assets/Scripts/LevelsSelect/LevelNextButton.cs @@ -2,8 +2,15 @@ using UnityEngine; public class LevelNextButton : MonoBehaviour { + public LevelsLoader levelsLoader; + + public void Start() + { + levelsLoader = GameObject.FindGameObjectWithTag("LevelsLoader").GetComponent(); + } + public void NextLevel() { - // TODO + levelsLoader.NextLevel(); } } diff --git a/Assets/Scripts/LevelsSelect/LevelPreviousButton.cs b/Assets/Scripts/LevelsSelect/LevelPreviousButton.cs index f480ab2..66fa47c 100644 --- a/Assets/Scripts/LevelsSelect/LevelPreviousButton.cs +++ b/Assets/Scripts/LevelsSelect/LevelPreviousButton.cs @@ -2,8 +2,15 @@ using UnityEngine; public class LevelPreviousButton : MonoBehaviour { + public LevelsLoader levelsLoader; + + public void Start() + { + levelsLoader = GameObject.FindGameObjectWithTag("LevelsLoader").GetComponent(); + } + public void PreviousLevel() { - // TODO + levelsLoader.PreviousLevel(); } } diff --git a/Assets/Scripts/Player.cs b/Assets/Scripts/Player.cs index 846b4ce..1860a4e 100644 --- a/Assets/Scripts/Player.cs +++ b/Assets/Scripts/Player.cs @@ -19,7 +19,7 @@ public class Player : MonoBehaviour { levelsLoader = GameObject.FindGameObjectWithTag("LevelsLoader").GetComponent(); - audioSource.clip = Resources.Load(Path.Combine("Musics", levelsLoader.level.musicName)); + audioSource.clip = Resources.Load(Path.Combine("Musics", levelsLoader.levelCurrent.musicName)); audioSource.Play(); var mainModule = particle.main;