/// <summary>Saves the current grid as a json file.</summary> public void SaveGrid() { if (grid != null) { int[] parameters = gridParams.GetParamaters(); List <TileInfo> tiles = new List <TileInfo>(); foreach (EditorList row in grid) { foreach (EditorTile tile in row.list) { if (tile.Type != TileType.Standard || tile.GetVariant() != 0) { tiles.Add(tile.GetInfo()); } } } List <UnitInfo> spawns = new List <UnitInfo>(); spawns.Add(player.GetInfo()); foreach (EditorUnit decoy in decoyBotSpawns) { spawns.Add(decoy.GetInfo()); } //Create Turn Order dictionary Dictionary <UnitType, List <UnitInfo> > turnOrder = new Dictionary <UnitType, List <UnitInfo> >(); for (int i = 2; i < 10; i++) { UnitType type = (UnitType)i; List <UnitInfo> list = new List <UnitInfo>(); turnOrder.Add(type, list); } //Add enemies to their specific list in the turn order foreach (EditorUnit character in enemySpawns) { turnOrder[character.Type].Add(character.GetInfo()); } //Add enemy lists into spawns based on their turn order int[] types = { 4, 2, 9, 3, 5, 6, 8, 7 }; foreach (int index in types) { UnitType type = (UnitType)index; spawns.AddRange(turnOrder[type]); } List <LevelObjectInfo> objects = new List <LevelObjectInfo>(); foreach (EditorLevelObject levelObject in levelObjects) { objects.Add(levelObject.GetInfo()); } GridInfo info = new GridInfo(savefileName, gridParams.type, parameters, tiles, spawns, objects); string finalFileName = JsonSaveLoad.SaveFile <GridInfo>(FolderPath.Grids, info, savefileName, false, true); Debug.Log("Saved new Grid, [" + finalFileName + "]"); UpdateLoadableFiles(); currentGridFile = savefileName; } else { Debug.LogWarning("WARNING: Trying to save empty grid!"); } }