From 791221e923586bb717396ecf18bd13e57034df99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Tue, 27 Jan 2015 22:31:07 +0100 Subject: NOISSUE Refactors and moving of things --- logic/assets/AssetsMigrateTask.cpp | 2 -- logic/assets/AssetsUtils.cpp | 62 ++++++++++++++++++++++++++++++++++++++ logic/assets/AssetsUtils.h | 2 ++ 3 files changed, 64 insertions(+), 2 deletions(-) (limited to 'logic/assets') diff --git a/logic/assets/AssetsMigrateTask.cpp b/logic/assets/AssetsMigrateTask.cpp index 7c1f5204..9ded3cc2 100644 --- a/logic/assets/AssetsMigrateTask.cpp +++ b/logic/assets/AssetsMigrateTask.cpp @@ -5,8 +5,6 @@ #include #include #include -#include "gui/dialogs/CustomMessageBox.h" -#include AssetsMigrateTask::AssetsMigrateTask(int expected, QObject *parent) : Task(parent) diff --git a/logic/assets/AssetsUtils.cpp b/logic/assets/AssetsUtils.cpp index e418d14a..472b9589 100644 --- a/logic/assets/AssetsUtils.cpp +++ b/logic/assets/AssetsUtils.cpp @@ -22,6 +22,7 @@ #include "AssetsUtils.h" #include "MultiMC.h" +#include namespace AssetsUtils { @@ -151,4 +152,65 @@ bool loadAssetsIndexJson(QString path, AssetsIndex *index) return true; } + +QDir reconstructAssets(QString assetsId) +{ + QDir assetsDir = QDir("assets/"); + QDir indexDir = QDir(PathCombine(assetsDir.path(), "indexes")); + QDir objectDir = QDir(PathCombine(assetsDir.path(), "objects")); + QDir virtualDir = QDir(PathCombine(assetsDir.path(), "virtual")); + + QString indexPath = PathCombine(indexDir.path(), assetsId + ".json"); + QFile indexFile(indexPath); + QDir virtualRoot(PathCombine(virtualDir.path(), assetsId)); + + if (!indexFile.exists()) + { + QLOG_ERROR() << "No assets index file" << indexPath << "; can't reconstruct assets"; + return virtualRoot; + } + + QLOG_DEBUG() << "reconstructAssets" << assetsDir.path() << indexDir.path() + << objectDir.path() << virtualDir.path() << virtualRoot.path(); + + AssetsIndex index; + bool loadAssetsIndex = AssetsUtils::loadAssetsIndexJson(indexPath, &index); + + if (loadAssetsIndex && index.isVirtual) + { + QLOG_INFO() << "Reconstructing virtual assets folder at" << virtualRoot.path(); + + for (QString map : index.objects.keys()) + { + AssetObject asset_object = index.objects.value(map); + QString target_path = PathCombine(virtualRoot.path(), map); + QFile target(target_path); + + QString tlk = asset_object.hash.left(2); + + QString original_path = + PathCombine(PathCombine(objectDir.path(), tlk), asset_object.hash); + QFile original(original_path); + if (!original.exists()) + continue; + if (!target.exists()) + { + QFileInfo info(target_path); + QDir target_dir = info.dir(); + // QLOG_DEBUG() << target_dir; + if (!target_dir.exists()) + QDir("").mkpath(target_dir.path()); + + bool couldCopy = original.copy(target_path); + QLOG_DEBUG() << " Copying" << original_path << "to" << target_path + << QString::number(couldCopy); // << original.errorString(); + } + } + + // TODO: Write last used time to virtualRoot/.lastused + } + + return virtualRoot; +} + } diff --git a/logic/assets/AssetsUtils.h b/logic/assets/AssetsUtils.h index 88fa89c4..ea12136d 100644 --- a/logic/assets/AssetsUtils.h +++ b/logic/assets/AssetsUtils.h @@ -34,4 +34,6 @@ namespace AssetsUtils { bool loadAssetsIndexJson(QString file, AssetsIndex* index); int findLegacyAssets(); +/// Reconstruct a virtual assets folder for the given assets ID and return the folder +QDir reconstructAssets(QString assetsId); } -- cgit v1.2.3