public void GenerateMap(int shortest, int Nodesnum)
    {
        g = new MapGenGraph();

        g.InitGraph(shortest, Nodesnum);

        CreateMap(g);

        List <GameObject> knights = new List <GameObject>();

        knights.Add(Instantiate(knight, new Vector3(0.0f, 0.16f, 0.0f), new Quaternion(0.0f, 0.0f, 0.0f, 0.0f)));
        knights[knights.Count - 1].GetComponent <Animator>().runtimeAnimatorController = knight1Animator;

        if (!GenerateAtStart)
        {
            GameplayController.registerKnight(knights[knights.Count - 1], 1);
        }

        knights.Add(Instantiate(knight, new Vector3(0.0f, -0.16f, 0.0f), new Quaternion(0.0f, 0.0f, 0.0f, 0.0f)));
        knights[knights.Count - 1].GetComponent <Animator>().runtimeAnimatorController = knight2Animator;

        if (!GenerateAtStart)
        {
            GameplayController.registerKnight(knights[knights.Count - 1], 2);
        }

        knights.Add(Instantiate(knight, new Vector3(0.16f, 0.16f, 0.0f), new Quaternion(0.0f, 0.0f, 0.0f, 0.0f)));
        knights[knights.Count - 1].GetComponent <Animator>().runtimeAnimatorController = knight3Animator;

        if (!GenerateAtStart)
        {
            GameplayController.registerKnight(knights[knights.Count - 1], 3);
        }

        knights.Add(Instantiate(knight, new Vector3(-0.16f, 0.16f, 0.0f), new Quaternion(0.0f, 0.0f, 0.0f, 0.0f)));
        knights[knights.Count - 1].GetComponent <Animator>().runtimeAnimatorController = knight4Animator;

        if (!GenerateAtStart)
        {
            GameplayController.registerKnight(knights[knights.Count - 1], 4);
        }

        knights.Add(Instantiate(knight, new Vector3(0.16f, 0.0f, 0.0f), new Quaternion(0.0f, 0.0f, 0.0f, 0.0f)));
        knights[knights.Count - 1].GetComponent <Animator>().runtimeAnimatorController = knight5Animator;

        if (!GenerateAtStart)
        {
            GameplayController.registerKnight(knights[knights.Count - 1], 5);
        }

        int     i = 0;
        Fighter f = null;

        foreach (var k in knights)
        {
            k.GetComponent <SpriteRenderer>().sprite = sprites[i];
            f             = k.GetComponent <Fighter>();
            f.currentNode = g.Start.jnode;
            FighterController.fighters.Add(f);
            i++;
        }
        g.Start.jnode.fighterCount = 5;
        g.Start.jnode.visited      = true;

        FighterController.goOut();

        g.Print();
    }
    public void CreateMap(MapGenGraph g)
    {
        List <Vertex> visited = new List <Vertex>();
        List <Vertex> waiting = new List <Vertex>();

        waiting.Add(g.Start);


        while (waiting.Count != 0)
        {
            Vertex v = waiting[0];
            visited.Add(v);
            waiting.RemoveAt(0);

            for (int i = 0; i < 4; i++)
            {
                if (v.CheckNeighbour(i))
                {
                    Vertex n = v.GetNeighbour(i);
                    if (!properContains(visited, n))
                    {
                        PutCorBtwNeighBours(v, n, i);

                        if (!properContains(waiting, n))
                        {
                            waiting.Add(n);
                        }
                    }
                }
            }

            if (v == g.Start)
            {
                PutNormalRoom(new Vector3((v.X - g.Start.X) * 2 * corridors * SQUARE_SIDE, -1 * (v.Y - g.Start.Y) * 2 * corridors * SQUARE_SIDE), v, false);
                var roomobject = Instantiate(StartTile, new Vector3((v.X - g.Start.X) * 2 * corridors * SQUARE_SIDE, -1 * (v.Y - g.Start.Y) * 2 * corridors * SQUARE_SIDE), new Quaternion(0.0f, 0.0f, 0.0f, 0.0f));
            }
            else if (v == g.Finish)
            {
                PutNormalRoom(new Vector3((v.X - g.Start.X) * 2 * corridors * SQUARE_SIDE, -1 * (v.Y - g.Start.Y) * 2 * corridors * SQUARE_SIDE), v, false);
                var roomobject = Instantiate(FinishTile, new Vector3((v.X - g.Start.X) * 2 * corridors * SQUARE_SIDE, -1 * (v.Y - g.Start.Y) * 2 * corridors * SQUARE_SIDE), new Quaternion(0.0f, 0.0f, 0.0f, 0.0f));
            }
            else
            {
                int sorn = Random.Range(0, 100);


                if (sorn > 20)
                {
                    bool putspec = false;

                    if (v.CheckNeighbour(0) && v.CheckNeighbour(2) && !v.CheckNeighbour(1) && !v.CheckNeighbour(3))
                    {
                        if (Random.Range(0, 1) == 0)
                        {
                            PutSpecRoom(new Vector3((v.X - g.Start.X) * 2 * corridors * SQUARE_SIDE + SQUARE_SIDE / 2, -1 * (v.Y - g.Start.Y) * 2 * corridors * SQUARE_SIDE), v);
                            putspec = true;
                        }
                    }

                    if (!v.CheckNeighbour(0) && !v.CheckNeighbour(2) && v.CheckNeighbour(1) && v.CheckNeighbour(3))
                    {
                        PutNormalRoom(new Vector3((v.X - g.Start.X) * 2 * corridors * SQUARE_SIDE, -1 * (v.Y - g.Start.Y) * 2 * corridors * SQUARE_SIDE), v, false, true, false);
                        putspec = true;
                    }

                    if (v.CheckNeighbour(0) && v.CheckNeighbour(2) && v.CheckNeighbour(1) && v.CheckNeighbour(3))
                    {
                        PutNormalRoom(new Vector3((v.X - g.Start.X) * 2 * corridors * SQUARE_SIDE, -1 * (v.Y - g.Start.Y) * 2 * corridors * SQUARE_SIDE), v, false, true, true);
                        putspec = true;
                    }



                    if (!putspec)
                    {
                        //Azért van csere, mert koordináta váltás
                        PutSmallRoom(new Vector3((v.X - g.Start.X) * 2 * corridors * SQUARE_SIDE, -1 * (v.Y - g.Start.Y) * 2 * corridors * SQUARE_SIDE), v);
                    }
                }
                else
                {
                    PutNormalRoom(new Vector3((v.X - g.Start.X) * 2 * corridors * SQUARE_SIDE, -1 * (v.Y - g.Start.Y) * 2 * corridors * SQUARE_SIDE), v);
                }
            }
        }
    }