Merge pull request #1957 from DarkLordZach/title-provider
file_sys: Provide generic interface for accessing game data
This commit is contained in:
		@@ -86,7 +86,7 @@ static FileSys::VirtualFile GetManualRomFS() {
 | 
			
		||||
    if (loader.ReadManualRomFS(out) == Loader::ResultStatus::Success)
 | 
			
		||||
        return out;
 | 
			
		||||
 | 
			
		||||
    const auto& installed{FileSystem::GetUnionContents()};
 | 
			
		||||
    const auto& installed{Core::System::GetInstance().GetContentProvider()};
 | 
			
		||||
    const auto res = installed.GetEntry(Core::System::GetInstance().CurrentProcess()->GetTitleID(),
 | 
			
		||||
                                        FileSys::ContentRecordType::Manual);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -33,11 +33,11 @@ static bool CheckAOCTitleIDMatchesBase(u64 title_id, u64 base) {
 | 
			
		||||
 | 
			
		||||
static std::vector<u64> AccumulateAOCTitleIDs() {
 | 
			
		||||
    std::vector<u64> add_on_content;
 | 
			
		||||
    const auto rcu = FileSystem::GetUnionContents();
 | 
			
		||||
    const auto& rcu = Core::System::GetInstance().GetContentProvider();
 | 
			
		||||
    const auto list =
 | 
			
		||||
        rcu.ListEntriesFilter(FileSys::TitleType::AOC, FileSys::ContentRecordType::Data);
 | 
			
		||||
    std::transform(list.begin(), list.end(), std::back_inserter(add_on_content),
 | 
			
		||||
                   [](const FileSys::RegisteredCacheEntry& rce) { return rce.title_id; });
 | 
			
		||||
                   [](const FileSys::ContentProviderEntry& rce) { return rce.title_id; });
 | 
			
		||||
    add_on_content.erase(
 | 
			
		||||
        std::remove_if(
 | 
			
		||||
            add_on_content.begin(), add_on_content.end(),
 | 
			
		||||
 
 | 
			
		||||
@@ -391,11 +391,6 @@ void WriteSaveDataSize(FileSys::SaveDataType type, u64 title_id, u128 user_id,
 | 
			
		||||
        save_data_factory->WriteSaveDataSize(type, title_id, user_id, new_value);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
FileSys::RegisteredCacheUnion GetUnionContents() {
 | 
			
		||||
    return FileSys::RegisteredCacheUnion{
 | 
			
		||||
        {GetSystemNANDContents(), GetUserNANDContents(), GetSDMCContents()}};
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
FileSys::RegisteredCache* GetSystemNANDContents() {
 | 
			
		||||
    LOG_TRACE(Service_FS, "Opening System NAND Contents");
 | 
			
		||||
 | 
			
		||||
@@ -460,6 +455,10 @@ void CreateFactories(FileSys::VfsFilesystem& vfs, bool overwrite) {
 | 
			
		||||
    if (bis_factory == nullptr) {
 | 
			
		||||
        bis_factory =
 | 
			
		||||
            std::make_unique<FileSys::BISFactory>(nand_directory, load_directory, dump_directory);
 | 
			
		||||
        Core::System::GetInstance().RegisterContentProvider(
 | 
			
		||||
            FileSys::ContentProviderUnionSlot::SysNAND, bis_factory->GetSystemNANDContents());
 | 
			
		||||
        Core::System::GetInstance().RegisterContentProvider(
 | 
			
		||||
            FileSys::ContentProviderUnionSlot::UserNAND, bis_factory->GetUserNANDContents());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (save_data_factory == nullptr) {
 | 
			
		||||
@@ -468,6 +467,8 @@ void CreateFactories(FileSys::VfsFilesystem& vfs, bool overwrite) {
 | 
			
		||||
 | 
			
		||||
    if (sdmc_factory == nullptr) {
 | 
			
		||||
        sdmc_factory = std::make_unique<FileSys::SDMCFactory>(std::move(sd_directory));
 | 
			
		||||
        Core::System::GetInstance().RegisterContentProvider(FileSys::ContentProviderUnionSlot::SDMC,
 | 
			
		||||
                                                            sdmc_factory->GetSDMCContents());
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -54,8 +54,6 @@ FileSys::SaveDataSize ReadSaveDataSize(FileSys::SaveDataType type, u64 title_id,
 | 
			
		||||
void WriteSaveDataSize(FileSys::SaveDataType type, u64 title_id, u128 user_id,
 | 
			
		||||
                       FileSys::SaveDataSize new_value);
 | 
			
		||||
 | 
			
		||||
FileSys::RegisteredCacheUnion GetUnionContents();
 | 
			
		||||
 | 
			
		||||
FileSys::RegisteredCache* GetSystemNANDContents();
 | 
			
		||||
FileSys::RegisteredCache* GetUserNANDContents();
 | 
			
		||||
FileSys::RegisteredCache* GetSDMCContents();
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user