private void AddInitialScreens() { BackgroundScreen backgroundScreen = new BackgroundScreen(); screenManager.AddScreen(backgroundScreen, null); #if WINDOWS_PHONE screenManager.AddScreen(new PhoneMainMenuScreen(backgroundScreen), null); #else screenManager.AddScreen(new MainMenuScreen(), null); #endif }
/// <summary> /// The "Exit" button handler uses the LoadingScreen to take the user out to the main menu. /// </summary> void exitButton_Tapped(object sender, EventArgs e) { BackgroundScreen background = new BackgroundScreen(); LoadingScreen.Load(ScreenManager, false, null, background, new PhoneMainMenuScreen(background)); }
public PhoneMainMenuScreen(BackgroundScreen background) : base("") { this.background = background; }
/// <summary> /// Updates the state of the game. This method checks the GameScreen.IsActive /// property, so the game will stop updating when the pause menu is active, /// or if you tab away to a different application. /// </summary> public override void Update(GameTime gameTime, bool otherScreenHasFocus, bool coveredByOtherScreen) { base.Update(gameTime, otherScreenHasFocus, false); TouchCollection touchCollection = TouchPanel.GetState(); if (!world.Game.Components.Contains(world.player)) world.Game.Components.Add(world.player); // Gradually fade in or out depending on whether we are covered by the pause screen. if (coveredByOtherScreen) pauseAlpha = Math.Min(pauseAlpha + 1f / 32, 1); else pauseAlpha = Math.Max(pauseAlpha - 1f / 32, 0); if (IsActive) { if (!hasStarted && touchCollection.Count>0) { TouchLocation tl = touchCollection[0]; world.player.IsAlive = true; world.fillBegin(((int)tl.Position.X)+1, TouchPanel.DisplayHeight - (int)tl.Position.Y); world.player.setActive(); hasStarted = true; } else if (/*!hasStarted ||*/ world.player.IsAlive && !world.player.gameOver) { #region GAME LOGIC for (int i = 0; i < gameTime.ElapsedGameTime.Milliseconds; i++) { world.removeLine(0); pressedLastX--; // create gates if (world.player.Score.Points > 0 & world.player.Score.Points % 5000 == 0) { world.createGates(); } //update gates world.updateGates(); if (touchCollection.Count == 0) { isPressed = false; world.addLine(-1); } else { foreach (TouchLocation tl in touchCollection) { if (!hasStarted) { world.getPlayer().setActive(); world.fillBegin((int)tl.Position.X, TouchPanel.DisplayHeight - (int)tl.Position.Y); hasStarted = true; } touchPosition.X = tl.Position.X; touchPosition.Y = tl.Position.Y; if (tl.State == TouchLocationState.Pressed || (tl.State == TouchLocationState.Moved)) { if (world.getLineQueue()[(int)Math.Max(1, pressedLastX) - 1].Height == -1) { pressedLastY = (int)touchPosition.Y; } if (touchPosition.X > pressedLastX) { for (; pressedLastX < touchPosition.X; pressedLastX++) { if (pressedLastY == 0) { pressedLastY = (int)touchPosition.Y; } newLineY = pressedLastY; if (isPressed) { if (pressedLastY < touchPosition.Y) { // Decreasing newLineY = (int)touchPosition.Y; } else if (pressedLastY > touchPosition.Y) { // Increasing newLineY -= 2; } else { // No change // Do nothing } world.addLine(pressedLastX, TouchPanel.DisplayHeight - newLineY); pressedLastY = newLineY; } } /* lineQueue.Insert((int)touchPosition.X, new WorldLine(480 - (int)touchPosition.Y)); if (isPressed) // is touch being held? { int diffx = Math.Abs(pressedLastX - (int)touchPosition.X); int diffy = Math.Abs(pressedLastY - (int)touchPosition.Y); int step = 0; if (diffx > 0 & diffy > 0) { step = Math.Max(diffx, diffy) / Math.Min(diffx, diffy); for (int i = pressedLastX - 1; i < (int)touchPosition.X; i++) { lineQueue.RemoveAt(i); if (diffx > diffy) { for (int j = 0; j < step; j++) { lineQueue.Insert(i, new WorldLine(480 - pressedLastY + j)); i += j; } } else { lineQueue.Insert(i, new WorldLine(480 - pressedLastY + step)); } } } } pressedLastX = (int)touchPosition.X; pressedLastY = (int)touchPosition.Y; */ } else { world.addLine(-1); } isPressed = true; } // Detect player-gate collision Gate nextGate = world.getClosestGate(world.player);// Get gates closest intersecting gate if (nextGate != null) // there is a next gate { if (!nextGate.isHit) // gate not yet hit { // Add score * ++mutiplier world.player.Score.Points += 10000 * (++world.player.Score.Multiplier); // Set gate off nextGate.myTexture = Gate.gatePassed; nextGate.isHit = true; } } else { // Check multiplier and reset if needed if (world.player.Score.Multiplier > 0) { world.player.Score.Multiplier = 0; } } break; } } } #endregion } else { //gameover //TouchCollection touchCollection = TouchPanel.GetState(); foreach (TouchLocation tl in touchCollection) { if (tl.State == TouchLocationState.Pressed || (tl.State == TouchLocationState.Moved)) { BackgroundScreen background = new BackgroundScreen(); ScreenManager.RemoveScreen(this); ScreenManager.AddScreen(background, null); ScreenManager.AddScreen(new PhoneMainMenuScreen(background), null); //long highscore = Highscore.Load(); long playerScore = (world.player.Score.Points / 100) * 10; //if (highscore > playerScore) //{ //Highscore.Save(highscore); //world.player.Score.Highscore = highscore; //} } } } // particles part.EmitterLocation = new Vector2(world.player.Position.X - 35, world.player.Position.Y + 75); part.Update(); } }