Skip to content

Instantly share code, notes, and snippets.

@kg
Created March 18, 2012 23:46
Show Gist options
  • Save kg/2085744 to your computer and use it in GitHub Desktop.
Save kg/2085744 to your computer and use it in GitHub Desktop.
protected IEnumerator<object> ShowPauseMenu () {
using (Pause()) {
bool running = true;
while (running) {
var menuItems = new List<object> {
"Resume Game",
"Load Game",
"Save Game",
"Options",
"Quit"
};
Future<string> f;
yield return ShowMenu("Pause", menuItems).Run(out f);
switch (f.Result) {
default:
case "Resume Game":
running = false;
break;
case "Options":
yield return ShowOptionsMenu();
break;
case "Save Game":
yield return SaveGame();
running = false;
break;
case "Load Game": {
Future<bool> loadResult;
yield return LoadGame().Run(out loadResult);
if (loadResult.Result) {
running = false;
} else {
yield return ShowMessage("No game to load.", MessageStyle.AutoClose);
}
} break;
case "Quit":
yield return ShowQuitMenu();
running = GameRunning;
break;
}
}
}
}
protected IEnumerator<object> ShowQuitMenu () {
var menuItems = new List<object> {
"To Title Screen",
#if XBOX
"To Dashboard"
#else
"To Desktop"
#endif
};
Future<string> f;
yield return ShowMenu("Quit", menuItems).Run(out f);
switch (f.Result) {
case "To Dashboard":
case "To Desktop":
Quit();
break;
case "To Title Screen":
Audio.PlayCue("Music", "Title Screen");
yield return new Start(ShowTitleScreen(), TaskExecutionPolicy.RunAsBackgroundTask);
break;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment