private void InitializeGrid() { ResearchLoader.GetGrids("Tier0Layouts", out List <ResearchGrid> grids); ResearchGrid grid = grids[Random.Range(0, grids.Count)]; ResearchLoader.GetNodes("Tier0Technologies", out List <ResearchNode> researchNodes); nodes = new ResearchNode[Constants.numberOfTiers][][]; if (grid.FillGrid(researchNodes, 0, out ResearchNode[][] researchNodeGrid))
static ResearchLoader() { Debug.Log("Loading Research Grids"); DirectoryInfo d = new DirectoryInfo(Application.dataPath + "/Resources/Research"); FileInfo[] csvFiles = d.GetFiles("*.csv"); foreach (FileInfo file in csvFiles) { Debug.Log("Loading " + file.Name); List <ResearchGrid> gridList = new List <ResearchGrid>(); string[] lines = File.ReadAllLines(file.FullName); string[] row; string[][] grid; List <string[]> rows = new List <string[]>(); Coord start = new Coord(0, 0); Coord end = new Coord(0, 0); for (int i = 0; i < lines.Length; i++) { row = lines[i].Split(','); if (row.Length > 1) { rows.Add(row); } else if (rows.Count >= 1) //if we have something to add { Debug.Log("Adding Grid " + rows.Count + " " + rows[0].Length); grid = new string[rows[0].Length][]; for (int j = 0; j < rows.Count; j++) { grid[j] = rows[j]; } ResearchGrid researchGrid = new ResearchGrid(grid); gridList.Add(researchGrid); rows.Clear(); } } //just to check at the end if we have any left over grids if (rows.Count >= 1) { Debug.Log("Adding Grid " + rows.Count + " " + rows[0].Length); grid = new string[rows[0].Length][]; for (int j = 0; j < rows.Count; j++) { grid[j] = rows[j]; } ResearchGrid researchGrid = new ResearchGrid(grid); gridList.Add(researchGrid); rows.Clear(); } researchGrids.Add(file.Name.Substring(0, file.Name.Length - 4), gridList); } Debug.Log("Loading Research Nodes"); FileInfo[] txtFiles = d.GetFiles("*.txt"); foreach (FileInfo file in txtFiles) { Debug.Log("Loading " + file.Name); List <ResearchNode> nodeList = new List <ResearchNode>(); string[] lines = File.ReadAllLines(file.FullName); for (int i = 0; i < lines.Length; i++) { List <string> strings = Utility.SplitOnTopLevelBrackets(lines[i]); if (strings.Count < 4) { Debug.LogError("Bad string parsed in " + file.FullName + " line " + i); } else { ResearchNodeType nodeType; if (strings[0] == "MANDATORY") { nodeType = ResearchNodeType.Mandatory; } else if (strings[0] == "END") { nodeType = ResearchNodeType.End; } else if (strings[0] == "START") { nodeType = ResearchNodeType.Start; } else { nodeType = ResearchNodeType.Optional; } if (int.TryParse(strings[1], out int cost)) { string effect = strings[2]; string name = strings[3]; ResearchNode node = new ResearchNode(cost, name, effect, nodeType); nodeList.Add(node); } else { Debug.LogError("Bad int parsed in " + file.FullName + " line " + i); } } } researchNodes.Add(file.Name.Substring(0, file.Name.Length - 4), nodeList); } }