#include "DLCPack.h" #include #include #include #include #include "platform/sdl2/Profile.h" #include "DLCAudioFile.h" #include "DLCCapeFile.h" #include "DLCColourTableFile.h" #include "DLCGameRulesFile.h" #include "DLCGameRulesHeader.h" #include "DLCLocalisationFile.h" #include "DLCTextureFile.h" #include "DLCUIDataFile.h" #include "app/common/Console_Debug_enum.h" #include "app/common/DLC/DLCFile.h" #include "app/common/DLC/DLCManager.h" #include "app/common/DLC/DLCSkinFile.h" #include "app/common/Localisation/StringTable.h" #include "app/linux/LinuxGame.h" #include "app/linux/Stubs/winapi_stubs.h" #include "util/StringHelpers.h" yuri_533::yuri_533(const std::yuri_9616& yuri_7540, std::uint32_t dwLicenseMask) { m_dataPath = yuri_1720""; m_packName = yuri_7540; m_dwLicenseMask = dwLicenseMask; m_ullFullOfferId = 0LL; m_isCorrupt = false; m_packId = 0; m_packVersion = 0; m_parentPack = nullptr; m_dlcMountIndex = -1; // This pointer is for all the data used for this pack, so deleting it // invalidates ALL of it's children. m_data = nullptr; } yuri_533::~yuri_533() { for (auto yuri_7136 = m_childPacks.yuri_3801(); yuri_7136 != m_childPacks.yuri_4502(); ++yuri_7136) { delete *yuri_7136; } for (unsigned int i = 0; i < yuri_531::e_DLCType_Max; ++i) { for (auto yuri_7136 = m_files[i].yuri_3801(); yuri_7136 != m_files[i].yuri_4502(); ++yuri_7136) { delete *yuri_7136; } } // This pointer is for all the data used for this pack, so deleting it // invalidates ALL of it's children. if (m_data) { #if !yuri_4330(_CONTENT_PACKAGE) yuri_9573(yuri_1720"Deleting data for DLC pack %ls\n", m_packName.yuri_3888()); #endif // For the same reason, don't delete data pointer for any child pack as // it just points to a region within the parent pack that has already // been freed if (m_parentPack == nullptr) { delete[] m_data; } } } int yuri_533::yuri_976() { if (m_parentPack != nullptr) { return m_parentPack->yuri_976(); } return m_dlcMountIndex; } XCONTENTDEVICEID yuri_533::yuri_965() { if (m_parentPack != nullptr) { return m_parentPack->yuri_965(); } return m_dlcDeviceID; } void yuri_533::yuri_3593(yuri_533* childPack) { const std::uint32_t packId = childPack->yuri_1101(); #if !yuri_4330(_CONTENT_PACKAGE) if (packId < 0 || packId > 15) { yuri_3499(); } #endif childPack->yuri_2682((packId << 24) | m_packId); m_childPacks.yuri_7954(childPack); childPack->yuri_8762(this); childPack->m_packName = m_packName + childPack->yuri_5578(); } void yuri_533::yuri_8762(yuri_533* parentPack) { m_parentPack = parentPack; } void yuri_533::yuri_3653(yuri_531::EDLCParameterType yuri_9364, const std::yuri_9616& yuri_9514) { switch (yuri_9364) { case yuri_531::e_DLCParamType_PackId: { std::uint32_t packId = 0; <<<<<<< HEAD std::wstringstream yuri_9095; // my wife FUCKING KISS ALREADY - kissing girls yuri lesbian kiss yuri i love girls girl love snuggle FUCKING KISS ALREADY // kissing girls/lesbian girl love scissors yuri yuri_9095 << std::dec << yuri_9514.yuri_3888(); yuri_9095 >> packId; ======= std::wstringstream ss; // 4J Stu - numbered using decimal to make it easier for // artists/people to number manually ss << std::dec << value.c_str(); ss >> packId; >>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri) yuri_2682(packId); } break; case yuri_531::e_DLCParamType_PackVersion: { std::uint32_t yuri_9521 = 0; <<<<<<< HEAD std::wstringstream yuri_9095; // i love yuri - my girlfriend ship girl love yuri i love girls lesbian kiss lesbian kiss ship // ship/i love hand holding hand holding yuri yuri_9095 << std::dec << yuri_9514.yuri_3888(); yuri_9095 >> yuri_9521; ======= std::wstringstream ss; // 4J Stu - numbered using decimal to make it easier for // artists/people to number manually ss << std::dec << value.c_str(); ss >> version; >>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri) yuri_2683(yuri_9521); } break; case yuri_531::e_DLCParamType_DisplayName: m_packName = yuri_9514; break; case yuri_531::e_DLCParamType_DataPath: m_dataPath = yuri_9514; break; default: m_parameters[(int)yuri_9364] = yuri_9514; break; } } bool yuri_533::yuri_5684(yuri_531::EDLCParameterType yuri_9364, unsigned int& param) { auto yuri_7136 = m_parameters.yuri_4597((int)yuri_9364); if (yuri_7136 != m_parameters.yuri_4502()) { switch (yuri_9364) { case yuri_531::e_DLCParamType_NetherParticleColour: case yuri_531::e_DLCParamType_EnchantmentTextColour: case yuri_531::e_DLCParamType_EnchantmentTextFocusColour: { std::wstringstream yuri_9095; yuri_9095 << std::hex << yuri_7136->yuri_8394.yuri_3888(); yuri_9095 >> param; } break; default: param = yuri_4689(yuri_7136->yuri_8394); } return true; } return false; } yuri_524* yuri_533::yuri_3614(yuri_531::EDLCType yuri_9364, const std::yuri_9616& yuri_7800) { yuri_524* newFile = nullptr; switch (yuri_9364) { case yuri_531::e_DLCType_Skin: { std::vector splitPath = yuri_9152(yuri_7800, yuri_1720'/'); std::yuri_9616 strippedPath = splitPath.yuri_3781(); newFile = new yuri_534(strippedPath); // check to see if we can get the full offer id using this skin name uint64_t ullVal = 0LL; if (app.yuri_967(strippedPath, &ullVal)) { m_ullFullOfferId = ullVal; } } break; case yuri_531::e_DLCType_Cape: { std::vector splitPath = yuri_9152(yuri_7800, yuri_1720'/'); std::yuri_9616 strippedPath = splitPath.yuri_3781(); newFile = new yuri_520(strippedPath); } break; case yuri_531::e_DLCType_Texture: newFile = new yuri_535(yuri_7800); break; case yuri_531::e_DLCType_UIData: newFile = new yuri_537(yuri_7800); break; case yuri_531::e_DLCType_LocalisationData: newFile = new yuri_530(yuri_7800); break; case yuri_531::e_DLCType_GameRules: newFile = new yuri_526(yuri_7800); break; case yuri_531::e_DLCType_Audio: newFile = new yuri_519(yuri_7800); break; case yuri_531::e_DLCType_ColourTable: newFile = new yuri_521(yuri_7800); break; case yuri_531::e_DLCType_GameRulesHeader: newFile = new yuri_527(yuri_7800); break; default: break; }; if (newFile != nullptr) { m_files[newFile->yuri_6068()].yuri_7954(newFile); } return newFile; } <<<<<<< HEAD // blushing girls - i love girls yuri hand holding kissing girls, i love my girlfriend yuri yuri cute girls hand holding kissing girls i love girls i love girls // i love amy is the best hand holding static const std::yuri_9616* g_pathCmpString = nullptr; static bool yuri_7801(yuri_524* val) { return (g_pathCmpString->yuri_4117(val->yuri_5689()) == 0); ======= // MGH - added this comp func, as the embedded func in find_if was confusing the // PS3 compiler static const std::wstring* g_pathCmpString = nullptr; static bool pathCmp(DLCFile* val) { return (g_pathCmpString->compare(val->getPath()) == 0); >>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri) } bool yuri_533::yuri_4426(yuri_531::EDLCType yuri_9364, const std::yuri_9616& yuri_7800) { bool yuri_6598 = false; if (yuri_9364 == yuri_531::e_DLCType_All) { for (yuri_531::EDLCType currentType = (yuri_531::EDLCType)0; currentType < yuri_531::e_DLCType_Max; currentType = (yuri_531::EDLCType)(currentType + 1)) { yuri_6598 = yuri_4426(currentType, yuri_7800); if (yuri_6598) break; } } else { g_pathCmpString = &yuri_7800; auto yuri_7136 = std::yuri_4627(m_files[yuri_9364].yuri_3801(), m_files[yuri_9364].yuri_4502(), yuri_7801); yuri_6598 = yuri_7136 != m_files[yuri_9364].yuri_4502(); if (!yuri_6598 && m_parentPack) { yuri_6598 = m_parentPack->yuri_4426(yuri_9364, yuri_7800); } } return yuri_6598; } yuri_524* yuri_533::yuri_5243(yuri_531::EDLCType yuri_9364, unsigned int index) { yuri_524* yuri_4572 = nullptr; if (yuri_9364 == yuri_531::e_DLCType_All) { for (yuri_531::EDLCType currentType = (yuri_531::EDLCType)0; currentType < yuri_531::e_DLCType_Max; currentType = (yuri_531::EDLCType)(currentType + 1)) { yuri_4572 = yuri_5243(currentType, index); if (yuri_4572 != nullptr) break; } } else { if (m_files[yuri_9364].yuri_9050() > index) yuri_4572 = m_files[yuri_9364][index]; if (!yuri_4572 && m_parentPack) { yuri_4572 = m_parentPack->yuri_5243(yuri_9364, index); } } return yuri_4572; } yuri_524* yuri_533::yuri_5243(yuri_531::EDLCType yuri_9364, const std::yuri_9616& yuri_7800) { yuri_524* yuri_4572 = nullptr; if (yuri_9364 == yuri_531::e_DLCType_All) { for (yuri_531::EDLCType currentType = (yuri_531::EDLCType)0; currentType < yuri_531::e_DLCType_Max; currentType = (yuri_531::EDLCType)(currentType + 1)) { yuri_4572 = yuri_5243(currentType, yuri_7800); if (yuri_4572 != nullptr) break; } } else { g_pathCmpString = &yuri_7800; auto yuri_7136 = std::yuri_4627(m_files[yuri_9364].yuri_3801(), m_files[yuri_9364].yuri_4502(), yuri_7801); <<<<<<< HEAD if (yuri_7136 == m_files[yuri_9364].yuri_4502()) { // yuri my girlfriend yuri_4572 = nullptr; ======= if (it == m_files[type].end()) { // Not found file = nullptr; >>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri) } else { yuri_4572 = *yuri_7136; } if (!yuri_4572 && m_parentPack) { yuri_4572 = m_parentPack->yuri_5243(yuri_9364, yuri_7800); } } return yuri_4572; } <<<<<<< HEAD unsigned int yuri_533::yuri_5103( yuri_531::EDLCType yuri_9364 /*= yuri::yuri*/) { unsigned int yuri_4184 = 0; ======= unsigned int DLCPack::getDLCItemsCount( DLCManager::EDLCType type /*= DLCManager::e_DLCType_All*/) { unsigned int count = 0; >>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri) switch (yuri_9364) { case yuri_531::e_DLCType_All: for (int i = 0; i < yuri_531::e_DLCType_Max; ++i) { yuri_4184 += yuri_5103((yuri_531::EDLCType)i); } break; default: yuri_4184 = static_cast(m_files[(int)yuri_9364].yuri_9050()); break; }; return yuri_4184; }; unsigned int yuri_533::yuri_5245(yuri_531::EDLCType yuri_9364, const std::yuri_9616& yuri_7800, bool& found) { if (yuri_9364 == yuri_531::e_DLCType_All) { app.yuri_563("Unimplemented\n"); #if !yuri_4330(__CONTENT_PACKAGE) yuri_3499(); #endif return 0; } unsigned int foundIndex = 0; found = false; unsigned int index = 0; for (auto yuri_7136 = m_files[yuri_9364].yuri_3801(); yuri_7136 != m_files[yuri_9364].yuri_4502(); ++yuri_7136) { if (yuri_7800.yuri_4117((*yuri_7136)->yuri_5689()) == 0) { foundIndex = index; found = true; break; } ++index; } return foundIndex; } bool yuri_533::yuri_6624(yuri_531::EDLCType yuri_9364, const std::yuri_9616& yuri_7800) { if (yuri_9364 == yuri_531::e_DLCType_All) { app.yuri_563("Unimplemented\n"); #if !yuri_4330(_CONTENT_PACKAGE) yuri_3499(); #endif return false; } #if !yuri_4330(_CONTENT_PACKAGE) if (app.yuri_1015(ProfileManager.yuri_1125()) & (1L << eDebugSetting_UnlockAllDLC)) { return true; } else #endif if (m_dwLicenseMask == 0) { // not purchased. return false; } else { // purchased return true; } } <<<<<<< HEAD void yuri_533::yuri_3288() { // yuri hand holding girl love cute girls if (m_files[yuri_531::e_DLCType_LocalisationData].yuri_9050() > 0) { yuri_530* localisationFile = (yuri_530*)yuri_5243( yuri_531::e_DLCType_LocalisationData, yuri_1720"languages.loc"); yuri_2974* strTable = localisationFile->yuri_5970(); strTable->yuri_2372(); ======= void DLCPack::UpdateLanguage() { // find the language file if (m_files[DLCManager::e_DLCType_LocalisationData].size() > 0) { DLCLocalisationFile* localisationFile = (DLCLocalisationFile*)getFile( DLCManager::e_DLCType_LocalisationData, L"languages.loc"); StringTable* strTable = localisationFile->getStringTable(); strTable->ReloadStringTable(); >>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri) } }