public void ParseLevel(string filename) { // open level file if (System.IO.File.Exists(filename)) { Dictionary<string, object> json = (Dictionary<string, object>)MiniJSON.Json.Deserialize(File.ReadAllText(filename)); levelName = (string)json["name"]; musicFolder = (string)json["music"]; List<object> waves = (List<object>)json["waves"]; foreach (Dictionary<string, object> wave in waves) { WaveDefinition waveDefn = new WaveDefinition((long)wave["id"], (string)wave["track"]); foreach (Dictionary<string, object> enemy in (List<object>)wave["enemies"]) { Vector3 vec = new Vector3(); List<object> arr = (List<object>)enemy["spawnPos"]; for (int i = 0; i < arr.Count; i++) { vec[i] = (float)((double)arr[i]); } waveDefn.AddEnemy((long)enemy["id"], vec, (float)((double)enemy["delay"])); } waveDefns.Add(waveDefn); } List<object> level = (List<object>)json["level"]; foreach (List<object> wave in level) { levelDefn.AddPair((long)wave[0], (float)((double)wave[1])); } } else { Debug.LogError("Could not open level " + filename); } GameObject.Find("MixerObject").GetComponent<Mixer>().LoadTracks(musicFolder); }