Something went wrong. Try again.
the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
Something went wrong. Try again.
11 kB · 379 lines
C++
at main
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379#include "stdafx.h"#include "UI.h"#include "TexturePack.h"#include "TexturePackRepository.h"#include "Minecraft.h"#include "IUIScene_StartGame.h"
IUIScene_StartGame::IUIScene_StartGame(int iPad, UILayer *parentLayer) : UIScene(iPad, parentLayer){ m_bIgnoreInput = false; m_iTexturePacksNotInstalled=0; m_texturePackDescDisplayed = false; m_bShowTexturePackDescription = false; m_iSetTexturePackDescription = -1;
Minecraft *pMinecraft = Minecraft::GetInstance(); m_currentTexturePackIndex = pMinecraft->skins->getTexturePackIndex(0);}
void IUIScene_StartGame::HandleDLCMountingComplete(){ Minecraft *pMinecraft = Minecraft::GetInstance(); // clear out the current texture pack list m_texturePackList.clearSlots();
int texturePacksCount = pMinecraft->skins->getTexturePackCount();
for(unsigned int i = 0; i < texturePacksCount; ++i) { TexturePack *tp = pMinecraft->skins->getTexturePackByIndex(i);
DWORD dwImageBytes; PBYTE pbImageData = tp->getPackIcon(dwImageBytes);
if(dwImageBytes > 0 && pbImageData) { wchar_t imageName[64]; swprintf(imageName,64,L"tpack%08x",tp->getId()); registerSubstitutionTexture(imageName, pbImageData, dwImageBytes); m_texturePackList.addPack(i,imageName); } }
m_iTexturePacksNotInstalled=0;
// 4J-PB - there may be texture packs we don't have, so use the info from TMS for this // REMOVE UNTIL WORKING DLC_INFO *pDLCInfo=NULL;
// first pass - look to see if there are any that are not in the list bool bTexturePackAlreadyListed; bool bNeedToGetTPD=false;
for(unsigned int i = 0; i < app.GetDLCInfoTexturesOffersCount(); ++i) { bTexturePackAlreadyListed=false;#if defined(__PS3__) || defined(__ORBIS__) || defined(__PSVITA__) char *pchName=app.GetDLCInfoTextures(i); pDLCInfo=app.GetDLCInfo(pchName);#elif defined _XBOX_ONE pDLCInfo=app.GetDLCInfoForFullOfferID((WCHAR *)app.GetDLCInfoTexturesFullOffer(i).c_str());#else ULONGLONG ull=app.GetDLCInfoTexturesFullOffer(i); pDLCInfo=app.GetDLCInfoForFullOfferID(ull);#endif for(unsigned int i = 0; i < texturePacksCount; ++i) { TexturePack *tp = pMinecraft->skins->getTexturePackByIndex(i); if(pDLCInfo->iConfig==tp->getDLCParentPackId()) { bTexturePackAlreadyListed=true; } } if(bTexturePackAlreadyListed==false) { // some missing bNeedToGetTPD=true;
m_iTexturePacksNotInstalled++; } }
#if TO_BE_IMPLEMENTED if(bNeedToGetTPD==true) { // add a TMS request for them app.DebugPrintf("+++ Adding TMSPP request for texture pack data\n"); app.AddTMSPPFileTypeRequest(e_DLC_TexturePackData); if(m_iConfigA!=NULL) { delete m_iConfigA; } m_iConfigA= new int [m_iTexturePacksNotInstalled]; m_iTexturePacksNotInstalled=0;
for(unsigned int i = 0; i < app.GetDLCInfoTexturesOffersCount(); ++i) { bTexturePackAlreadyListed=false; ULONGLONG ull=app.GetDLCInfoTexturesFullOffer(i); pDLCInfo=app.GetDLCInfoForFullOfferID(ull); for(unsigned int i = 0; i < texturePacksCount; ++i) { TexturePack *tp = pMinecraft->skins->getTexturePackByIndex(i); if(pDLCInfo->iConfig==tp->getDLCParentPackId()) { bTexturePackAlreadyListed=true; } } if(bTexturePackAlreadyListed==false) { m_iConfigA[m_iTexturePacksNotInstalled++]=pDLCInfo->iConfig; } } }#endif m_currentTexturePackIndex = pMinecraft->skins->getTexturePackIndex(0); UpdateTexturePackDescription(m_currentTexturePackIndex);
m_texturePackList.selectSlot(m_currentTexturePackIndex); m_bIgnoreInput=false; app.m_dlcManager.checkForCorruptDLCAndAlert();}
void IUIScene_StartGame::handleSelectionChanged(F64 selectedId){ m_iSetTexturePackDescription = (int)selectedId;
if(!m_texturePackDescDisplayed) { m_bShowTexturePackDescription = true; }}
void IUIScene_StartGame::UpdateTexturePackDescription(int index){ TexturePack *tp = Minecraft::GetInstance()->skins->getTexturePackByIndex(index);
if(tp==NULL) {#if TO_BE_IMPLEMENTED // this is probably a texture pack icon added from TMS
DWORD dwBytes=0,dwFileBytes=0; PBYTE pbData=NULL,pbFileData=NULL;
CXuiCtrl4JList::LIST_ITEM_INFO ListItem; // get the current index of the list, and then get the data ListItem=m_pTexturePacksList->GetData(index);
app.GetTPD(ListItem.iData,&pbData,&dwBytes);
app.GetFileFromTPD(eTPDFileType_Loc,pbData,dwBytes,&pbFileData,&dwFileBytes ); if(dwFileBytes > 0 && pbFileData) { StringTable *pStringTable = new StringTable(pbFileData, dwFileBytes); m_texturePackTitle.SetText(pStringTable->getString(L"IDS_DISPLAY_NAME")); m_texturePackDescription.SetText(pStringTable->getString(L"IDS_TP_DESCRIPTION")); }
app.GetFileFromTPD(eTPDFileType_Icon,pbData,dwBytes,&pbFileData,&dwFileBytes ); if(dwFileBytes >= 0 && pbFileData) { XuiCreateTextureBrushFromMemory(pbFileData,dwFileBytes,&m_hTexturePackIconBrush); m_texturePackIcon->UseBrush(m_hTexturePackIconBrush); } app.GetFileFromTPD(eTPDFileType_Comparison,pbData,dwBytes,&pbFileData,&dwFileBytes ); if(dwFileBytes >= 0 && pbFileData) { XuiCreateTextureBrushFromMemory(pbFileData,dwFileBytes,&m_hTexturePackComparisonBrush); m_texturePackComparison->UseBrush(m_hTexturePackComparisonBrush); } else { m_texturePackComparison->UseBrush(NULL); }#endif } else { m_labelTexturePackName.setLabel(tp->getName()); m_labelTexturePackDescription.setLabel(tp->getDesc1());
DWORD dwImageBytes; PBYTE pbImageData = tp->getPackIcon(dwImageBytes);
//if(dwImageBytes > 0 && pbImageData) //{ // registerSubstitutionTexture(L"texturePackIcon", pbImageData, dwImageBytes); // m_bitmapTexturePackIcon.setTextureName(L"texturePackIcon"); //}
wchar_t imageName[64]; swprintf(imageName,64,L"tpack%08x",tp->getId()); m_bitmapTexturePackIcon.setTextureName(imageName);
pbImageData = tp->getPackComparison(dwImageBytes);
if(dwImageBytes > 0 && pbImageData) { swprintf(imageName,64,L"texturePackComparison%08x",tp->getId()); registerSubstitutionTexture(imageName, pbImageData, dwImageBytes); m_bitmapComparison.setTextureName(imageName); } else { m_bitmapComparison.setTextureName(L""); } }}
void IUIScene_StartGame::UpdateCurrentTexturePack(int iSlot){ m_currentTexturePackIndex = iSlot; TexturePack *tp = Minecraft::GetInstance()->skins->getTexturePackByIndex(m_currentTexturePackIndex);
// if the texture pack is null, you don't have it yet if(tp==NULL) {#if TO_BE_IMPLEMENTED // Upsell
CXuiCtrl4JList::LIST_ITEM_INFO ListItem; // get the current index of the list, and then get the data ListItem=m_pTexturePacksList->GetData(m_currentTexturePackIndex);
// upsell the texture pack // tell sentient about the upsell of the full version of the skin pack ULONGLONG ullOfferID_Full; app.GetDLCFullOfferIDForPackID(ListItem.iData,&ullOfferID_Full);
TelemetryManager->RecordUpsellPresented(ProfileManager.GetPrimaryPad(), eSet_UpsellID_Texture_DLC, ullOfferID_Full & 0xFFFFFFFF);
UINT uiIDA[3];
uiIDA[0]=IDS_TEXTUREPACK_FULLVERSION; uiIDA[1]=IDS_TEXTURE_PACK_TRIALVERSION; uiIDA[2]=IDS_CONFIRM_CANCEL;
// Give the player a warning about the texture pack missing ui.RequestErrorMessage(IDS_DLC_TEXTUREPACK_NOT_PRESENT_TITLE, IDS_DLC_TEXTUREPACK_NOT_PRESENT, uiIDA, 3, ProfileManager.GetPrimaryPad(),&:TexturePackDialogReturned,this);
// do set the texture pack id, and on the user pressing create world, check they have it m_MoreOptionsParams.dwTexturePack = ListItem.iData; return ;#endif } else { m_MoreOptionsParams.dwTexturePack = tp->getId(); }}
int IUIScene_StartGame::TrialTexturePackWarningReturned(void *pParam,int iPad,C4JStorage::EMessageResult result){ IUIScene_StartGame* pScene = (IUIScene_StartGame*)pParam;
if(result==C4JStorage::EMessage_ResultAccept) { pScene->checkStateAndStartGame(); } else { pScene->m_bIgnoreInput=false; } return 0;}
int IUIScene_StartGame::UnlockTexturePackReturned(void *pParam,int iPad,C4JStorage::EMessageResult result){ IUIScene_StartGame* pScene = (IUIScene_StartGame*)pParam;
if(result==C4JStorage::EMessage_ResultAccept) { if(ProfileManager.IsSignedIn(iPad)) { #if defined _XBOX //|| defined _XBOX_ONE ULONGLONG ullIndexA[1]; DLC_INFO *pDLCInfo = app.GetDLCInfoForTrialOfferID(pScene->m_pDLCPack->getPurchaseOfferId());
if(pDLCInfo!=NULL) { ullIndexA[0]=pDLCInfo->ullOfferID_Full; } else { ullIndexA[0]=pScene->m_pDLCPack->getPurchaseOfferId(); }
StorageManager.InstallOffer(1,ullIndexA,NULL,NULL);#elif defined _XBOX_ONE //StorageManager.InstallOffer(1,StorageManager.GetOffer(iIndex).wszProductID,NULL,NULL);#endif
// the license change coming in when the offer has been installed will cause this scene to refresh } } else {#if defined _XBOX TelemetryManager->RecordUpsellResponded(iPad, eSet_UpsellID_Texture_DLC, ( pScene->m_pDLCPack->getPurchaseOfferId() & 0xFFFFFFFF ), eSen_UpsellOutcome_Declined);#endif }
pScene->m_bIgnoreInput = false;
return 0;}
int IUIScene_StartGame::TexturePackDialogReturned(void *pParam,int iPad,C4JStorage::EMessageResult result){ IUIScene_StartGame *pClass = (IUIScene_StartGame *)pParam;
#ifdef _XBOX // Exit with or without saving // Decline means install full version of the texture pack in this dialog if(result==C4JStorage::EMessage_ResultDecline || result==C4JStorage::EMessage_ResultAccept) { // we need to enable background downloading for the DLC XBackgroundDownloadSetMode(XBACKGROUND_DOWNLOAD_MODE_ALWAYS_ALLOW);
ULONGLONG ullOfferID_Full; ULONGLONG ullIndexA[1]; CXuiCtrl4JList::LIST_ITEM_INFO ListItem; // get the current index of the list, and then get the data ListItem=pClass->m_pTexturePacksList->GetData(pClass->m_currentTexturePackIndex); app.GetDLCFullOfferIDForPackID(ListItem.iData,&ullOfferID_Full);
if( result==C4JStorage::EMessage_ResultAccept ) // Full version { ullIndexA[0]=ullOfferID_Full; StorageManager.InstallOffer(1,ullIndexA,NULL,NULL);
} else // trial version { // if there is no trial version, this is a Cancel DLC_INFO *pDLCInfo=app.GetDLCInfoForFullOfferID(ullOfferID_Full); if(pDLCInfo->ullOfferID_Trial!=0LL) {
ullIndexA[0]=pDLCInfo->ullOfferID_Trial; StorageManager.InstallOffer(1,ullIndexA,NULL,NULL); } } }#elif defined _XBOX_ONE // Get the product id from the texture pack id if(result==C4JStorage::EMessage_ResultAccept) {
if(ProfileManager.IsSignedIn(iPad)) { if (ProfileManager.IsSignedInLive(iPad)) { wstring ProductId; app.GetDLCFullOfferIDForPackID(pClass->m_MoreOptionsParams.dwTexturePack,ProductId);
StorageManager.InstallOffer(1,(WCHAR *)ProductId.c_str(),NULL,NULL);
// the license change coming in when the offer has been installed will cause this scene to refresh } else { // 4J-JEV: Fix for XB1: #165863 - XR-074: Compliance: With no active network connection user is unable to convert from Trial to Full texture pack and is not messaged why. UINT uiIDA[1] = { IDS_CONFIRM_OK }; ui.RequestErrorMessage(IDS_PRO_NOTONLINE_TITLE, IDS_PRO_XBOXLIVE_NOTIFICATION, uiIDA, 1, iPad); } } }
#endif pClass->m_bIgnoreInput=false; return 0;}