Пример #1
0
    private void OnEnable()
    {
        gridData = GridDataReader.ReadData(gridConfigFile);
        nodeData = NodeDataReader.ReadData(nodeConfigFile);

        CreateGrid(gridData, nodeData);
    }
Пример #2
0
    public void CreateGrid(GridConfigData gridData, int [,] nodeData)
    {
        Debug.Log("Building grid...");

        if (gridData == null)
        {
            throw new Exception("Grid data is null.");
        }

        NodeArray   = new Node [gridData.Size.X, gridData.Size.Y];
        GridSizeX   = gridData.Size.X;
        GridSizeY   = gridData.Size.Y;
        Nodes       = new List <Node> ();
        m_loopNodes = new List <Node> ();

        for (int x = 0; x < gridData.Size.X; x++)
        {
            for (int y = 0; y < gridData.Size.Y; y++)
            {
                if (nodeData == null)
                {
                    throw new Exception("nodeData is null.");
                }

                Vector3 worldPos = new Vector3(x * gridData.Spacing.X + gridData.Offset.X, y * gridData.Spacing.Y + gridData.Offset.Y, 0);
                NodeArray [x, y] = new Node(x, y, worldPos, nodeData [x, y]);
                Nodes.Add(NodeArray [x, y]);
            }
        }

        foreach (Node n in NodeArray)
        {
            n.AssignNeighbors(NodeArray);
            if (n.Type == Node.NodeType.LOOP_POINT)
            {
                m_loopNodes.Add(n);
            }
        }

        // Set loop nodes
        if (m_loopNodes.Count >= 2)
        {
            for (int i = 1; i < m_loopNodes.Count; i++)
            {
                m_loopNodes [i].SetLoopNode(m_loopNodes [i - 1]);
            }
            m_loopNodes [0].SetLoopNode(m_loopNodes [m_loopNodes.Count - 1]);
        }

        // Done building grid
        Debug.Log("Done building grid.");
    }
Пример #3
0
    public override void OnInspectorGUI()
    {
        myTarget = ( Grid )target;
        DrawDefaultInspector();

        // Generate grid button
        if (GUILayout.Button("Generate Grid"))
        {
            GridConfigData gridData = GridDataReader.ReadData(myTarget.gridConfigFile);
            int [,] nodeData = NodeDataReader.ReadData(myTarget.nodeConfigFile);
            myTarget.CreateGrid(gridData, nodeData);
        }
    }
Пример #4
0
 /// <summary>
 /// 初始化
 /// </summary>
 public void Init()
 {
     if (gridConfigDataDic == null)
     {
         gridConfigDataDic = new Dictionary <int, GridConfigData>();
         TextAsset textAsset = Resources.Load <TextAsset>("Config/Config");
         string[]  items     = textAsset.text.Replace("\r", "").Split('\n');
         for (int i = 1; i < items.Length; i++)
         {
             if (!string.IsNullOrEmpty(items[i]))
             {
                 string[]       infos          = items[i].Split(',');
                 GridConfigData gridConfigData = new GridConfigData();
                 gridConfigData.Ladder   = Convert.ToInt32(infos[0]);
                 gridConfigData.ShowInfo = infos[1];
                 //gridConfigData.GridColor =new Color( Convert.ToInt32(infos[2]);
                 {
                     int r = System.Convert.ToInt32("0x" + infos[2][0] + infos[2][1], 16);
                     int g = System.Convert.ToInt32("0x" + infos[2][2] + infos[2][3], 16);
                     int b = System.Convert.ToInt32("0x" + infos[2][4] + infos[2][5], 16);
                     gridConfigData.GridColor = new Color(r / 255f, g / 255f, b / 255f);
                 }
                 var createDatas = infos[3].Split('|');
                 gridConfigData.CreateMin = new List <int>();
                 for (int j = 0; j < createDatas.Length; j++)
                 {
                     gridConfigData.CreateMin.Add(Convert.ToInt32(createDatas[j]));
                 }
                 {
                     int r = System.Convert.ToInt32("0x" + infos[4][0] + infos[4][1], 16);
                     int g = System.Convert.ToInt32("0x" + infos[4][2] + infos[4][3], 16);
                     int b = System.Convert.ToInt32("0x" + infos[4][4] + infos[4][5], 16);
                     gridConfigData.FontColor = new Color(r / 255f, g / 255f, b / 255f);
                 }
                 gridConfigDataDic[gridConfigData.Ladder] = gridConfigData;
             }
         }
         //int index = 1;
         //do
         //{
         //    if (!gridConfigDataDic.ContainsKey(index))
         //    {
         //        break;
         //    }
         //    index++;
         //} while (true);
         //Debug.Log(index);
     }
 }