/// <summary> /// Creates a new high scores screen state. /// </summary> /// <param name="inGame">If the player has died or completed the game, set this to true. If simply checking the scores from the menu, set this to false</param> public HighScoresState(bool inGame, bool gameComplete) { InitalizeHighScores(); HighScoreValue newScore = new HighScoreValue(GameCampaign.PlayerName, GameCampaign.Player_Coin_Amount, GameCampaign.ElapsedCampaignTime, GameCampaign.PlayerLevelProgress, GameCampaign.PlayerFloorHeight); this.inGame = inGame; this.gameComplete = gameComplete; try { SignedInGamer gamer = Gamer.SignedInGamers[InputDevice2.GetPlayerGamePadIndex(InputDevice2.PPG_Player.Player_1)]; isSignedIn = (gamer != null); } catch (Exception) { isSignedIn = false; } if (inGame) { highScores.Add(newScore); // if there are 11 high scores now, remove the lowest score if (highScores.Count > 10) { HighScoreValue lowestScore = highScores[0]; CompareHighScores comparer = new CompareHighScores(); for (int i = 1; i < highScores.Count; i++) { if (comparer.Compare(highScores[i], lowestScore) < 0) { lowestScore = highScores[i]; } } highScores.Remove(lowestScore); } highScores.Sort(new CompareHighScores()); highScores.Reverse(); for (int i = 0; i < highScores.Count; i++) { if (highScores[i].playerName == newScore.playerName && highScores[i].secondsElapsed == newScore.secondsElapsed && highScores[i].floorDiedOn == newScore.floorDiedOn) { newlyAddedScoreIndex = i; } } SaveGameModule.saveGame(); } else { highScores.Sort(new CompareHighScores()); highScores.Reverse(); } stateTimer = 0; if (isSignedIn) { SaveGameModule.loadGame(); } }
protected override void doUpdate(GameTime currentTime) { button_pressed_timer += currentTime.ElapsedGameTime.Milliseconds; zoom += currentTime.ElapsedGameTime.Milliseconds; switch (zoom_state) { case popUpZoomState.zoomIn: if (zoom > zoom_duration) { pop_up_menu = true; zoom_state = popUpZoomState.zoomStay; zoom = 0.0f; } break; case popUpZoomState.zoomStay: zoom = 0.0f; break; case popUpZoomState.zoomOut: if (zoom > zoom_duration) { zoom_state = popUpZoomState.zoomStay; pop_up_menu = false; pop_up_screen = false; zoom = 0.0f; } break; } if (!pop_up_menu) { if (InputDevice2.IsPlayerButtonDown(InputDevice2.PPG_Player.Player_1, InputDevice2.PlayerButton.DownDirection)) { if (!down_pressed) { button_pressed_timer = 0.0f; } down_pressed = true; } if ((down_pressed && !InputDevice2.IsPlayerButtonDown(InputDevice2.PPG_Player.Player_1, InputDevice2.PlayerButton.DownDirection)) || (down_pressed && InputDevice2.IsPlayerButtonDown(InputDevice2.PPG_Player.Player_1, InputDevice2.PlayerButton.DownDirection) && button_pressed_timer > max_button_pressed_timer)) { button_pressed_timer = 0.0f; down_pressed = false; AudioLib.playSoundEffect(menuBlipSound); menu_item_select++; if (menu_item_select >= options_list.Count()) { menu_item_select = menu_item_select % options_list.Count(); } else if (menu_item_select < 0) { menu_item_select += options_list.Count(); } } if (InputDevice2.IsPlayerButtonDown(InputDevice2.PPG_Player.Player_1, InputDevice2.PlayerButton.UpDirection)) { if (!up_pressed) { button_pressed_timer = 0.0f; } up_pressed = true; } if ((up_pressed && !InputDevice2.IsPlayerButtonDown(InputDevice2.PPG_Player.Player_1, InputDevice2.PlayerButton.UpDirection)) || (up_pressed && InputDevice2.IsPlayerButtonDown(InputDevice2.PPG_Player.Player_1, InputDevice2.PlayerButton.UpDirection) && button_pressed_timer > max_button_pressed_timer)) { button_pressed_timer = 0.0f; up_pressed = false; AudioLib.playSoundEffect(menuBlipSound); menu_item_select--; if (menu_item_select > 0) { menu_item_select = menu_item_select % options_list.Count(); } else if (menu_item_select < 0) { menu_item_select += options_list.Count(); } } if (InputDevice2.IsPlayerButtonDown(InputDevice2.PPG_Player.Player_1, InputDevice2.PlayerButton.Confirm)) { confirm_pressed = true; } else if (confirm_pressed) { confirm_pressed = false; switch (options_list[menu_item_select].text) { case "HIGH SCORE": isComplete = true; break; case "ERASE HIGH SCORE": pop_up_screen = true; popup_item_selected = 0; zoom_state = popUpZoomState.zoomIn; HighScoresState.ResetHighScores(); SaveGameModule.saveGame(); break; case "CREDITS": isComplete = true; break; case "BACK": isComplete = true; break; default: break; } } for (int i = 0; i < options_list.Count(); i++) { if (i == menu_item_select) { options_list[menu_item_select].select = true; } else { options_list[i].select = false; } options_list[i].update(currentTime); } } /*************************************************************************************************************/ else { if (InputDevice2.IsPlayerButtonDown(InputDevice2.PPG_Player.Player_1, InputDevice2.PlayerButton.LeftDirection)) { if (!down_pressed) { button_pressed_timer = 0.0f; } down_pressed = true; } if ((down_pressed && !InputDevice2.IsPlayerButtonDown(InputDevice2.PPG_Player.Player_1, InputDevice2.PlayerButton.LeftDirection)) || (down_pressed && InputDevice2.IsPlayerButtonDown(InputDevice2.PPG_Player.Player_1, InputDevice2.PlayerButton.LeftDirection) && button_pressed_timer > max_button_pressed_timer)) { button_pressed_timer = 0.0f; down_pressed = false; popup_item_selected++; if (popup_item_selected >= popup_options.Count()) { popup_item_selected = popup_item_selected % popup_options.Count(); } else if (menu_item_select < 0) { popup_item_selected += popup_options.Count(); } } if (InputDevice2.IsPlayerButtonDown(InputDevice2.PPG_Player.Player_1, InputDevice2.PlayerButton.RightDirection)) { if (!up_pressed) { button_pressed_timer = 0.0f; } up_pressed = true; } if ((up_pressed && !InputDevice2.IsPlayerButtonDown(InputDevice2.PPG_Player.Player_1, InputDevice2.PlayerButton.RightDirection)) || (up_pressed && InputDevice2.IsPlayerButtonDown(InputDevice2.PPG_Player.Player_1, InputDevice2.PlayerButton.RightDirection) && button_pressed_timer > max_button_pressed_timer)) { button_pressed_timer = 0.0f; up_pressed = false; popup_item_selected--; if (popup_item_selected > 0) { popup_item_selected = popup_item_selected % popup_options.Count(); } else if (popup_item_selected < 0) { popup_item_selected += popup_options.Count(); } } if (InputDevice2.IsPlayerButtonDown(InputDevice2.PPG_Player.Player_1, InputDevice2.PlayerButton.Confirm)) { confirm_pressed = true; } else if (confirm_pressed) { confirm_pressed = false; switch (popup_options[popup_item_selected].text) { case "NO": zoom_state = popUpZoomState.zoomOut; break; case "YES": zoom_state = popUpZoomState.zoomOut; break; default: break; } } for (int i = 0; i < popup_options.Count(); i++) { if (i == popup_item_selected) { popup_options[popup_item_selected].select = true; } else { popup_options[i].select = false; } popup_options[i].update(currentTime); } } }