mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/4jcraft.git
synced 2026-06-23 21:05:57 +00:00
format XUI
This commit is contained in:
@@ -9,560 +9,564 @@
|
||||
#include "../../Minecraft.Client/Rendering/EntityRenderers/ProgressRenderer.h"
|
||||
#include "XUI_TransferToXboxOne.h"
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------------
|
||||
// Performs initialization tasks - retrieves controls.
|
||||
//----------------------------------------------------------------------------------
|
||||
HRESULT CScene_TransferToXboxOne::OnInit( XUIMessageInit* pInitData, BOOL& bHandled )
|
||||
{
|
||||
m_iX=-1;
|
||||
m_params = (LoadMenuInitData *)pInitData->pvInitData;
|
||||
HRESULT CScene_TransferToXboxOne::OnInit(XUIMessageInit* pInitData,
|
||||
BOOL& bHandled) {
|
||||
m_iX = -1;
|
||||
m_params = (LoadMenuInitData*)pInitData->pvInitData;
|
||||
|
||||
m_iPad=m_params->iPad;
|
||||
m_iPad = m_params->iPad;
|
||||
|
||||
m_bRetrievingSaveInfo=false;
|
||||
m_bIgnoreInput=false;
|
||||
MapChildControls();
|
||||
m_bRetrievingSaveInfo = false;
|
||||
m_bIgnoreInput = false;
|
||||
MapChildControls();
|
||||
|
||||
void *pObj;
|
||||
XuiObjectFromHandle( m_SavesSlotList, &pObj );
|
||||
m_pSavesSlotList = (CXuiCtrl4JList *)pObj;
|
||||
void* pObj;
|
||||
XuiObjectFromHandle(m_SavesSlotList, &pObj);
|
||||
m_pSavesSlotList = (CXuiCtrl4JList*)pObj;
|
||||
|
||||
m_pbImageData=NULL;
|
||||
m_dwImageBytes=0;
|
||||
m_pbImageData = NULL;
|
||||
m_dwImageBytes = 0;
|
||||
|
||||
StorageManager.GetSaveCacheFileInfo(m_params->iSaveGameInfoIndex,m_XContentData);
|
||||
StorageManager.GetSaveCacheFileInfo(m_params->iSaveGameInfoIndex,&m_pbImageData,&m_dwImageBytes);
|
||||
StorageManager.GetSaveCacheFileInfo(m_params->iSaveGameInfoIndex,
|
||||
m_XContentData);
|
||||
StorageManager.GetSaveCacheFileInfo(m_params->iSaveGameInfoIndex,
|
||||
&m_pbImageData, &m_dwImageBytes);
|
||||
|
||||
m_SavesSlotListTimer.SetShow(TRUE);
|
||||
|
||||
m_SavesSlotListTimer.SetShow(TRUE);
|
||||
|
||||
XuiControlSetText(m_SavesSlotList, app.GetString(IDS_XBONE_SELECTSLOT));
|
||||
|
||||
XuiControlSetText(m_SavesSlotList,app.GetString(IDS_XBONE_SELECTSLOT));
|
||||
// insert the current save slot names
|
||||
m_MaxSlotC = app.m_uiTransferSlotC;
|
||||
m_pSlotDataA = new SLOTDATA[m_MaxSlotC];
|
||||
ZeroMemory(m_pSlotDataA, sizeof(SLOTDATA) * m_MaxSlotC);
|
||||
|
||||
// insert the current save slot names
|
||||
m_MaxSlotC=app.m_uiTransferSlotC;
|
||||
m_pSlotDataA = new SLOTDATA [m_MaxSlotC];
|
||||
ZeroMemory(m_pSlotDataA,sizeof(SLOTDATA)*m_MaxSlotC);
|
||||
// saves will be called slot1 to slotx
|
||||
// there will be a details file with the names and png of each slot
|
||||
m_pbSlotListFile = NULL;
|
||||
m_uiSlotListFileBytes = 0;
|
||||
|
||||
if (StorageManager.TMSPP_InFileList(C4JStorage::eGlobalStorage_TitleUser,
|
||||
m_iPad, L"XboxOne/SlotList")) {
|
||||
// there is a slot list file with details of the saves
|
||||
C4JStorage::ETMSStatus status = StorageManager.TMSPP_ReadFile(
|
||||
m_iPad, C4JStorage::eGlobalStorage_TitleUser,
|
||||
C4JStorage::TMS_FILETYPE_BINARY, "XboxOne/SlotList",
|
||||
&CScene_TransferToXboxOne::TMSPPSlotListReturned, this);
|
||||
m_iX = IDS_TOOLTIPS_CLEARSLOTS;
|
||||
} else {
|
||||
CXuiCtrl4JList::LIST_ITEM_INFO ListInfo;
|
||||
|
||||
// saves will be called slot1 to slotx
|
||||
// there will be a details file with the names and png of each slot
|
||||
m_pbSlotListFile=NULL;
|
||||
m_uiSlotListFileBytes=0;
|
||||
ZeroMemory(&ListInfo, sizeof(CXuiCtrl4JList::LIST_ITEM_INFO));
|
||||
|
||||
if(StorageManager.TMSPP_InFileList(C4JStorage::eGlobalStorage_TitleUser,m_iPad,L"XboxOne/SlotList"))
|
||||
{
|
||||
// there is a slot list file with details of the saves
|
||||
C4JStorage::ETMSStatus status=StorageManager.TMSPP_ReadFile(m_iPad,C4JStorage::eGlobalStorage_TitleUser,C4JStorage::TMS_FILETYPE_BINARY,"XboxOne/SlotList",&CScene_TransferToXboxOne::TMSPPSlotListReturned,this);
|
||||
m_iX=IDS_TOOLTIPS_CLEARSLOTS;
|
||||
}
|
||||
else
|
||||
{
|
||||
CXuiCtrl4JList::LIST_ITEM_INFO ListInfo;
|
||||
// create dummy slots
|
||||
for (int i = 0; i < m_MaxSlotC; i++) {
|
||||
memcpy(m_pSlotDataA[i].wchSaveTitle,
|
||||
app.GetString(IDS_XBONE_EMPTYSLOT),
|
||||
sizeof(WCHAR) * XCONTENT_MAX_DISPLAYNAME_LENGTH);
|
||||
ListInfo.pwszText = app.GetString(IDS_XBONE_EMPTYSLOT);
|
||||
ListInfo.fEnabled = TRUE;
|
||||
ListInfo.iData = -1;
|
||||
m_pSavesSlotList->AddData(ListInfo);
|
||||
}
|
||||
m_SavesSlotListTimer.SetShow(FALSE);
|
||||
}
|
||||
|
||||
ZeroMemory(&ListInfo,sizeof(CXuiCtrl4JList::LIST_ITEM_INFO));
|
||||
CXuiSceneBase::SetTooltips(DEFAULT_XUI_MENU_USER, IDS_TOOLTIPS_SELECT,
|
||||
IDS_TOOLTIPS_BACK, m_iX, -1, -1, -1, -1, -1, -1,
|
||||
true);
|
||||
|
||||
// create dummy slots
|
||||
for(int i=0;i<m_MaxSlotC;i++)
|
||||
{
|
||||
memcpy(m_pSlotDataA[i].wchSaveTitle,app.GetString(IDS_XBONE_EMPTYSLOT),sizeof(WCHAR)*XCONTENT_MAX_DISPLAYNAME_LENGTH);
|
||||
ListInfo.pwszText = app.GetString(IDS_XBONE_EMPTYSLOT);
|
||||
ListInfo.fEnabled = TRUE;
|
||||
ListInfo.iData = -1;
|
||||
m_pSavesSlotList->AddData(ListInfo);
|
||||
}
|
||||
m_SavesSlotListTimer.SetShow(FALSE);
|
||||
}
|
||||
|
||||
|
||||
CXuiSceneBase::SetTooltips( DEFAULT_XUI_MENU_USER, IDS_TOOLTIPS_SELECT, IDS_TOOLTIPS_BACK, m_iX, -1,-1,-1,-1,-1,-1,true);
|
||||
|
||||
return S_OK;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------
|
||||
// TMSPPSlotListReturned callback
|
||||
//----------------------------------------------------------------------------------
|
||||
int CScene_TransferToXboxOne::TMSPPWriteReturned(LPVOID pParam,int iPad,int iUserData)
|
||||
{
|
||||
CScene_TransferToXboxOne* pClass = (CScene_TransferToXboxOne *) pParam;
|
||||
pClass->m_bWaitingForWrite=false;
|
||||
int CScene_TransferToXboxOne::TMSPPWriteReturned(LPVOID pParam, int iPad,
|
||||
int iUserData) {
|
||||
CScene_TransferToXboxOne* pClass = (CScene_TransferToXboxOne*)pParam;
|
||||
pClass->m_bWaitingForWrite = false;
|
||||
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------
|
||||
// TMSPPSlotListReturned callback
|
||||
//----------------------------------------------------------------------------------
|
||||
int CScene_TransferToXboxOne::TMSPPDeleteReturned(LPVOID pParam,int iPad,int iUserData)
|
||||
{
|
||||
CScene_TransferToXboxOne* pClass = (CScene_TransferToXboxOne *) pParam;
|
||||
pClass->m_SavesSlotListTimer.SetShow(FALSE);
|
||||
pClass->m_bIgnoreInput=false;
|
||||
int CScene_TransferToXboxOne::TMSPPDeleteReturned(LPVOID pParam, int iPad,
|
||||
int iUserData) {
|
||||
CScene_TransferToXboxOne* pClass = (CScene_TransferToXboxOne*)pParam;
|
||||
pClass->m_SavesSlotListTimer.SetShow(FALSE);
|
||||
pClass->m_bIgnoreInput = false;
|
||||
|
||||
// update the slots
|
||||
delete pClass->m_pbSlotListFile;
|
||||
pClass->m_pbSlotListFile=NULL;
|
||||
pClass->m_uiSlotListFileBytes=0;
|
||||
pClass->m_pSavesSlotList->RemoveAllData();
|
||||
CXuiCtrl4JList::LIST_ITEM_INFO ListInfo;
|
||||
// update the slots
|
||||
delete pClass->m_pbSlotListFile;
|
||||
pClass->m_pbSlotListFile = NULL;
|
||||
pClass->m_uiSlotListFileBytes = 0;
|
||||
pClass->m_pSavesSlotList->RemoveAllData();
|
||||
CXuiCtrl4JList::LIST_ITEM_INFO ListInfo;
|
||||
|
||||
ZeroMemory(&ListInfo,sizeof(CXuiCtrl4JList::LIST_ITEM_INFO));
|
||||
// clear our slot info
|
||||
ZeroMemory(pClass->m_pSlotDataA,sizeof(SLOTDATA)*pClass->m_MaxSlotC);
|
||||
ZeroMemory(&ListInfo, sizeof(CXuiCtrl4JList::LIST_ITEM_INFO));
|
||||
// clear our slot info
|
||||
ZeroMemory(pClass->m_pSlotDataA, sizeof(SLOTDATA) * pClass->m_MaxSlotC);
|
||||
|
||||
for(int i=0;i<pClass->m_MaxSlotC;i++)
|
||||
{
|
||||
memcpy(pClass->m_pSlotDataA[i].wchSaveTitle,app.GetString(IDS_XBONE_EMPTYSLOT),sizeof(WCHAR)*XCONTENT_MAX_DISPLAYNAME_LENGTH);
|
||||
ListInfo.pwszText = app.GetString(IDS_XBONE_EMPTYSLOT);
|
||||
ListInfo.fEnabled = TRUE;
|
||||
ListInfo.iData = -1;
|
||||
pClass->m_pSavesSlotList->AddData(ListInfo);
|
||||
}
|
||||
for (int i = 0; i < pClass->m_MaxSlotC; i++) {
|
||||
memcpy(pClass->m_pSlotDataA[i].wchSaveTitle,
|
||||
app.GetString(IDS_XBONE_EMPTYSLOT),
|
||||
sizeof(WCHAR) * XCONTENT_MAX_DISPLAYNAME_LENGTH);
|
||||
ListInfo.pwszText = app.GetString(IDS_XBONE_EMPTYSLOT);
|
||||
ListInfo.fEnabled = TRUE;
|
||||
ListInfo.iData = -1;
|
||||
pClass->m_pSavesSlotList->AddData(ListInfo);
|
||||
}
|
||||
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------
|
||||
// TMSPPSlotListReturned callback
|
||||
//----------------------------------------------------------------------------------
|
||||
int CScene_TransferToXboxOne::TMSPPSlotListReturned(LPVOID pParam,int iPad,int iUserData,C4JStorage::PTMSPP_FILEDATA pFileData, LPCSTR szFilename)
|
||||
{
|
||||
CScene_TransferToXboxOne* pClass = (CScene_TransferToXboxOne *) pParam;
|
||||
unsigned int uiSlotListFileSlots=*((unsigned int *)pFileData->pbData);
|
||||
pClass->m_pbSlotListFile=pFileData->pbData;
|
||||
pClass->m_uiSlotListFileBytes=pFileData->dwSize;
|
||||
int CScene_TransferToXboxOne::TMSPPSlotListReturned(
|
||||
LPVOID pParam, int iPad, int iUserData,
|
||||
C4JStorage::PTMSPP_FILEDATA pFileData, LPCSTR szFilename) {
|
||||
CScene_TransferToXboxOne* pClass = (CScene_TransferToXboxOne*)pParam;
|
||||
unsigned int uiSlotListFileSlots = *((unsigned int*)pFileData->pbData);
|
||||
pClass->m_pbSlotListFile = pFileData->pbData;
|
||||
pClass->m_uiSlotListFileBytes = pFileData->dwSize;
|
||||
|
||||
// clear our slot info
|
||||
ZeroMemory(pClass->m_pSlotDataA,sizeof(SLOTDATA)*pClass->m_MaxSlotC);
|
||||
// set the empty slot strings
|
||||
for(int i=0;i<pClass->m_MaxSlotC;i++)
|
||||
{
|
||||
memcpy(pClass->m_pSlotDataA[i].wchSaveTitle,app.GetString(IDS_XBONE_EMPTYSLOT),sizeof(WCHAR)*XCONTENT_MAX_DISPLAYNAME_LENGTH);
|
||||
}
|
||||
// update our slot info with the data from the file - might have less slots
|
||||
unsigned int uiNewSlotsC=(pClass->m_MaxSlotC<uiSlotListFileSlots)?pClass->m_MaxSlotC:uiSlotListFileSlots;
|
||||
memcpy(pClass->m_pSlotDataA,pClass->m_pbSlotListFile + sizeof(unsigned int),sizeof(SLOTDATA)*uiNewSlotsC);
|
||||
// clear our slot info
|
||||
ZeroMemory(pClass->m_pSlotDataA, sizeof(SLOTDATA) * pClass->m_MaxSlotC);
|
||||
// set the empty slot strings
|
||||
for (int i = 0; i < pClass->m_MaxSlotC; i++) {
|
||||
memcpy(pClass->m_pSlotDataA[i].wchSaveTitle,
|
||||
app.GetString(IDS_XBONE_EMPTYSLOT),
|
||||
sizeof(WCHAR) * XCONTENT_MAX_DISPLAYNAME_LENGTH);
|
||||
}
|
||||
// update our slot info with the data from the file - might have less slots
|
||||
unsigned int uiNewSlotsC = (pClass->m_MaxSlotC < uiSlotListFileSlots)
|
||||
? pClass->m_MaxSlotC
|
||||
: uiSlotListFileSlots;
|
||||
memcpy(pClass->m_pSlotDataA,
|
||||
pClass->m_pbSlotListFile + sizeof(unsigned int),
|
||||
sizeof(SLOTDATA) * uiNewSlotsC);
|
||||
|
||||
CXuiCtrl4JList::LIST_ITEM_INFO ListInfo;
|
||||
CXuiCtrl4JList::LIST_ITEM_INFO ListInfo;
|
||||
|
||||
ZeroMemory(&ListInfo,sizeof(CXuiCtrl4JList::LIST_ITEM_INFO));
|
||||
PBYTE pbImageData=pClass->m_pbSlotListFile + sizeof(unsigned int) + sizeof(SLOTDATA)*uiSlotListFileSlots;
|
||||
ZeroMemory(&ListInfo, sizeof(CXuiCtrl4JList::LIST_ITEM_INFO));
|
||||
PBYTE pbImageData = pClass->m_pbSlotListFile + sizeof(unsigned int) +
|
||||
sizeof(SLOTDATA) * uiSlotListFileSlots;
|
||||
|
||||
// fill out the slot info
|
||||
for(int i=0;i<pClass->m_MaxSlotC;i++)
|
||||
{
|
||||
if(i<uiNewSlotsC)
|
||||
{
|
||||
ListInfo.pwszText = pClass->m_pSlotDataA[i].wchSaveTitle;
|
||||
ListInfo.fEnabled = TRUE;
|
||||
ListInfo.iData = -1;
|
||||
pClass->m_pSavesSlotList->AddData(ListInfo);
|
||||
|
||||
if(pClass->m_pSlotDataA[i].uiImageLength!=0)
|
||||
{
|
||||
XuiCreateTextureBrushFromMemory(pbImageData,pClass->m_pSlotDataA[i].uiImageLength,&pClass->m_hXuiBrush);
|
||||
pClass->m_pSavesSlotList->UpdateGraphic(i,pClass->m_hXuiBrush);
|
||||
// increment the image data pointer
|
||||
pbImageData+=pClass->m_pSlotDataA[i].uiImageLength;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// make it blank
|
||||
ListInfo.pwszText = app.GetString(IDS_XBONE_EMPTYSLOT);
|
||||
ListInfo.fEnabled = TRUE;
|
||||
ListInfo.iData = -1;
|
||||
pClass->m_pSavesSlotList->AddData(ListInfo);
|
||||
}
|
||||
}
|
||||
pClass->m_SavesSlotListTimer.SetShow(FALSE);
|
||||
return 0;
|
||||
// fill out the slot info
|
||||
for (int i = 0; i < pClass->m_MaxSlotC; i++) {
|
||||
if (i < uiNewSlotsC) {
|
||||
ListInfo.pwszText = pClass->m_pSlotDataA[i].wchSaveTitle;
|
||||
ListInfo.fEnabled = TRUE;
|
||||
ListInfo.iData = -1;
|
||||
pClass->m_pSavesSlotList->AddData(ListInfo);
|
||||
|
||||
if (pClass->m_pSlotDataA[i].uiImageLength != 0) {
|
||||
XuiCreateTextureBrushFromMemory(
|
||||
pbImageData, pClass->m_pSlotDataA[i].uiImageLength,
|
||||
&pClass->m_hXuiBrush);
|
||||
pClass->m_pSavesSlotList->UpdateGraphic(i, pClass->m_hXuiBrush);
|
||||
// increment the image data pointer
|
||||
pbImageData += pClass->m_pSlotDataA[i].uiImageLength;
|
||||
}
|
||||
} else {
|
||||
// make it blank
|
||||
ListInfo.pwszText = app.GetString(IDS_XBONE_EMPTYSLOT);
|
||||
ListInfo.fEnabled = TRUE;
|
||||
ListInfo.iData = -1;
|
||||
pClass->m_pSavesSlotList->AddData(ListInfo);
|
||||
}
|
||||
}
|
||||
pClass->m_SavesSlotListTimer.SetShow(FALSE);
|
||||
return 0;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------
|
||||
// Handler for OnDestroy
|
||||
//----------------------------------------------------------------------------------
|
||||
HRESULT CScene_TransferToXboxOne::OnDestroy()
|
||||
{
|
||||
return S_OK;
|
||||
}
|
||||
HRESULT CScene_TransferToXboxOne::OnDestroy() { return S_OK; }
|
||||
|
||||
//----------------------------------------------------------------------------------
|
||||
// Handler for the button press message.
|
||||
//----------------------------------------------------------------------------------
|
||||
HRESULT CScene_TransferToXboxOne::OnNotifyPressEx(HXUIOBJ hObjPressed, XUINotifyPress* pNotifyPressData, BOOL& rfHandled)
|
||||
{
|
||||
if(m_bIgnoreInput) return S_OK;
|
||||
HRESULT CScene_TransferToXboxOne::OnNotifyPressEx(
|
||||
HXUIOBJ hObjPressed, XUINotifyPress* pNotifyPressData, BOOL& rfHandled) {
|
||||
if (m_bIgnoreInput) return S_OK;
|
||||
|
||||
// if we're retrieving save info, ignore key presses
|
||||
if(m_bRetrievingSaveInfo)
|
||||
{
|
||||
return S_OK;
|
||||
}
|
||||
// if we're retrieving save info, ignore key presses
|
||||
if (m_bRetrievingSaveInfo) {
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
// This assumes all buttons can only be pressed with the A button
|
||||
ui.AnimateKeyPress(pNotifyPressData->UserIndex, VK_PAD_A);
|
||||
// This assumes all buttons can only be pressed with the A button
|
||||
ui.AnimateKeyPress(pNotifyPressData->UserIndex, VK_PAD_A);
|
||||
|
||||
if(hObjPressed==m_SavesSlotList)
|
||||
{
|
||||
m_bIgnoreInput=true;
|
||||
if (hObjPressed == m_SavesSlotList) {
|
||||
m_bIgnoreInput = true;
|
||||
|
||||
// update the info in the SlotList file
|
||||
CXuiControl pItem;
|
||||
int iIndex;
|
||||
// update the info in the SlotList file
|
||||
CXuiControl pItem;
|
||||
int iIndex;
|
||||
|
||||
// get the selected item
|
||||
iIndex=m_SavesSlotList.GetCurSel(&pItem);
|
||||
// get the selected item
|
||||
iIndex = m_SavesSlotList.GetCurSel(&pItem);
|
||||
|
||||
// check if there is a save there
|
||||
// check if there is a save there
|
||||
|
||||
CXuiCtrl4JList::LIST_ITEM_INFO info = m_pSavesSlotList->GetData(iIndex);
|
||||
if(info.pwszImage!=NULL)
|
||||
{
|
||||
// we have a save here
|
||||
// Are you sure, etc.
|
||||
}
|
||||
CXuiCtrl4JList::LIST_ITEM_INFO info = m_pSavesSlotList->GetData(iIndex);
|
||||
if (info.pwszImage != NULL) {
|
||||
// we have a save here
|
||||
// Are you sure, etc.
|
||||
}
|
||||
|
||||
// update the data
|
||||
memcpy(m_pSlotDataA[iIndex].wchSaveTitle,m_XContentData.szDisplayName,sizeof(WCHAR)*XCONTENT_MAX_DISPLAYNAME_LENGTH);
|
||||
m_pSavesSlotList->UpdateText(iIndex,m_pSlotDataA[iIndex].wchSaveTitle);
|
||||
// update the data
|
||||
memcpy(m_pSlotDataA[iIndex].wchSaveTitle, m_XContentData.szDisplayName,
|
||||
sizeof(WCHAR) * XCONTENT_MAX_DISPLAYNAME_LENGTH);
|
||||
m_pSavesSlotList->UpdateText(iIndex, m_pSlotDataA[iIndex].wchSaveTitle);
|
||||
|
||||
// if there is no thumbnail, retrieve the default one from the file.
|
||||
// Don't delete the image data after creating the xuibrush, since we'll use it in the rename of the save
|
||||
bool bHostOptionsRead = false;
|
||||
unsigned int uiHostOptions = 0;
|
||||
// if there is no thumbnail, retrieve the default one from the file.
|
||||
// Don't delete the image data after creating the xuibrush, since we'll
|
||||
// use it in the rename of the save
|
||||
bool bHostOptionsRead = false;
|
||||
unsigned int uiHostOptions = 0;
|
||||
|
||||
XuiCreateTextureBrushFromMemory(m_pbImageData,m_dwImageBytes,&m_hXuiBrush);
|
||||
m_pSavesSlotList->UpdateGraphic(iIndex,m_hXuiBrush);
|
||||
XuiCreateTextureBrushFromMemory(m_pbImageData, m_dwImageBytes,
|
||||
&m_hXuiBrush);
|
||||
m_pSavesSlotList->UpdateGraphic(iIndex, m_hXuiBrush);
|
||||
|
||||
m_pSlotDataA[iIndex].uiImageLength=m_dwImageBytes;
|
||||
m_pSlotDataA[iIndex].uiImageLength = m_dwImageBytes;
|
||||
|
||||
m_bIgnoreInput=false;
|
||||
m_bIgnoreInput = false;
|
||||
|
||||
// finished so navigate back
|
||||
//app.NavigateBack(XUSER_INDEX_ANY);
|
||||
BuildSlotFile(iIndex,m_pbImageData,m_dwImageBytes);
|
||||
}
|
||||
|
||||
return S_OK;
|
||||
// finished so navigate back
|
||||
// app.NavigateBack(XUSER_INDEX_ANY);
|
||||
BuildSlotFile(iIndex, m_pbImageData, m_dwImageBytes);
|
||||
}
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT CScene_TransferToXboxOne::BuildSlotFile(int iIndexBeingUpdated,PBYTE pbImageData,DWORD dwImageBytes )
|
||||
{
|
||||
SLOTDATA *pCurrentSlotData=NULL;
|
||||
PBYTE pbCurrentSlotDataPtr=NULL;
|
||||
// there may be no slot file yet
|
||||
if(m_pbSlotListFile!=NULL)
|
||||
{
|
||||
pCurrentSlotData=(SLOTDATA *)(m_pbSlotListFile+sizeof(unsigned int));
|
||||
pbCurrentSlotDataPtr=m_pbSlotListFile + sizeof(unsigned int) + sizeof(SLOTDATA)*m_MaxSlotC;
|
||||
}
|
||||
HRESULT CScene_TransferToXboxOne::BuildSlotFile(int iIndexBeingUpdated,
|
||||
PBYTE pbImageData,
|
||||
DWORD dwImageBytes) {
|
||||
SLOTDATA* pCurrentSlotData = NULL;
|
||||
PBYTE pbCurrentSlotDataPtr = NULL;
|
||||
// there may be no slot file yet
|
||||
if (m_pbSlotListFile != NULL) {
|
||||
pCurrentSlotData = (SLOTDATA*)(m_pbSlotListFile + sizeof(unsigned int));
|
||||
pbCurrentSlotDataPtr = m_pbSlotListFile + sizeof(unsigned int) +
|
||||
sizeof(SLOTDATA) * m_MaxSlotC;
|
||||
}
|
||||
|
||||
m_uiSlotID=iIndexBeingUpdated;
|
||||
m_uiSlotID = iIndexBeingUpdated;
|
||||
|
||||
// memory required - first int is the number of slots in this file, in case that changes later
|
||||
unsigned int uiBytesRequired=sizeof(unsigned int) + sizeof(SLOTDATA)*m_MaxSlotC;
|
||||
for(int i=0;i<m_MaxSlotC;i++)
|
||||
{
|
||||
if(i==iIndexBeingUpdated)
|
||||
{
|
||||
uiBytesRequired+=dwImageBytes;
|
||||
}
|
||||
else
|
||||
{
|
||||
uiBytesRequired+=m_pSlotDataA[i].uiImageLength;
|
||||
}
|
||||
}
|
||||
// memory required - first int is the number of slots in this file, in case
|
||||
// that changes later
|
||||
unsigned int uiBytesRequired =
|
||||
sizeof(unsigned int) + sizeof(SLOTDATA) * m_MaxSlotC;
|
||||
for (int i = 0; i < m_MaxSlotC; i++) {
|
||||
if (i == iIndexBeingUpdated) {
|
||||
uiBytesRequired += dwImageBytes;
|
||||
} else {
|
||||
uiBytesRequired += m_pSlotDataA[i].uiImageLength;
|
||||
}
|
||||
}
|
||||
|
||||
PBYTE pbNewSlotFileData= new BYTE [uiBytesRequired];
|
||||
*((unsigned int *)pbNewSlotFileData)=m_MaxSlotC;
|
||||
PBYTE pbNewSlotFileDataSlots=pbNewSlotFileData + sizeof(unsigned int);
|
||||
PBYTE pbNewSlotImageDataPtr=pbNewSlotFileData + sizeof(unsigned int) + sizeof(SLOTDATA)*m_MaxSlotC;
|
||||
SLOTDATA *pNewSlotData=(SLOTDATA *)pbNewSlotFileDataSlots;
|
||||
PBYTE pbNewSlotFileData = new BYTE[uiBytesRequired];
|
||||
*((unsigned int*)pbNewSlotFileData) = m_MaxSlotC;
|
||||
PBYTE pbNewSlotFileDataSlots = pbNewSlotFileData + sizeof(unsigned int);
|
||||
PBYTE pbNewSlotImageDataPtr = pbNewSlotFileData + sizeof(unsigned int) +
|
||||
sizeof(SLOTDATA) * m_MaxSlotC;
|
||||
SLOTDATA* pNewSlotData = (SLOTDATA*)pbNewSlotFileDataSlots;
|
||||
|
||||
// copy the slot info into the new memory, just after the first int
|
||||
memcpy(pbNewSlotFileDataSlots,m_pSlotDataA,sizeof(SLOTDATA)*m_MaxSlotC);
|
||||
// copy the slot info into the new memory, just after the first int
|
||||
memcpy(pbNewSlotFileDataSlots, m_pSlotDataA, sizeof(SLOTDATA) * m_MaxSlotC);
|
||||
|
||||
for(int i=0;i<m_MaxSlotC;i++)
|
||||
{
|
||||
if(i==iIndexBeingUpdated)
|
||||
{
|
||||
memcpy(pbNewSlotImageDataPtr,pbImageData,dwImageBytes);
|
||||
pbNewSlotImageDataPtr+=dwImageBytes;
|
||||
// update the fields
|
||||
pNewSlotData[i].uiImageLength=dwImageBytes;
|
||||
// save title is already correct
|
||||
}
|
||||
else
|
||||
{
|
||||
if(pbCurrentSlotDataPtr!=NULL)
|
||||
{
|
||||
memcpy(pbNewSlotImageDataPtr,pbCurrentSlotDataPtr,pCurrentSlotData[i].uiImageLength);
|
||||
pbNewSlotImageDataPtr+=pCurrentSlotData[i].uiImageLength;
|
||||
}
|
||||
// fields are already correct
|
||||
}
|
||||
for (int i = 0; i < m_MaxSlotC; i++) {
|
||||
if (i == iIndexBeingUpdated) {
|
||||
memcpy(pbNewSlotImageDataPtr, pbImageData, dwImageBytes);
|
||||
pbNewSlotImageDataPtr += dwImageBytes;
|
||||
// update the fields
|
||||
pNewSlotData[i].uiImageLength = dwImageBytes;
|
||||
// save title is already correct
|
||||
} else {
|
||||
if (pbCurrentSlotDataPtr != NULL) {
|
||||
memcpy(pbNewSlotImageDataPtr, pbCurrentSlotDataPtr,
|
||||
pCurrentSlotData[i].uiImageLength);
|
||||
pbNewSlotImageDataPtr += pCurrentSlotData[i].uiImageLength;
|
||||
}
|
||||
// fields are already correct
|
||||
}
|
||||
|
||||
// move to the next image data in the current slot file
|
||||
if(pbCurrentSlotDataPtr!=NULL)
|
||||
{
|
||||
pbCurrentSlotDataPtr+=pCurrentSlotData[i].uiImageLength;
|
||||
}
|
||||
}
|
||||
// move to the next image data in the current slot file
|
||||
if (pbCurrentSlotDataPtr != NULL) {
|
||||
pbCurrentSlotDataPtr += pCurrentSlotData[i].uiImageLength;
|
||||
}
|
||||
}
|
||||
|
||||
// free the previous file data and the current file data
|
||||
delete m_pbSlotListFile;
|
||||
// free the previous file data and the current file data
|
||||
delete m_pbSlotListFile;
|
||||
|
||||
// reset the pointer until we have the exit from this scene running
|
||||
m_pbSlotListFile = pbNewSlotFileData;
|
||||
m_uiSlotListFileBytes = uiBytesRequired;
|
||||
m_pSlotDataA = (SLOTDATA *)pbNewSlotFileDataSlots;
|
||||
|
||||
LoadingInputParams *loadingParams = new LoadingInputParams();
|
||||
loadingParams->func = &CScene_TransferToXboxOne::UploadSaveForXboxOneThreadProc;
|
||||
loadingParams->lpParam = (LPVOID)this;
|
||||
// reset the pointer until we have the exit from this scene running
|
||||
m_pbSlotListFile = pbNewSlotFileData;
|
||||
m_uiSlotListFileBytes = uiBytesRequired;
|
||||
m_pSlotDataA = (SLOTDATA*)pbNewSlotFileDataSlots;
|
||||
|
||||
UIFullscreenProgressCompletionData *completionData = new UIFullscreenProgressCompletionData();
|
||||
completionData->bShowBackground=TRUE;
|
||||
completionData->bShowLogo=TRUE;
|
||||
completionData->iPad = m_iPad;
|
||||
completionData->type = e_ProgressCompletion_NavigateBackToScene;
|
||||
completionData->scene = eUIScene_LoadMenu;
|
||||
loadingParams->completionData = completionData;
|
||||
LoadingInputParams* loadingParams = new LoadingInputParams();
|
||||
loadingParams->func =
|
||||
&CScene_TransferToXboxOne::UploadSaveForXboxOneThreadProc;
|
||||
loadingParams->lpParam = (LPVOID)this;
|
||||
|
||||
app.NavigateToScene(m_iPad,eUIScene_FullscreenProgress, loadingParams);
|
||||
|
||||
return S_OK;
|
||||
UIFullscreenProgressCompletionData* completionData =
|
||||
new UIFullscreenProgressCompletionData();
|
||||
completionData->bShowBackground = TRUE;
|
||||
completionData->bShowLogo = TRUE;
|
||||
completionData->iPad = m_iPad;
|
||||
completionData->type = e_ProgressCompletion_NavigateBackToScene;
|
||||
completionData->scene = eUIScene_LoadMenu;
|
||||
loadingParams->completionData = completionData;
|
||||
|
||||
app.NavigateToScene(m_iPad, eUIScene_FullscreenProgress, loadingParams);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
int CScene_TransferToXboxOne::UploadSaveForXboxOneThreadProc( LPVOID lpParameter )
|
||||
{
|
||||
HRESULT hr = S_OK;
|
||||
char szFilename[32];
|
||||
CScene_TransferToXboxOne* pClass = (CScene_TransferToXboxOne *) lpParameter;
|
||||
Minecraft *pMinecraft = Minecraft::GetInstance();
|
||||
unsigned int uiComplete=0;
|
||||
pClass->m_bWaitingForWrite=true;
|
||||
pMinecraft->progressRenderer->progressStart(IDS_XBONE_UPLOAD_SAVE_TITLE);
|
||||
pMinecraft->progressRenderer->progressStage( IDS_XBONE_UPLOAD_METADATA );
|
||||
// now write the new slot data file to global storage, and then write the save data
|
||||
C4JStorage::ETMSStatus eStatus=StorageManager.TMSPP_WriteFile(pClass->m_iPad,C4JStorage::eGlobalStorage_TitleUser,C4JStorage::TMS_FILETYPE_BINARY,C4JStorage::TMS_UGCTYPE_NONE,"XboxOne/SlotList",(PCHAR) pClass->m_pbSlotListFile, pClass->m_uiSlotListFileBytes,
|
||||
&CScene_TransferToXboxOne::TMSPPWriteReturned,lpParameter, 0);
|
||||
int CScene_TransferToXboxOne::UploadSaveForXboxOneThreadProc(
|
||||
LPVOID lpParameter) {
|
||||
HRESULT hr = S_OK;
|
||||
char szFilename[32];
|
||||
CScene_TransferToXboxOne* pClass = (CScene_TransferToXboxOne*)lpParameter;
|
||||
Minecraft* pMinecraft = Minecraft::GetInstance();
|
||||
unsigned int uiComplete = 0;
|
||||
pClass->m_bWaitingForWrite = true;
|
||||
pMinecraft->progressRenderer->progressStart(IDS_XBONE_UPLOAD_SAVE_TITLE);
|
||||
pMinecraft->progressRenderer->progressStage(IDS_XBONE_UPLOAD_METADATA);
|
||||
// now write the new slot data file to global storage, and then write the
|
||||
// save data
|
||||
C4JStorage::ETMSStatus eStatus = StorageManager.TMSPP_WriteFile(
|
||||
pClass->m_iPad, C4JStorage::eGlobalStorage_TitleUser,
|
||||
C4JStorage::TMS_FILETYPE_BINARY, C4JStorage::TMS_UGCTYPE_NONE,
|
||||
"XboxOne/SlotList", (PCHAR)pClass->m_pbSlotListFile,
|
||||
pClass->m_uiSlotListFileBytes,
|
||||
&CScene_TransferToXboxOne::TMSPPWriteReturned, lpParameter, 0);
|
||||
|
||||
if(eStatus!=C4JStorage::ETMSStatus_WriteInProgress)
|
||||
{
|
||||
// failed
|
||||
pClass->m_bWaitingForWrite=false;
|
||||
}
|
||||
else
|
||||
{
|
||||
// loop waiting for the write to complete
|
||||
uiComplete=0;
|
||||
while(pClass->m_bWaitingForWrite && (hr == S_OK))
|
||||
{
|
||||
Sleep(50);
|
||||
uiComplete++;
|
||||
if(uiComplete>100) uiComplete=100;
|
||||
|
||||
pMinecraft->progressRenderer->progressStagePercentage(uiComplete);
|
||||
if (eStatus != C4JStorage::ETMSStatus_WriteInProgress) {
|
||||
// failed
|
||||
pClass->m_bWaitingForWrite = false;
|
||||
} else {
|
||||
// loop waiting for the write to complete
|
||||
uiComplete = 0;
|
||||
while (pClass->m_bWaitingForWrite && (hr == S_OK)) {
|
||||
Sleep(50);
|
||||
uiComplete++;
|
||||
if (uiComplete > 100) uiComplete = 100;
|
||||
|
||||
if(app.GetChangingSessionType())
|
||||
{
|
||||
// 4J Stu - This causes the fullscreenprogress scene to ignore the action it was given
|
||||
hr = ERROR_CANCELLED;
|
||||
}
|
||||
}
|
||||
pMinecraft->progressRenderer->progressStagePercentage(uiComplete);
|
||||
|
||||
if(hr!=S_OK) return -1;
|
||||
if (app.GetChangingSessionType()) {
|
||||
// 4J Stu - This causes the fullscreenprogress scene to ignore
|
||||
// the action it was given
|
||||
hr = ERROR_CANCELLED;
|
||||
}
|
||||
}
|
||||
|
||||
// finish the bar
|
||||
for(int i=uiComplete;i<100;i++)
|
||||
{
|
||||
Sleep(5);
|
||||
pMinecraft->progressRenderer->progressStagePercentage(i);
|
||||
}
|
||||
if (hr != S_OK) return -1;
|
||||
|
||||
// finish the bar
|
||||
for (int i = uiComplete; i < 100; i++) {
|
||||
Sleep(5);
|
||||
pMinecraft->progressRenderer->progressStagePercentage(i);
|
||||
}
|
||||
|
||||
// now upload the save data
|
||||
pMinecraft->progressRenderer->progressStage( IDS_XBONE_UPLOAD_SAVE );
|
||||
// now upload the save data
|
||||
pMinecraft->progressRenderer->progressStage(IDS_XBONE_UPLOAD_SAVE);
|
||||
|
||||
// write the save file, and increment the progress percentage
|
||||
pMinecraft->progressRenderer->progressStagePercentage(25);
|
||||
pClass->m_bSaveDataReceived=false;
|
||||
C4JStorage::ELoadGameStatus eLoadStatus=StorageManager.LoadSaveData(&pClass->m_XContentData,CScene_TransferToXboxOne::LoadSaveDataReturned,lpParameter);
|
||||
// write the save file, and increment the progress percentage
|
||||
pMinecraft->progressRenderer->progressStagePercentage(25);
|
||||
pClass->m_bSaveDataReceived = false;
|
||||
C4JStorage::ELoadGameStatus eLoadStatus = StorageManager.LoadSaveData(
|
||||
&pClass->m_XContentData,
|
||||
CScene_TransferToXboxOne::LoadSaveDataReturned, lpParameter);
|
||||
|
||||
// sleep until we have the data
|
||||
while(pClass->m_bSaveDataReceived==false)
|
||||
{
|
||||
Sleep(50);
|
||||
}
|
||||
// sleep until we have the data
|
||||
while (pClass->m_bSaveDataReceived == false) {
|
||||
Sleep(50);
|
||||
}
|
||||
|
||||
// write the save to user TMS
|
||||
// write the save to user TMS
|
||||
|
||||
// break the file up into 256K chunks
|
||||
unsigned int uiChunkSize=262144;
|
||||
unsigned int uiBytesLeft=pClass->m_uiStorageLength;
|
||||
C4JStorage::ETMSStatus eStatus;
|
||||
// max file size would be 100*256K
|
||||
unsigned int uiPercentageChunk=100/(pClass->m_uiStorageLength/uiChunkSize);
|
||||
uiComplete=0;
|
||||
// break the file up into 256K chunks
|
||||
unsigned int uiChunkSize = 262144;
|
||||
unsigned int uiBytesLeft = pClass->m_uiStorageLength;
|
||||
C4JStorage::ETMSStatus eStatus;
|
||||
// max file size would be 100*256K
|
||||
unsigned int uiPercentageChunk =
|
||||
100 / (pClass->m_uiStorageLength / uiChunkSize);
|
||||
uiComplete = 0;
|
||||
|
||||
if(uiPercentageChunk==0) uiPercentageChunk=1;
|
||||
if (uiPercentageChunk == 0) uiPercentageChunk = 1;
|
||||
|
||||
for(int i=0;i<(pClass->m_uiStorageLength/uiChunkSize)+1;i++)
|
||||
{
|
||||
sprintf( szFilename, "XboxOne/Slot%.2d%.2d", pClass->m_uiSlotID,i );
|
||||
PCHAR pchData=((PCHAR)pClass->m_pvSaveMem)+i*uiChunkSize;
|
||||
|
||||
pClass->m_bWaitingForWrite=true;
|
||||
if(uiBytesLeft>=uiChunkSize)
|
||||
{
|
||||
eStatus=StorageManager.TMSPP_WriteFile(pClass->m_iPad,C4JStorage::eGlobalStorage_TitleUser,C4JStorage::TMS_FILETYPE_BINARY,C4JStorage::TMS_UGCTYPE_NONE,szFilename,pchData, uiChunkSize,
|
||||
&CScene_TransferToXboxOne::TMSPPWriteReturned,lpParameter, 0);
|
||||
uiBytesLeft-=uiChunkSize;
|
||||
}
|
||||
else
|
||||
{
|
||||
// last bit of the file to upload is less than uiChunkSize
|
||||
eStatus=StorageManager.TMSPP_WriteFile(pClass->m_iPad,C4JStorage::eGlobalStorage_TitleUser,C4JStorage::TMS_FILETYPE_BINARY,C4JStorage::TMS_UGCTYPE_NONE,szFilename,pchData, uiBytesLeft,
|
||||
&CScene_TransferToXboxOne::TMSPPWriteReturned,lpParameter, 0);
|
||||
}
|
||||
for (int i = 0; i < (pClass->m_uiStorageLength / uiChunkSize) + 1;
|
||||
i++) {
|
||||
sprintf(szFilename, "XboxOne/Slot%.2d%.2d", pClass->m_uiSlotID, i);
|
||||
PCHAR pchData = ((PCHAR)pClass->m_pvSaveMem) + i * uiChunkSize;
|
||||
|
||||
// wait until
|
||||
if(eStatus!=C4JStorage::ETMSStatus_WriteInProgress)
|
||||
{
|
||||
// failed
|
||||
pClass->m_bWaitingForWrite=false;
|
||||
}
|
||||
else
|
||||
{
|
||||
// loop waiting for the write to complete
|
||||
while(pClass->m_bWaitingForWrite && (hr == S_OK))
|
||||
{
|
||||
Sleep(50);
|
||||
}
|
||||
uiComplete+=uiPercentageChunk;
|
||||
if(uiComplete>100) uiComplete=100;
|
||||
pClass->m_bWaitingForWrite = true;
|
||||
if (uiBytesLeft >= uiChunkSize) {
|
||||
eStatus = StorageManager.TMSPP_WriteFile(
|
||||
pClass->m_iPad, C4JStorage::eGlobalStorage_TitleUser,
|
||||
C4JStorage::TMS_FILETYPE_BINARY,
|
||||
C4JStorage::TMS_UGCTYPE_NONE, szFilename, pchData,
|
||||
uiChunkSize, &CScene_TransferToXboxOne::TMSPPWriteReturned,
|
||||
lpParameter, 0);
|
||||
uiBytesLeft -= uiChunkSize;
|
||||
} else {
|
||||
// last bit of the file to upload is less than uiChunkSize
|
||||
eStatus = StorageManager.TMSPP_WriteFile(
|
||||
pClass->m_iPad, C4JStorage::eGlobalStorage_TitleUser,
|
||||
C4JStorage::TMS_FILETYPE_BINARY,
|
||||
C4JStorage::TMS_UGCTYPE_NONE, szFilename, pchData,
|
||||
uiBytesLeft, &CScene_TransferToXboxOne::TMSPPWriteReturned,
|
||||
lpParameter, 0);
|
||||
}
|
||||
|
||||
// update the progress
|
||||
pMinecraft->progressRenderer->progressStagePercentage(uiComplete);
|
||||
}
|
||||
}
|
||||
// wait until
|
||||
if (eStatus != C4JStorage::ETMSStatus_WriteInProgress) {
|
||||
// failed
|
||||
pClass->m_bWaitingForWrite = false;
|
||||
} else {
|
||||
// loop waiting for the write to complete
|
||||
while (pClass->m_bWaitingForWrite && (hr == S_OK)) {
|
||||
Sleep(50);
|
||||
}
|
||||
uiComplete += uiPercentageChunk;
|
||||
if (uiComplete > 100) uiComplete = 100;
|
||||
|
||||
// update the progress
|
||||
pMinecraft->progressRenderer->progressStagePercentage(
|
||||
uiComplete);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
delete pClass->m_pvSaveMem;
|
||||
}
|
||||
return hr;
|
||||
delete pClass->m_pvSaveMem;
|
||||
}
|
||||
return hr;
|
||||
}
|
||||
|
||||
int CScene_TransferToXboxOne::LoadSaveDataReturned(void *pParam,bool bContinue)
|
||||
{
|
||||
CScene_TransferToXboxOne* pClass = (CScene_TransferToXboxOne*)pParam;
|
||||
int CScene_TransferToXboxOne::LoadSaveDataReturned(void* pParam,
|
||||
bool bContinue) {
|
||||
CScene_TransferToXboxOne* pClass = (CScene_TransferToXboxOne*)pParam;
|
||||
|
||||
if(bContinue==true)
|
||||
{
|
||||
unsigned int uiFileSize = StorageManager.GetSaveSize();
|
||||
pClass->m_pvSaveMem = new BYTE [uiFileSize];
|
||||
pClass->m_uiStorageLength=0;
|
||||
if (bContinue == true) {
|
||||
unsigned int uiFileSize = StorageManager.GetSaveSize();
|
||||
pClass->m_pvSaveMem = new BYTE[uiFileSize];
|
||||
pClass->m_uiStorageLength = 0;
|
||||
|
||||
StorageManager.GetSaveData( pClass->m_pvSaveMem, &pClass->m_uiStorageLength );
|
||||
StorageManager.GetSaveData(pClass->m_pvSaveMem,
|
||||
&pClass->m_uiStorageLength);
|
||||
|
||||
pClass->m_bSaveDataReceived=true;
|
||||
}
|
||||
pClass->m_bSaveDataReceived = true;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
HRESULT CScene_TransferToXboxOne::OnKeyDown(XUIMessageInput* pInputData, BOOL& rfHandled)
|
||||
{
|
||||
if(m_bIgnoreInput) return S_OK;
|
||||
HRESULT CScene_TransferToXboxOne::OnKeyDown(XUIMessageInput* pInputData,
|
||||
BOOL& rfHandled) {
|
||||
if (m_bIgnoreInput) return S_OK;
|
||||
|
||||
// if we're retrieving save info, ignore key presses
|
||||
if(m_bRetrievingSaveInfo)
|
||||
{
|
||||
return S_OK;
|
||||
}
|
||||
// if we're retrieving save info, ignore key presses
|
||||
if (m_bRetrievingSaveInfo) {
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
ui.AnimateKeyPress(pInputData->UserIndex, pInputData->dwKeyCode);
|
||||
ui.AnimateKeyPress(pInputData->UserIndex, pInputData->dwKeyCode);
|
||||
|
||||
HRESULT hr = S_OK;
|
||||
HRESULT hr = S_OK;
|
||||
|
||||
// Explicitly handle B button presses
|
||||
switch(pInputData->dwKeyCode)
|
||||
{
|
||||
case VK_PAD_B:
|
||||
case VK_ESCAPE:
|
||||
// Explicitly handle B button presses
|
||||
switch (pInputData->dwKeyCode) {
|
||||
case VK_PAD_B:
|
||||
case VK_ESCAPE:
|
||||
|
||||
app.NavigateBack(XUSER_INDEX_ANY);
|
||||
rfHandled = TRUE;
|
||||
break;
|
||||
case VK_PAD_X:
|
||||
// wipe the save slots
|
||||
if(m_pbSlotListFile!=NULL)
|
||||
{
|
||||
m_SavesSlotListTimer.SetShow(TRUE);
|
||||
m_bIgnoreInput=true;
|
||||
app.NavigateBack(XUSER_INDEX_ANY);
|
||||
rfHandled = TRUE;
|
||||
break;
|
||||
case VK_PAD_X:
|
||||
// wipe the save slots
|
||||
if (m_pbSlotListFile != NULL) {
|
||||
m_SavesSlotListTimer.SetShow(TRUE);
|
||||
m_bIgnoreInput = true;
|
||||
|
||||
C4JStorage::ETMSStatus eStatus=StorageManager.TMSPP_DeleteFile(m_iPad,"XboxOne/SlotList",C4JStorage::TMS_FILETYPE_BINARY,&CScene_TransferToXboxOne::TMSPPDeleteReturned,this, 0);
|
||||
C4JStorage::ETMSStatus eStatus =
|
||||
StorageManager.TMSPP_DeleteFile(
|
||||
m_iPad, "XboxOne/SlotList",
|
||||
C4JStorage::TMS_FILETYPE_BINARY,
|
||||
&CScene_TransferToXboxOne::TMSPPDeleteReturned, this,
|
||||
0);
|
||||
}
|
||||
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
return hr;
|
||||
return hr;
|
||||
}
|
||||
|
||||
HRESULT CScene_TransferToXboxOne::OnNotifySelChanged(HXUIOBJ hObjSource, XUINotifySelChanged *pNotifySelChangedData, BOOL& bHandled)
|
||||
{
|
||||
HRESULT CScene_TransferToXboxOne::OnNotifySelChanged(
|
||||
HXUIOBJ hObjSource, XUINotifySelChanged* pNotifySelChangedData,
|
||||
BOOL& bHandled) {
|
||||
// if(m_bReady)
|
||||
{
|
||||
CXuiSceneBase::PlayUISFX(eSFX_Focus);
|
||||
}
|
||||
|
||||
//if(m_bReady)
|
||||
{
|
||||
CXuiSceneBase::PlayUISFX(eSFX_Focus);
|
||||
}
|
||||
|
||||
return S_OK;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT CScene_TransferToXboxOne::OnTransitionStart(
|
||||
XUIMessageTransition* pTransition, BOOL& bHandled) {
|
||||
// if(pTransition->dwTransAction==XUI_TRANSITION_ACTION_DESTROY ) return
|
||||
// S_OK;
|
||||
|
||||
HRESULT CScene_TransferToXboxOne::OnTransitionStart( XUIMessageTransition *pTransition, BOOL& bHandled )
|
||||
{
|
||||
//if(pTransition->dwTransAction==XUI_TRANSITION_ACTION_DESTROY ) return S_OK;
|
||||
if (pTransition->dwTransAction == XUI_TRANSITION_ACTION_DESTROY ||
|
||||
pTransition->dwTransType == XUI_TRANSITION_FROM ||
|
||||
pTransition->dwTransType == XUI_TRANSITION_BACKFROM) {
|
||||
// 4J Stu - We may have had to unload our font renderer in this scene if
|
||||
// one of the save files uses characters not in our font (eg asian
|
||||
// chars) so restore our font renderer This will not do anything if our
|
||||
// font renderer is already loaded
|
||||
app.OverrideFontRenderer(true, true);
|
||||
}
|
||||
|
||||
if(pTransition->dwTransAction==XUI_TRANSITION_ACTION_DESTROY ||
|
||||
pTransition->dwTransType == XUI_TRANSITION_FROM || pTransition->dwTransType == XUI_TRANSITION_BACKFROM)
|
||||
{
|
||||
// 4J Stu - We may have had to unload our font renderer in this scene if one of the save files
|
||||
// uses characters not in our font (eg asian chars) so restore our font renderer
|
||||
// This will not do anything if our font renderer is already loaded
|
||||
app.OverrideFontRenderer(true,true);
|
||||
}
|
||||
|
||||
return S_OK;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT CScene_TransferToXboxOne::OnFontRendererChange()
|
||||
{
|
||||
// update the tooltips
|
||||
CXuiSceneBase::SetTooltips( DEFAULT_XUI_MENU_USER, IDS_TOOLTIPS_SELECT, IDS_TOOLTIPS_BACK, m_iX, -1,-1,-1,-1,-1,-1,true);
|
||||
|
||||
return S_OK;
|
||||
HRESULT CScene_TransferToXboxOne::OnFontRendererChange() {
|
||||
// update the tooltips
|
||||
CXuiSceneBase::SetTooltips(DEFAULT_XUI_MENU_USER, IDS_TOOLTIPS_SELECT,
|
||||
IDS_TOOLTIPS_BACK, m_iX, -1, -1, -1, -1, -1, -1,
|
||||
true);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT CScene_TransferToXboxOne::OnNotifySetFocus(HXUIOBJ hObjSource, XUINotifyFocus *pNotifyFocusData, BOOL& bHandled)
|
||||
{
|
||||
// update the tooltips
|
||||
CXuiSceneBase::SetTooltips( DEFAULT_XUI_MENU_USER, IDS_TOOLTIPS_SELECT, IDS_TOOLTIPS_BACK, m_iX, -1,-1,-1,-1,-1,-1,true);
|
||||
HRESULT CScene_TransferToXboxOne::OnNotifySetFocus(
|
||||
HXUIOBJ hObjSource, XUINotifyFocus* pNotifyFocusData, BOOL& bHandled) {
|
||||
// update the tooltips
|
||||
CXuiSceneBase::SetTooltips(DEFAULT_XUI_MENU_USER, IDS_TOOLTIPS_SELECT,
|
||||
IDS_TOOLTIPS_BACK, m_iX, -1, -1, -1, -1, -1, -1,
|
||||
true);
|
||||
|
||||
return S_OK;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT CScene_TransferToXboxOne::OnNotifyKillFocus(HXUIOBJ hObjSource, XUINotifyFocus *pNotifyFocusData, BOOL& bHandled)
|
||||
{
|
||||
return S_OK;
|
||||
HRESULT CScene_TransferToXboxOne::OnNotifyKillFocus(
|
||||
HXUIOBJ hObjSource, XUINotifyFocus* pNotifyFocusData, BOOL& bHandled) {
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user