#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=nullptr; // 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; 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) { // 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!=nullptr) { 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 = static_cast(selectedId); if(!m_texturePackDescDisplayed) { m_bShowTexturePackDescription = true; } } void IUIScene_StartGame::UpdateTexturePackDescription(int index) { TexturePack *tp = Minecraft::GetInstance()->skins->getTexturePackByIndex(index); if(tp!=nullptr) { m_labelTexturePackName.setLabel(tp->getName()); m_labelTexturePackDescription.setLabel(tp->getDesc1()); DWORD dwImageBytes; PBYTE pbImageData = tp->getPackIcon(dwImageBytes); 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!=nullptr) m_MoreOptionsParams.dwTexturePack = tp->getId(); } int IUIScene_StartGame::TrialTexturePackWarningReturned(void *pParam,int iPad,C4JStorage::EMessageResult result) { IUIScene_StartGame* pScene = static_cast(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 = static_cast(pParam); pScene->m_bIgnoreInput = false; return 0; } int IUIScene_StartGame::TexturePackDialogReturned(void *pParam,int iPad,C4JStorage::EMessageResult result) { IUIScene_StartGame *pClass = static_cast(pParam); pClass->m_bIgnoreInput=false; return 0; }