//-----------------------------------------------------------------------------
// PauseMenuScreen.cs
//
// Microsoft XNA Community Game Platform
// Copyright (C) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------------------------
using System;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Media;
namespace AlienGameSample
{
///
/// Primarily for controlling what song is playing.
///
class PauseMenuScreen : MenuScreen
{
MenuEntry songMenuEntry;
MenuEntry playMenuEntry;
static int selectedSongIndex;
static int playingSongIndex = -1;
///
/// Constructor.
///
public PauseMenuScreen()
: base("Pause")
{
IsPopup = true;
MenuEntry resumeGameMenuEntry = new MenuEntry("RESUME");
MenuEntry quitGameMenuEntry = new MenuEntry("QUIT");
resumeGameMenuEntry.Selected += OnCancel;
quitGameMenuEntry.Selected += QuitGameMenuEntrySelected;
// Create our menu entries.
songMenuEntry = new MenuEntry("SONG:");
playMenuEntry = new MenuEntry("PLAY");
MenuEntry backMenuEntry = new MenuEntry("BACK");
// Hook up menu event handlers.
songMenuEntry.Selected += SongMenuEntrySelected;
playMenuEntry.Selected += PlayMenuEntrySelected;
backMenuEntry.Selected += OnCancel;
// Add entries to the menu.
MenuEntries.Add(resumeGameMenuEntry);
MenuEntries.Add(songMenuEntry);
MenuEntries.Add(playMenuEntry);
MenuEntries.Add(quitGameMenuEntry);
if (playingSongIndex != -1)
{
selectedSongIndex = playingSongIndex;
}
TransitionOnTime = TimeSpan.FromSeconds(0.5);
TransitionOffTime = TimeSpan.FromSeconds(0.5);
}
public override void LoadContent()
{
// Set the initial menu content (requires ScreenManager to have been set).
UpdateMenuText();
base.LoadContent();
}
private void UpdateMenuText()
{
/*if (ScreenManager.MediaLibrary != null && ScreenManager.MediaLibrary.Songs.Count > 0)
{
songMenuEntry.Text = "SONG: " + ScreenManager.MediaLibrary.Songs[selectedSongIndex] + (ScreenManager.MediaLibrary.Songs[selectedSongIndex].IsProtected ? " (DRM)" : "");
if (MediaPlayer.State == MediaState.Playing)
playMenuEntry.Text = "STOP";
else
{
if (ScreenManager.MediaLibrary.Songs[selectedSongIndex].IsProtected == true)
{
playMenuEntry.Text = "-";
}
else
{
playMenuEntry.Text = "PLAY";
}
}
}
else
{*/
songMenuEntry.Text = "(NO SONGS)";
playMenuEntry.Text = "-";
//}
}
void AdvanceSong()
{
/*if (ScreenManager.MediaLibrary == null || ScreenManager.MediaLibrary.Songs.Count == 0)
return;
selectedSongIndex = (selectedSongIndex + 1) % ScreenManager.MediaLibrary.Songs.Count;
UpdateMenuText();*/
}
///
/// Event handler for when the Language menu entry is selected.
///
void SongMenuEntrySelected(object sender, EventArgs e)
{
AdvanceSong();
}
void PlayMenuEntrySelected(object sender, EventArgs e)
{
/*if (ScreenManager.MediaLibrary == null || ScreenManager.MediaLibrary.Songs.Count == 0)
return;
if (MediaPlayer.State == MediaState.Playing)
{
MediaPlayer.Stop();
playingSongIndex = -1;
}
else
{
if (ScreenManager.MediaLibrary.Songs[selectedSongIndex].IsProtected == false)
{
MediaPlayer.Play(ScreenManager.MediaLibrary.Songs[selectedSongIndex]);
playingSongIndex = selectedSongIndex;
}
}
UpdateMenuText();*/
}
///
/// Event handler for when the Quit Game menu entry is selected.
///
void QuitGameMenuEntrySelected(object sender, EventArgs e)
{
foreach (GameScreen screen in ScreenManager.GetScreens())
screen.ExitScreen();
ScreenManager.AddScreen(new BackgroundScreen());
ScreenManager.AddScreen(new MainMenuScreen());
}
///
/// Draws the pause menu screen. This darkens down the gameplay screen
/// that is underneath us, and then chains to the base MenuScreen.Draw.
///
public override void Draw(GameTime gameTime)
{
ScreenManager.FadeBackBufferToBlack(TransitionAlpha * 2 / 3);
base.Draw(gameTime);
}
}
}