Browse Source

Added check on file version during original patch installation. This prevents overriting original files with their (maybe older) versions stored in original patch backup daatabases

Ivan Arkhipov 4 years ago
parent
commit
f32ae824eb
1 changed files with 9 additions and 1 deletions
  1. 9 1
      src/Legacy/models/patchinstaller.cpp

+ 9 - 1
src/Legacy/models/patchinstaller.cpp

@@ -155,9 +155,17 @@ void PatchInstaller::installOriginalPatch(QString patch_name)
     DatOriginalFilesDatabase orig_db(QApplication::applicationDirPath() + "/data/" + patch_name + "_orig.db");
 
     DatOriginalFilesDatabase::FileOperation operation = [this](int file_id, int dat_id, int version, int iteration, const LOTRO_DAT::SubfileData& data) {
+        int original_file_version = 0;
         if (dat_id == E_CLIENT_LOCAL) {
-            client_local_file_->PatchFile(data, version, iteration);
+            original_file_version = client_local_file_->GetFileVersion(file_id);
         } else if (dat_id == E_CLIENT_GENERAL) {
+            original_file_version = client_general_file_->GetFileVersion(file_id);
+        }
+
+
+        if (original_file_version == _patch_files_versions && dat_id == E_CLIENT_LOCAL) {
+            client_local_file_->PatchFile(data, version, iteration);
+        } else if (original_file_version == _patch_files_versions && dat_id == E_CLIENT_GENERAL) {
             client_general_file_->PatchFile(data, version, iteration);
         }
         current_status.finished_parts++;