/// <summary>
        /// Allows the game to run logic such as updating the world,
        /// checking for collisions, gathering input, and playing audio.
        /// </summary>
        /// <param name="gameTime">Provides a snapshot of timing values.</param>
        protected override void Update(GameTime gameTime)
        {
            /*
            if (soundvolume > 0)
            {
                if (MediaPlayer.State != MediaState.Playing)
                {
                    MediaPlayer.Play(game.resources.backgroundsound);
                    soundtime = time;
                }
                if (soundtime + 108 * 1000 < time || soundtime == 0)
                {

                    MediaPlayer.Play(game.resources.backgroundsound);
                    soundtime = time;
                }
            }
            else
            {
                MediaPlayer.Stop();
            }
            */
            if (menu == null)
            {
                menu = new Menu(game);
            }
            lasttime = time;
            time = (long)gameTime.TotalGameTime.TotalMilliseconds - pausetime; ;
            touch = TouchPanel.GetState();

            // TODO: Add your update logic here
            switch(statemenager.currentstate){
                case 1:
            start.checktouch();
            touch = TouchPanel.GetState();
            break;
                case 21:
            if (aboutMenu.back == null)
            {
                aboutMenu.back = new button(0, game);
            }
            if (aboutMenu.back.ispressed(game.touch) == true)
            {
                statemenager.changestate(2);

            }
            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
            {
                statemenager.changestate(2);
            }
            break;
                case 2:
            menu.checkbuttons();
            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
            {
                if (game.currentgame == null)
                {
                    this.Exit();
                }
                else
                {
                    statemenager.currentstate = 5;
                }
            }
            break;
                case 3:
            settings.logic(touch);
            if (settings.back == null)
            {
                settings.back = new button(0, game);
            }
            if (settings.back.ispressed(touch) == true)
            {
                game.statemenager.changestate(2);
            }
            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
            {
                statemenager.changestate(2);
            }
            break;
                    case 4:
            if (scores.back == null)
            {
                scores.back = new button(0, game);
            }
            if (scores.back.ispressed(game.touch))
            {
                statemenager.changestate(2);

            }
            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
            {
                statemenager.changestate(2);
            }
            if (currentgame != null)
            {
                if (currentgame.lifes == 0)
                {
                    currentgame = null;
                }
            }
            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
            {
                statemenager.changestate(2);
            }
            break;
                case 5:
            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
            {
                statemenager.changestate(2);
            }
            if (game.currentgame.pause == false)
            {
                currentgame.hits();
                currentgame.ship.respawn();
                if (!currentgame.ship.destroyed)
                {
                    currentgame.ship.move(touch);
                    currentgame.ship.shot(touch, time);
                    currentgame.ship.crash();
                    currentgame.ship.getbonus(touch);
                }
                currentgame.movemissles();
                currentgame.shipslogic();
                currentgame.newstrike();
                currentgame.rubbishlogic();
                currentgame.bonuslogic();
                currentgame.scoreslogic();
                currentgame.endofgame(touch);
            }
            hud.logic(touch);
            break;
                default:
            statemenager.changestate(2);
            break;
                case 10:
            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
            {
                statemenager.changestate(5);
            }
            hud.helplogic(touch);
            break;

            }
            base.Update(gameTime);
        }
        /// <summary>
        /// This is called when the game should draw itself.
        /// </summary>
        /// <param name="gameTime">Provides a snapshot of timing values.</param>
        protected override void Draw(GameTime gameTime)
        {
            if (menu == null)
            {
                menu = new Menu(game);
            }
            GraphicsDevice.Clear(Color.CornflowerBlue);
            ekran.Begin();
            ekran.Draw(resources.menu, new Rectangle(0, 0, 480, 800), Color.White);
            switch (statemenager.currentstate)
            {
                case 1:
                    start.drawstartscreen();
                    break;
                case 21:
                    aboutMenu.back.draw();
                    ekran.Draw(resources.about, new Rectangle(0, 0, 480, 800), Color.White);
                    break;
                case 2:
                    menu.drawbuttons();
                    break;
                case 3:
                    settings.draw();
                    settings.back.draw();
                    break;
                case 4:
                    scores.back.draw();
                    scores.drawscores();
                    break;
                case 5:
                    hud.drawbackground();
                    currentgame.drawrubbish();
                    currentgame.bonusdraw();
                    currentgame.drawmissles();
                    currentgame.ship.drawship();
                    currentgame.drawships();
                    currentgame.ship.drawspeed();
                    currentgame.SmokesDrawAndLogic();
                    hud.drawbeam();
                    hud.drawfire();
                    hud.drawpad();
                    hud.drawbuttons();
                    currentgame.endofgamedraw();
                    break;
                case 10:
                    hud.drawhelp();

                    break;
            }
            if (statemenager.currentstate != 5)
            {
                foreach(TouchLocation tl in touch){
                    if (soundvolume > 0)
                    {
                        resources.click.Play();
                    }
                    ekran.Draw(resources.circle, new Rectangle((int)tl.Position.X - resources.circle.Width / 2, (int)tl.Position.Y - resources.circle.Height / 2, (int)resources.circle.Width, (int)resources.circle.Height), Color.White);
                    }
            } if (statemenager.currentstate != 1)
            {
                game.ekran.Draw(game.resources.bottombeam, new Rectangle(0, 720, 480, 80), Color.White);
            }
            ekran.End();
            base.Draw(gameTime);
        }