public void LoadAreaTableFromFile(string fileName) { string filePath = Path.Combine(Application.persistentDataPath, fileName); if (File.Exists(filePath)) { using (StreamReader streamReader = File.OpenText(filePath)) { string jsonData = streamReader.ReadToEnd(); Debug.LogFormat("jsonData: {0}", jsonData); // JsonUtility.FromJson<CharacterData> (jsonString); EnemyAreaTableData enemyAreaTableData = JsonToEnemyAreaTableData(jsonData); Debug.LogFormat("enemyAreaTableData: {0}", enemyAreaTableData); // For each table entry, add the enemy to their designated area(s). for (int i = 0; i < enemyAreaTableData.enemyAreaTableEntries.Length; i++) { EnemyAreaTableEntry entry = enemyAreaTableData.enemyAreaTableEntries[i]; if (entry == null) { continue; // Area doesnt contain any data. } EnemyTierEntry[] tierEntries = entry.enemyTierListEntries; for (int j = 0; j < tierEntries.Length; j++) { if (tierEntries[j] == null) { continue; } for (int k = 0; k < tierEntries[j].enemies.Count; k++) { AddEnemyToAreaTable(entry.area, j, entry.enemyTierListEntries[j].enemies[k]); } } } Debug.LogFormat("loaded area table: {0}", AreaDictionaryToJson(areaTable)); } // string jsonData = File.ReadAllText (filePath); // EnemyAreaTableData enemyAreaTableData = JsonToEnemyAreaTableData(jsonData); //// Debug.LogFormat("enemyAreaTableData: {0}", enemyAreaTableData); // // For each table entry, add the enemy to their designated area(s). // for (int i = 0; i < enemyAreaTableData.enemyAreaTableEntries.Length; i++) { // EnemyAreaTableEntry entry = enemyAreaTableData.enemyAreaTableEntries[i]; // EnemyTierEntry[] tierEntries = entry.enemyTierListEntries; // for (int j = 0; j < tierEntries.Length; j++) { // if(tierEntries[j] == null) continue; // for (int k = 0; k < tierEntries[j].enemies.Count; k++) { // AddEnemyToAreaTable(entry.area, j, entry.enemyTierListEntries[j].enemies[k]); // } // } // } // Debug.LogFormat("loaded area table: {0}", AreaDictionaryToJson(areaTable)); } else { Debug.LogFormat("File {0} was not found.", fileName); } }
private EnemyAreaTableData JsonToEnemyAreaTableData(string jsonData) { JSONNode node = JSON.Parse(jsonData); JSONArray areas = node["areaTableEntries"].AsArray; Debug.LogFormat("areas.Count {0}", areas.Count); EnemyAreaTableData result = new EnemyAreaTableData { enemyAreaTableEntries = new EnemyAreaTableEntry[areaCount] }; // For each area in the json file... foreach (var area in areas) { JSONNode areaInfo = area.Value; WorldArea areaName = (WorldArea)areaInfo["area"].AsInt; // Get area JSONArray tierList = areaInfo["enemyTiers"].AsArray; // Get the areas tier list EnemyAreaTableEntry enemyAreaTableEntry = new EnemyAreaTableEntry { area = areaName, enemyTierListEntries = new EnemyTierEntry[MAX_LEVELS] }; // For each table entry foreach (var tierListInfo in tierList) { JSONNode tierInfo = tierListInfo.Value; int tier = tierInfo["tier"]; // Get the tier JSONArray enemies = tierInfo["enemies"].AsArray; // Get the enemy list enemyAreaTableEntry.enemyTierListEntries[tier] = new EnemyTierEntry { enemies = new List <string>() }; foreach (var enemy in enemies) { enemyAreaTableEntry.enemyTierListEntries[tier].enemies.Add(enemy.Value); // Add enemies to the list } } Debug.LogFormat("areaName {0}, {1}", areaName, result.enemyAreaTableEntries[(int)areaName]); result.enemyAreaTableEntries[(int)areaName] = enemyAreaTableEntry; // Add the table entry to the area } return(result); }