Пример #1
0
    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))
Пример #2
0
    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);
        }
    }