/// <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); }