// Start is called before the first frame update
    void Start()
    {
        //foreach (Transform child in LevelTileArray.transform)
        //{
        //    _tileList.Add(child.gameObject.GetComponent<TileInformation>());
        //}


        daRocks = GetComponent <AsteroidGenerator>();
        FindObjectOfType <UndestroyableData>().SetUpLevel(ref MapDemensionsX, ref MapDemensionsY, ref FillMap,
                                                          ref TileQuantity, ref WarnForXManyFrames, ref CloseRoomXManyFrames,
                                                          ref daRocks.AsteroidSpeed, ref daRocks.chuckEvery, ref daRocks.plusOrMinus);

        foreach (Transform child in PlayerArray.transform)
        {
            if (child.gameObject.GetComponent <CharacterMovement_Physics>().Environment == null)
            {
                child.gameObject.GetComponent <CharacterMovement_Physics>().Environment = this;
            }
            if (PlayerDoorDashSpeed != -1)
            {
                child.gameObject.GetComponent <CharacterMovement_Physics>().doorPullSpeed = PlayerDoorDashSpeed;
            }
        }


        Map = new TileInformation[MapDemensionsY][];
        for (int i = 0; i < MapDemensionsY; ++i)
        {
            Map[i] = new TileInformation[MapDemensionsX];
            //for(int j=0; j<MapDemensions; ++j)
            //    Map[i][j] = new TileInformation();
        }
        PlacedTileList = new List <Object>();

        int tileCount = 0;//, playerSpawnerCount = 0 ;

        foreach (Transform child in LevelTileArray.transform)
        {
            tileCount++;
            //playerSpawnerCount+=child.GetComponent<TileInformation>().PlayerSpawners.Length;
        }

        //print("count=" + playerSpawnerCount);
        TilePallette = new GameObject[tileCount];
        //PlayerSpawners = new PlayerSpawner[playerSpawnerCount];
        tileCount = 0;
        //playerSpawnerCount = 0;
        foreach (Transform child in LevelTileArray.transform)
        {
            //foreach(PlayerSpawner g in child.GetComponent<TileInformation>().PlayerSpawners)
            //    PlayerSpawners[playerSpawnerCount++] = g;



            child.gameObject.SetActive(false);
            TilePallette[tileCount] = child.gameObject;
            TileInformation tmp = TilePallette[tileCount].GetComponent <TileInformation>();


            tmp.closeEast();
            tmp.closeNorth();
            tmp.closeSouth();
            tmp.closeWest();
            tileCount++;
        }


        setUpItemPallette();


        if (Seed != -1)
        {
            Random.InitState(Seed);
        }
        //Random.seed = Seed;

        doorManager = new DoorManager(Map, FramesToKeepDoorsOpen);
        randomizeLevel();

        //daRocks.Init(startX, startY, startZ, xTileSize, yTileSize, WarnForXManyFrames);
    }