private Surface[] VerschillendeLevels = new Surface[5]; // //Verschillende keuzes(2de startscherm)

        #endregion Fields

        #region Constructors

        public Manager()
        {
            play = new Audio(); //aanmaken audio
            audioThread = new Thread(new ThreadStart(play.PlayAudio));//starten tread
            laadTextarrays();//Aanmaken van textblock voor beginscherm
            startaf = new Surface("motherload_logo.png");//toewijzen van afb(1ste startscherm)
            Levelkeuze = new Surface("motherload_logo2.png");//toewijzen van afb(2de startscherm)
            LoseScreen = new Surface("explosion.png"); //Toewijzen afb eindscherm
            mVideo = Video.SetVideoMode(750,600);//Grote van window instellen
            Video.WindowCaption = "Motherload"; //Titel in titelbalk instellen
            speler = new Player();//aanmaken van speler
            level = new Level();//aanmaken van level
            gameObjecten = new List<GameObject>();
            col = new CollisionDetection();//aanmaken van nieuw collisionDetection
            removeDirt = new RemoveDirt();//Aanmaken van Removedirt
            gameObjecten.Add(speler);
            laad = new LoadLevel();
            Cheater = new CheatEngin();
            audioThread.Start();
            CreerLevens();
            Events.Fps = 60;
            Events.KeyboardDown += Events_KeyboardDown;
            Events.Quit += Events_Quit;
            Events.Tick += Events_Tick;
            Events.Run();
        }
        public void Removedirt( Player speler,Level level)
        {
            Rectangle onder = new Rectangle(speler.Position.X+10, speler.Position.Y + 50, 45, 4);
             Rectangle left = new Rectangle(speler.Position.X, speler.Position.Y + 10, 4, 35);
             if (speler.down == true && onder.IntersectsWith(level.SaveColDirt.Rect))
            {
             if(level.SaveColDirt.ID!=5)
             {
                 level.dirtobject.Remove(level.SaveColDirt);
                 saveLeeg = copyEigenschappen(level.SaveColDirt);
                 level.leegObject.Add(saveLeeg);
                 speler.MaxY = 600;
                 speler.MaxX = 750;
                 speler.MinX = 0;
                 score += level.SaveColDirt.ID * 10;
                 foreach (Dirt g in level.dirtobject)
                 {
                     g.Update();
                 }
                 foreach(Leeg L in level.leegObject)
                 {
                     L.Update();
                 }
                 level.SaveColDirt = new Dirt();
             }

            }
        }
        public void Collisiondetection(Player speler, Level level)
        {
            multrec[0] = new Rectangle(speler.Position.X + 10, speler.Position.Y, 45, 4);
            multrec[1] = new Rectangle(speler.Position.X, speler.Position.Y + 10, 4, 35);
            multrec[2] = new Rectangle(speler.Position.X + 60, speler.Position.Y + 10, 4, 30);
            multrec[3] = new Rectangle(speler.Position.X + 10, speler.Position.Y + 50, 45, 4);

            CheckDirtCol(multrec, level, speler);

              if(speler.Position.Y> tempPoint.Y-50 && speler.Collision == true)
              {
              speler.MaxY = (tempPoint.Y - 50);
              }
              CheckVoidCol(multrec, level, speler);
              CheckDiamondCol(multrec, level, speler);
              CheckEnd(multrec, level, speler);
        }
        private void CheckDiamondCol(Rectangle[] multrec, Level level, Player speler)
        {
            foreach (Diamant D in level.DiamantObj)
            {
                if (CheckRectangleCollision(multrec[3], D.Rect) == true || CheckRectangleCollision(multrec[0], D.Rect) == true ||CheckRectangleCollision(multrec[2], D.Rect) == true||CheckRectangleCollision(multrec[1], D.Rect) == true) //colision op onderste col rect met collision rect van elementen dirt
                {
                    SaveD = D;
                    score++;
                    ELeven++;
                    if(ELeven ==10)
                    {
                        extraleven = true;
                        ELeven = 0;
                    }

                }

            }
            level.DiamantObj.Remove(SaveD);
            SaveD = new Diamant();
        }
        // stijgen
        private void schuifWereldYMin(Player speler)
        {
            foreach (Dirt g in dirtobject)
            {
                g.Position.Y += 5;
                g.sy += 5;
            }

            speler.Position.Y += 5;
            foreach (Leeg L in leegObject)
            {
                L.Position.Y += 5;
                L.sy += 5;
            }
            foreach (Diamant D in DiamantObj)
            {
                D.Position.Y += 5;
            }
            foreach (Finale f in Finish)
            {
                f.Position.Y += 5;
            }
            tellerY += 5;
        }
        // dalen
        private void schuifWereldYMax(Player speler)
        {
            foreach(Dirt g in dirtobject)
              {
              g.Position.Y -=speler.Gravety;
              g.sy -= speler.Gravety;
              }
            speler.Position.Y-=speler.Gravety;

            foreach(Leeg L in leegObject)
            {
                L.Position.Y -= speler.Gravety;
                L.sy -= speler.Gravety;
            }
            foreach(Diamant D in DiamantObj)
            {
                D.Position.Y -= speler.Gravety;
            }
            foreach (Finale f in Finish)
            {
                f.Position.Y -= speler.Gravety;
            }
            tellerY -= speler.Gravety;
        }
 public void MoveLevel(Player speler)
 {
     if (speler.Position.X > 500  && speler.right == true && tellerX >-960) //rechts
         {
             schuifWereldXMax(speler);
         }
         if (speler.Position.X < 100 &&speler.left == true && tellerX <0)   ///links
         {
             schuifWereldXMin(speler);
         }
         if (speler.Position.Y > 250 ) //dalen
         {
             schuifWereldYMax(speler);
         }
         if (speler.Position.Y < 150 && tellerY<0 )   //stijgen
         {
             schuifWereldYMin(speler);
         }
 }
        void Events_KeyboardDown(object sender, SdlDotNet.Input.KeyboardEventArgs e)
        {
            if (startMenu == true)//Mag het startlenu getoont worden
            {
                if (e.Key == SdlDotNet.Input.Key.UpArrow)//freemode Up
                {
                    if (beweeg.Y > 450)
                        beweeg.Y -= 50;

                    selctieboxje = new Box(beweeg, new Size(750, 50));
                }
                if (e.Key == SdlDotNet.Input.Key.DownArrow) //Down
                {
                    if (beweeg.Y < 550)
                        beweeg.Y += 50;
                    selctieboxje = new Box(beweeg, new Size(750, 50));
                }
            }
                if (levela == true) //kan het twede startscherm getoond worden
                {
                    if (e.Key == SdlDotNet.Input.Key.UpArrow)//freemode Up
                    {
                        if (levela == true)
                            if (textvalue < 250)
                                textvalue += 50;
                    }
                    if (e.Key == SdlDotNet.Input.Key.DownArrow) //Down
                    {
                        if (levela == true)
                            if (textvalue > 100)
                                textvalue -= 50;
                    }
                }
                if(e.Key == SdlDotNet.Input.Key.Escape)
                {
                    if ((Remaining.TotalMilliseconds <= 0 || speler.Levens <= 0) && end == true)
                    {
                        play.StopMusic();
                        esc = true;
                        Events.QuitApplication();
                        PlayBoem = true;
                        PlayYha = true;
                    }
                    if(col.GameEnd || Cheater.Enough)
                    {
                        speler = new Player();
                        level = new Level();
                        gameObjecten = new List<GameObject>();
                        col = new CollisionDetection();
                        removeDirt = new RemoveDirt();
                        gameObjecten.Add(speler);
                        laad = new LoadLevel();
                        CreerLevens();
                        levela = true;
                        Level1 = false;
                        Level2= false;
                        PlayBoem = true;
                        PlayYha = true;
                        kleur = Color.Green;

                    }
                }
            if(e.Key==SdlDotNet.Input.Key.F1)
            {
                Cheater.CheatBaar = true;
            }
                if (e.Key == SdlDotNet.Input.Key.Return)
                {
                    if (startMenu ==true)
                    {
                        if (beweeg.Y == 550)
                        {
                            Events.QuitApplication();
                        }
                        else if (beweeg.Y == 500)
                        {
                            levela = true;
                            startMenu = false;
                            go = false;
                        }
                        else if (beweeg.Y == 450)
                        {
                            laad.LevelFile = "Level.txt";
                            initialize();
                            Free = true;
                            end = true;
                            go = false;
                        }
                    }
                    if(levela == true)
                    {
                        if(textvalue == 100)
                        {
                            Events.QuitApplication();
                        }
                        else if(textvalue ==150)
                        {
                            levela = false;
                            Free = false;
                            beweeg.Y = 450;
                            textvalue = 250;
                            startMenu = true;
                            go = false;
                        }
                        else if(textvalue ==200)
                        {
                            laad.LevelFile = "Level2.txt";
                            initialize();
                            Time = DateTime.Now;
                            Level2 = true;
                            levela = false;
                            end = true;

                        }
                        else if(textvalue == 250 && go ==true)
                        {
                            laad.LevelFile = "Level1.txt";
                            initialize();
                            Time = DateTime.Now;
                            end = true;
                            Level1 = true;
                            levela = false;
                        }
                        go = true;
                    }

                }
        }
        private void CheckDirtCol(Rectangle[] multrec , Level level , Player speler)
        {
            foreach (Dirt g in level.dirtobject)
            {

                if (CheckRectangleCollision(multrec[3], g.Rect) == true) //colision op onderste col rect met collision rect van elementen dirt
                {

                    level.SaveColDirt = g;
                    tempPoint = g.Position;
                    speler.MaxY = speler.Position.Y;
                    if (speler.Gravety > 12 && speler.Gravety < 17)
                    {

                        muziek.PlayMetalClash(60);
                        speler.Levens -= 1;
                        speler.Gravety = 0;
                    }
                    else if (speler.Gravety > 17 && speler.Gravety < 21)
                    {
                        muziek.PlayMetalClash(80);

                        speler.Levens -= 2;
                        speler.Gravety = 0;
                    }
                    else if (speler.Gravety > 21)
                    {
                       muziek.PlayMetalClash(100);
                        speler.Levens -= 3;
                        speler.Gravety = 0;
                    }
                    speler.Collision = true;
                }
                if (CheckRectangleCollision(multrec[0], g.Rect) == true)//col voor boven rect
                {
                    level.SaveColDirt = g;
                    speler.MinY = speler.Position.Y;
                }
                if (CheckRectangleCollision(multrec[2], g.Rect) == true)//col voor rechtse rect
                {

                    level.SaveColDirt = g;
                    speler.MaxX = speler.Position.X;

                }
                if (CheckRectangleCollision(multrec[1], g.Rect) == true)// col voor linkse rect
                {
                    level.SaveColDirt = g;
                    speler.MinX = speler.Position.X;
                }
            }
        }
        private void CheckVoidCol(Rectangle[] multrec, Level level, Player speler)
        {
            foreach (Leeg L in level.leegObject)
            {

                if ((CheckRectangleCollision(multrec[3], L.Rect) == true) && (CheckRectangleCollision(multrec[3], level.SaveColDirt.Rect) == false))
                {
                    speler.MaxY = 600;
                    speler.Collision = false;

                }
                if (CheckRectangleCollision(multrec[0], L.Rect) == true && CheckRectangleCollision(multrec[0], level.SaveColDirt.Rect) == false)
                {
                    speler.MinY = 0;

                }
                if (CheckRectangleCollision(multrec[2], L.Rect) == true && CheckRectangleCollision(multrec[2], level.SaveColDirt.Rect) == false)
                {
                    speler.MaxX = 750;

                }
                if (CheckRectangleCollision(multrec[1], L.Rect) == true && CheckRectangleCollision(multrec[1], level.SaveColDirt.Rect) == false)
                {
                    speler.MinX = 0;
                }
            }
        }
        private void CheckEnd(Rectangle[] multrec, Level level, Player speler)
        {
            foreach (Finale f in level.Finish)
            {
                if ((CheckRectangleCollision(multrec[3], f.Rect) == true) || (CheckRectangleCollision(multrec[1], f.Rect) == true) || (CheckRectangleCollision(multrec[2], f.Rect) == true))
                {
                    speler.MaxY = speler.Position.Y;
                    if(f.iD ==8)
                    gameEnd = true;

                }
            }
        }