void Start()
    {
        uiHiScore.text     = "Highscore: " + PlayerPrefs.GetInt("Score").ToString();
        CurrentLevelLoaded = new Room[MapSize][];
        for (int i = 0; i < MapSize; i++)
        {
            CurrentLevelLoaded[i] = new Room[MapSize];
        }

        levelCollection = Resources.LoadAll <GameObject>("Levels");

        Debug.Log(levelCollection.Length + " levels loaded");

        RoomCoord = new Vector2(MapSize / 2, MapSize / 2);
        CurrentLevelLoaded[(int)RoomCoord.x][(int)RoomCoord.y].room   = Instantiate(levelCollection[0], transform);
        CurrentLevelLoaded[(int)RoomCoord.x][(int)RoomCoord.y].Walked = true;
        //Debug.Log("Spawned new room @ + " + RoomCoord.x + " " + RoomCoord.y);

        movementDirection = MovementDirectionForLoad.stop;
        if (EnemyPrefabs.Length == 0)
        {
            Debug.LogError("No enemies loaded by LevelManager Script! Consider contacting god.");
        }
    }
    public void MovementSystem(MovementDirectionForLoad movement)
    {
        movementDirection = movement;
        if (movementDirection != MovementDirectionForLoad.stop)
        {
            int JumpDoor = 0;
            CurrentLevelLoaded[(int)RoomCoord.x][(int)RoomCoord.y].room.SetActive(false);
            //movement calculations for directional
            switch (movementDirection)
            {
            case MovementDirectionForLoad.up:
                if (RoomCoord.y > 0)
                {
                    RoomCoord.y -= 1;
                    JumpDoor     = 2;
                }
                break;

            case MovementDirectionForLoad.left:
                if (RoomCoord.x > 0)
                {
                    RoomCoord.x -= 1;
                    JumpDoor     = 1;
                }
                break;

            case MovementDirectionForLoad.down:
                if (RoomCoord.y < CurrentLevelLoaded[0].Length - 1)
                {
                    RoomCoord.y += 1;
                    JumpDoor     = 0;
                }
                break;

            case MovementDirectionForLoad.right:
                if (RoomCoord.x < CurrentLevelLoaded[0].Length - 1)
                {
                    RoomCoord.x += 1;
                    JumpDoor     = 3;
                }
                break;
            }

            //if we haven't loaded a room already, then load a new one
            if (CurrentLevelLoaded[(int)RoomCoord.x][(int)RoomCoord.y].Walked != true) //!= true as we haven't set to false
            {
                UpdateScore(100);
                CurrentLevelLoaded[(int)RoomCoord.x][(int)RoomCoord.y].Walked = true;                                                                             //set the room as walked
                CurrentLevelLoaded[(int)RoomCoord.x][(int)RoomCoord.y].room   = Instantiate(levelCollection[Random.Range(0, levelCollection.Length)], transform); //and spawn the new shit
                CurrentLevelLoaded[(int)RoomCoord.x][(int)RoomCoord.y].room.SetActive(true);                                                                      //should be redundant, but we never know.
                //Debug.Log("Spawned new room @ + " + RoomCoord.x + " " + RoomCoord.y);

                //load enemies here, cause this is only called when we're loading a new room
                List <GameObject> tempEnemyBucket = new List <GameObject>();
                for (int i = 0; i < Random.Range(1, 9); i++)
                {
                    tempEnemyBucket.Add(EnemyPrefabs[Random.Range(0, EnemyPrefabs.Length)]); //add a random enemy for new rooms, between 1 & 8 count.
                }
                for (int i = 0; i < tempEnemyBucket.Count; i++)
                {
                    // set the transform for enemy (i) to the Current level's spawn point between a and h
                    tempEnemyBucket[i].transform.position = GameObject.Find(CurrentLevelLoaded[(int)RoomCoord.x][(int)RoomCoord.y].room.name + "/" + SpawnPos[i].ToString()).transform.position;
                    tempEnemyBucket[i]      = Instantiate(tempEnemyBucket[i]);
                    tempEnemyBucket[i].name = "Enemy";
                }
                tempEnemyBucket.Clear();
            }
            else
            {
                CurrentLevelLoaded[(int)RoomCoord.x][(int)RoomCoord.y].room.SetActive(true);
            }
            //if this works I'm probably gonna fucken cry omg
            Player.transform.position = GameObject.Find(CurrentLevelLoaded[(int)RoomCoord.x][(int)RoomCoord.y].room.name + "/" + JumpDoor.ToString()).transform.position;
            Player.GetComponent <Rigidbody2D>().velocity = new Vector2(0, 0);
            movementDirection = MovementDirectionForLoad.stop;
        }
    }