aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.Client/Common/XUI/XUI_TrialExitUpsell.cpp
diff options
context:
space:
mode:
authordaoge_cmd <3523206925@qq.com>2026-03-01 12:16:08 +0800
committerdaoge_cmd <3523206925@qq.com>2026-03-01 12:16:08 +0800
commitb691c43c44ff180d10e7d4a9afc83b98551ff586 (patch)
tree3e9849222cbc6ba49f2f1fc6e5fe7179632c7390 /Minecraft.Client/Common/XUI/XUI_TrialExitUpsell.cpp
parentdef8cb415354ac390b7e89052a50605285f1aca9 (diff)
Initial commit
Diffstat (limited to 'Minecraft.Client/Common/XUI/XUI_TrialExitUpsell.cpp')
-rw-r--r--Minecraft.Client/Common/XUI/XUI_TrialExitUpsell.cpp136
1 files changed, 136 insertions, 0 deletions
diff --git a/Minecraft.Client/Common/XUI/XUI_TrialExitUpsell.cpp b/Minecraft.Client/Common/XUI/XUI_TrialExitUpsell.cpp
new file mode 100644
index 00000000..51121099
--- /dev/null
+++ b/Minecraft.Client/Common/XUI/XUI_TrialExitUpsell.cpp
@@ -0,0 +1,136 @@
+#include "stdafx.h"
+#include "XUI_TrialExitUpsell.h"
+
+// wchImages[TRIAL_EXIT_UPSELL_IMAGE_COUNT]
+WCHAR *CScene_TrialExitUpsell::wchImages[]=
+{
+ L"Graphics/UpsellScreenshots/Screenshot1.png",
+ L"Graphics/UpsellScreenshots/Screenshot2.png",
+ L"Graphics/UpsellScreenshots/Screenshot3.png",
+ L"Graphics/UpsellScreenshots/Screenshot4.png",
+ L"Graphics/UpsellScreenshots/Screenshot5.png",
+ L"Graphics/UpsellScreenshots/Screenshot6.png",
+ L"Graphics/UpsellScreenshots/Screenshot7.png",
+ L"Graphics/UpsellScreenshots/Screenshot8.png"
+};
+
+//----------------------------------------------------------------------------------
+// Performs initialization tasks - retrieves controls.
+//----------------------------------------------------------------------------------
+HRESULT CScene_TrialExitUpsell::OnInit( XUIMessageInit* pInitData, BOOL& bHandled )
+{
+ m_iPad=*(int *)pInitData->pvInitData;
+
+ MapChildControls();
+
+ m_bCanExit = true;
+ m_bFadeStarted = false;
+ m_bShowingImage1 = true;
+ m_imagesShown = 0;
+
+ m_image1.SetImagePath( wchImages[m_imagesShown] );
+ SetTimer( 0, TRIAL_EXIT_UPSELL_IMAGE_DISPLAY_TIME);
+
+ CXuiSceneBase::ShowBackground(DEFAULT_XUI_MENU_USER , FALSE);
+ CXuiSceneBase::ShowLogo(DEFAULT_XUI_MENU_USER , FALSE);
+
+ if( m_bCanExit )
+ {
+ ui.SetTooltips( DEFAULT_XUI_MENU_USER, IDS_EXIT_GAME,IDS_TOOLTIPS_BACK, IDS_UNLOCK_TITLE);
+ }
+ else
+ {
+ ui.SetTooltips( DEFAULT_XUI_MENU_USER, -1,IDS_TOOLTIPS_BACK, IDS_UNLOCK_TITLE);
+ }
+
+ return S_OK;
+}
+
+HRESULT CScene_TrialExitUpsell::OnKeyDown(XUIMessageInput* pInputData, BOOL& rfHandled)
+{
+ // ignore repeats
+ if(pInputData->dwFlags&XUI_INPUT_FLAG_REPEAT) return S_OK;
+
+ ui.AnimateKeyPress(pInputData->UserIndex, pInputData->dwKeyCode);
+
+ HRESULT hr=S_OK;
+
+ // Explicitly handle B button presses
+ switch(pInputData->dwKeyCode)
+ {
+ case VK_PAD_A:
+#ifdef _XBOX
+ if( m_bCanExit )
+ {
+ XLaunchNewImage(XLAUNCH_KEYWORD_DASH_ARCADE, 0);
+ }
+#endif
+ break;
+ case VK_PAD_B:
+ case VK_ESCAPE:
+ app.NavigateBack(pInputData->UserIndex);
+ rfHandled = TRUE;
+ break;
+ case VK_PAD_X:
+ if(ProfileManager.IsSignedIn(pInputData->UserIndex))
+ {
+ TelemetryManager->RecordUpsellPresented(pInputData->UserIndex, eSen_UpsellID_Full_Version_Of_Game, app.m_dwOfferID);
+ ProfileManager.DisplayFullVersionPurchase(false,pInputData->UserIndex,eSen_UpsellID_Full_Version_Of_Game);
+ }
+ break;
+ }
+
+ return hr;
+}
+
+HRESULT CScene_TrialExitUpsell::OnTimelineEnd(HXUIOBJ hObjSource, BOOL& bHandled)
+{
+ if(m_bFadeStarted)
+ {
+ m_bFadeStarted = false;
+ m_bShowingImage1 = !m_bShowingImage1;
+ // We start a timer so we know when this image has been displayed for the required time
+ return SetTimer( 0, TRIAL_EXIT_UPSELL_IMAGE_DISPLAY_TIME);
+ }
+ else
+ {
+ return S_OK;
+ }
+}
+
+HRESULT CScene_TrialExitUpsell::OnTimer( XUIMessageTimer *pTimer, BOOL& bHandled )
+{
+ int nStart, nEnd;
+
+ KillTimer(0);
+
+ ++m_imagesShown;
+ if( m_imagesShown >= TRIAL_EXIT_UPSELL_IMAGE_COUNT )
+ {
+ m_imagesShown = 0; //Loop round to the start
+ m_bCanExit = true;
+
+ ui.SetTooltips( DEFAULT_XUI_MENU_USER, IDS_EXIT_GAME,IDS_TOOLTIPS_BACK, IDS_UNLOCK_TITLE);
+ }
+
+ if( m_bShowingImage1 )
+ {
+ m_image2.SetImagePath( wchImages[m_imagesShown] );
+
+ FindNamedFrame( L"Fade1to2", &nStart );
+ FindNamedFrame( L"EndFade1to2", &nEnd );
+ PlayTimeline( nStart, nStart, nEnd, FALSE, TRUE );
+ m_bFadeStarted = true;
+ }
+ else
+ {
+ m_image1.SetImagePath( wchImages[m_imagesShown] );
+
+ FindNamedFrame( L"Fade2to1", &nStart );
+ FindNamedFrame( L"EndFade2to1", &nEnd );
+ PlayTimeline( nStart, nStart, nEnd, FALSE, TRUE );
+ m_bFadeStarted = true;
+ }
+
+ return S_OK;
+} \ No newline at end of file