예제 #1
0
    private void gerarAlternativo(out List <GameObject> thisLevelNodes)
    {
        thisLevelNodes = new List <GameObject>();
        RandomGraph rg = new RandomGraph(numPoints, maxDistance, minDistance);

        foreach (var v in rg.PopulateVertices())
        {
            var go = fac.SpawnNetworkNode(Random.Range(3, 6), Random.Range(0, 6) * 15, NetworkNode.NodeState.NS_Visible, getPosition(v.x, v.y));
            thisLevelNodes.Add(go);
            v.tag = go;
        }

        // gerar arestas
        int numcons = 0;

        foreach (var e in rg.PopulateEdges(forgiveDistance))
        {
            numcons++;
            fac.CreateConnection((GameObject)e.A.tag, (GameObject)e.B.tag);
        }

        // gerar nos 0 - 2
        NetworkNode inputNode = null;

        for (int i = 0; i < 3; i++)
        {
            RandomGraph.Vertex p;
            var v  = rg.CreateNew(out p);
            var go = fac.SpawnNetworkNode(i, Random.Range(0, 6) * 15, NetworkNode.NodeState.NS_Visible, getPosition(v.x, v.y));
            thisLevelNodes.Add(go);
            v.tag = go;

            fac.CreateConnection((GameObject)v.tag, (GameObject)p.tag);

            if (i == 0)
            {
                inputNode = go.GetComponent <NetworkNode>();
            }
        }

        // ativar nos conectados
        foreach (var conn in inputNode.Connetions)
        {
            var other = conn.nodes[0].netnode == inputNode ? conn.nodes[1].netnode : conn.nodes[0].netnode;
            other.State = NetworkNode.NodeState.NS_Active;
        }
        Debug.Log("LEVEL GERADO COM ALGORITMO RESERVA!!!");
    }