aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.Client/Common/UI/UIScene_DeathMenu.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Minecraft.Client/Common/UI/UIScene_DeathMenu.cpp')
-rw-r--r--Minecraft.Client/Common/UI/UIScene_DeathMenu.cpp191
1 files changed, 191 insertions, 0 deletions
diff --git a/Minecraft.Client/Common/UI/UIScene_DeathMenu.cpp b/Minecraft.Client/Common/UI/UIScene_DeathMenu.cpp
new file mode 100644
index 00000000..2026bfca
--- /dev/null
+++ b/Minecraft.Client/Common/UI/UIScene_DeathMenu.cpp
@@ -0,0 +1,191 @@
+#include "stdafx.h"
+#include "UI.h"
+#include "UIScene_DeathMenu.h"
+#include "IUIScene_PauseMenu.h"
+#include "..\..\Minecraft.h"
+#include "..\..\MultiplayerLocalPlayer.h"
+
+UIScene_DeathMenu::UIScene_DeathMenu(int iPad, void *initData, UILayer *parentLayer) : UIScene(iPad, parentLayer)
+{
+ // Setup all the Iggy references we need for this scene
+ initialiseMovie();
+
+ m_buttonRespawn.init(app.GetString(IDS_RESPAWN),eControl_Respawn);
+ m_buttonExitGame.init(app.GetString(IDS_EXIT_GAME),eControl_ExitGame);
+
+ m_labelTitle.setLabel(app.GetString(IDS_YOU_DIED));
+
+ m_bIgnoreInput = false;
+
+ Minecraft *pMinecraft = Minecraft::GetInstance();
+ if(pMinecraft != NULL && pMinecraft->localgameModes[iPad] != NULL )
+ {
+ TutorialMode *gameMode = (TutorialMode *)pMinecraft->localgameModes[iPad];
+
+ // This just allows it to be shown
+ gameMode->getTutorial()->showTutorialPopup(false);
+ }
+}
+
+UIScene_DeathMenu::~UIScene_DeathMenu()
+{
+ Minecraft *pMinecraft = Minecraft::GetInstance();
+ if(pMinecraft != NULL && pMinecraft->localgameModes[m_iPad] != NULL )
+ {
+ TutorialMode *gameMode = (TutorialMode *)pMinecraft->localgameModes[m_iPad];
+
+ // This just allows it to be shown
+ gameMode->getTutorial()->showTutorialPopup(true);
+ }
+}
+
+wstring UIScene_DeathMenu::getMoviePath()
+{
+ if(app.GetLocalPlayerCount() > 1)
+ {
+ return L"DeathMenuSplit";
+ }
+ else
+ {
+ return L"DeathMenu";
+ }
+}
+
+void UIScene_DeathMenu::updateTooltips()
+{
+ ui.SetTooltips( m_iPad, IDS_TOOLTIPS_SELECT);
+}
+
+void UIScene_DeathMenu::handleInput(int iPad, int key, bool repeat, bool pressed, bool released, bool &handled)
+{
+ if(m_bIgnoreInput) return;
+
+ ui.AnimateKeyPress(m_iPad, key, repeat, pressed, released);
+
+ switch(key)
+ {
+ case ACTION_MENU_CANCEL:
+ handled = true;
+ break;
+ case ACTION_MENU_OK:
+#ifdef __ORBIS__
+ case ACTION_MENU_TOUCHPAD_PRESS:
+#endif
+ case ACTION_MENU_UP:
+ case ACTION_MENU_DOWN:
+ sendInputToMovie(key, repeat, pressed, released);
+ handled = true;
+ break;
+ }
+}
+
+void UIScene_DeathMenu::handlePress(F64 controlId, F64 childId)
+{
+ switch((int)controlId)
+ {
+ case eControl_Respawn:
+ m_bIgnoreInput = true;
+ app.SetAction(m_iPad,eAppAction_Respawn);
+#ifdef _DURANGO
+ //InputManager.SetEnabledGtcButtons(_360_GTC_MENU|_360_GTC_PAUSE|_360_GTC_VIEW);
+#endif
+ break;
+ case eControl_ExitGame:
+ {
+ Minecraft *pMinecraft=Minecraft::GetInstance();
+ // 4J-PB - fix for #8333 - BLOCKER: If player decides to exit game, then cancels the exit player becomes stuck at game over screen
+ //m_bIgnoreInput = true;
+ // Check if it's the trial version
+ if(ProfileManager.IsFullVersion())
+ {
+
+ // is it the primary player exiting?
+ if(m_iPad==ProfileManager.GetPrimaryPad())
+ {
+ UINT uiIDA[3];
+ int playTime = -1;
+ if( pMinecraft->localplayers[m_iPad] != NULL )
+ {
+ playTime = (int)pMinecraft->localplayers[m_iPad]->getSessionTimer();
+ }
+ TelemetryManager->RecordLevelExit(m_iPad, eSen_LevelExitStatus_Failed);
+
+#if defined (_XBOX_ONE) || defined(__ORBIS__)
+ if(g_NetworkManager.IsHost() && StorageManager.GetSaveDisabled())
+ {
+ uiIDA[0]=IDS_CONFIRM_CANCEL;
+ uiIDA[1]=IDS_EXIT_GAME_SAVE;
+ uiIDA[2]=IDS_EXIT_GAME_NO_SAVE;
+
+ ui.RequestMessageBox(IDS_EXIT_GAME, IDS_CONFIRM_EXIT_GAME, uiIDA, 3, m_iPad,&IUIScene_PauseMenu::ExitGameSaveDialogReturned,this, app.GetStringTable(), 0, 0, false);
+ }
+ else
+ {
+ uiIDA[0]=IDS_CONFIRM_CANCEL;
+ uiIDA[1]=IDS_CONFIRM_OK;
+ ui.RequestMessageBox(IDS_EXIT_GAME, IDS_CONFIRM_EXIT_GAME, uiIDA, 2, m_iPad,&IUIScene_PauseMenu::ExitGameDialogReturned,this, app.GetStringTable(), 0, 0, false);
+ }
+
+#else
+ if(StorageManager.GetSaveDisabled())
+ {
+ uiIDA[0]=IDS_CONFIRM_CANCEL;
+ uiIDA[1]=IDS_CONFIRM_OK;
+ ui.RequestMessageBox(IDS_EXIT_GAME, IDS_CONFIRM_EXIT_GAME_PROGRESS_LOST, uiIDA, 2, m_iPad,&IUIScene_PauseMenu::ExitGameDialogReturned,this, app.GetStringTable(), 0, 0, false);
+ }
+ else
+ {
+ if( g_NetworkManager.IsHost() )
+ {
+ uiIDA[0]=IDS_CONFIRM_CANCEL;
+ uiIDA[1]=IDS_EXIT_GAME_SAVE;
+ uiIDA[2]=IDS_EXIT_GAME_NO_SAVE;
+
+ ui.RequestMessageBox(IDS_EXIT_GAME, IDS_CONFIRM_EXIT_GAME, uiIDA, 3, m_iPad,&IUIScene_PauseMenu::ExitGameSaveDialogReturned,this, app.GetStringTable(), 0, 0, false);
+ }
+ else
+ {
+ uiIDA[0]=IDS_CONFIRM_CANCEL;
+ uiIDA[1]=IDS_CONFIRM_OK;
+
+ ui.RequestMessageBox(IDS_EXIT_GAME, IDS_CONFIRM_EXIT_GAME, uiIDA, 2, m_iPad,&IUIScene_PauseMenu::ExitGameDialogReturned,this, app.GetStringTable(), 0, 0, false);
+ }
+ }
+#endif
+ }
+ else
+ {
+ TelemetryManager->RecordLevelExit(m_iPad, eSen_LevelExitStatus_Failed);
+
+ // just exit the player
+ app.SetAction(m_iPad,eAppAction_ExitPlayer);
+ }
+ }
+ else
+ {
+ // is it the primary player exiting?
+ if(m_iPad==ProfileManager.GetPrimaryPad())
+ {
+ TelemetryManager->RecordLevelExit(m_iPad, eSen_LevelExitStatus_Failed);
+
+ // adjust the trial time played
+ ui.ReduceTrialTimerValue();
+
+ // exit the level
+ UINT uiIDA[2];
+ uiIDA[0]=IDS_CONFIRM_CANCEL;
+ uiIDA[1]=IDS_CONFIRM_OK;
+ ui.RequestMessageBox(IDS_EXIT_GAME, IDS_CONFIRM_EXIT_GAME_PROGRESS_LOST, uiIDA, 2, m_iPad,&IUIScene_PauseMenu::ExitGameDialogReturned,this, app.GetStringTable(), 0, 0, false);
+ }
+ else
+ {
+ TelemetryManager->RecordLevelExit(m_iPad, eSen_LevelExitStatus_Failed);
+
+ // just exit the player
+ app.SetAction(m_iPad,eAppAction_ExitPlayer);
+ }
+ }
+ }
+ break;
+ }
+} \ No newline at end of file