mirror of
https://github.com/4jcraft/4jcraft.git
synced 2026-04-25 17:13:41 +00:00
129 lines
4.2 KiB
C++
129 lines
4.2 KiB
C++
#include "../../Minecraft.World/Platform/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;
|
|
} |