From 6149abe281b8d98f5de36cf68315bbc943208f08 Mon Sep 17 00:00:00 2001 From: Anders Jenbo Date: Wed, 28 Aug 2019 23:18:53 +0200 Subject: [PATCH] [hellfire] init_archives, init_cleanup --- Source/init.cpp | 68 ++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 62 insertions(+), 6 deletions(-) diff --git a/Source/init.cpp b/Source/init.cpp index c786dce36..2da59d0a4 100644 --- a/Source/init.cpp +++ b/Source/init.cpp @@ -5,7 +5,7 @@ _SNETVERSIONDATA fileinfo; int gbActive; char diablo_exe_path[MAX_PATH]; -HANDLE unused_mpq; +HANDLE hellfire_mpq; char patch_rt_mpq_path[MAX_PATH]; WNDPROC CurrentProc; HANDLE diabdat_mpq; @@ -13,6 +13,23 @@ char diabdat_mpq_path[MAX_PATH]; HANDLE patch_rt_mpq; BOOL killed_mom_parent; BOOLEAN screensaver_enabled_prev; +#ifdef HELLFIRE +char hellfire_mpq_path[MAX_PATH]; +char hfmonk_mpq_path[MAX_PATH]; +char hfbard_mpq_path[MAX_PATH]; +char hfbarb_mpq_path[MAX_PATH]; +char hfmusic_mpq_path[MAX_PATH]; +char hfvoice_mpq_path[MAX_PATH]; +char hfopt1_mpq_path[MAX_PATH]; +char hfopt2_mpq_path[MAX_PATH]; +HANDLE hfmonk_mpq; +HANDLE hfbard_mpq; +HANDLE hfbarb_mpq; +HANDLE hfmusic_mpq; +HANDLE hfvoice_mpq; +HANDLE hfopt1_mpq; +HANDLE hfopt2_mpq; +#endif /* data */ @@ -33,11 +50,40 @@ void init_cleanup(BOOL show_cursor) SFileCloseArchive(patch_rt_mpq); patch_rt_mpq = NULL; } - if (unused_mpq) { - SFileCloseArchive(unused_mpq); - unused_mpq = NULL; + if (hellfire_mpq) { + SFileCloseArchive(hellfire_mpq); + hellfire_mpq = NULL; } - +#ifdef HELLFIRE + if (hfmonk_mpq) { + SFileCloseArchive(hfmonk_mpq); + hfmonk_mpq = NULL; + } + if (hfbard_mpq) { + SFileCloseArchive(hfbard_mpq); + hfbard_mpq = NULL; + } + if (hfbarb_mpq) { + SFileCloseArchive(hfbarb_mpq); + hfbarb_mpq = NULL; + } + if (hfmusic_mpq) { + SFileCloseArchive(hfmusic_mpq); + hfmusic_mpq = NULL; + } + if (hfvoice_mpq) { + SFileCloseArchive(hfvoice_mpq); + hfvoice_mpq = NULL; + } + if (hfopt1_mpq) { + SFileCloseArchive(hfopt1_mpq); + hfopt1_mpq = NULL; + } + if (hfopt2_mpq) { + SFileCloseArchive(hfopt2_mpq); + hfopt2_mpq = NULL; + } +#endif UiDestroy(); effects_cleanup_sfx(); sound_cleanup(); @@ -241,7 +287,7 @@ void init_archives() #endif #endif #ifdef COPYPROT - if (diabdat_mpq) + if (diabdat_mpq != NULL) break; UiCopyProtError(&result); if (result == COPYPROT_CANCEL) @@ -260,6 +306,16 @@ void init_archives() #else patch_rt_mpq = init_test_access(patch_rt_mpq_path, "\\patch_rt.mpq", "DiabloInstall", 2000, FS_PC); #endif +#ifdef HELLFIRE + hellfire_mpq = init_test_access(hellfire_mpq_path, "\\hellfire.mpq", "DiabloInstall", 8000, FS_PC); + hfmonk_mpq = init_test_access(hfmonk_mpq_path, "\\hfmonk.mpq", "DiabloInstall", 8100, FS_PC); + hfbard_mpq = init_test_access(hfbard_mpq_path, "\\hfbard.mpq", "DiabloInstall", 8110, FS_PC); + hfbarb_mpq = init_test_access(hfbarb_mpq_path, "\\hfbarb.mpq", "DiabloInstall", 8120, FS_PC); + hfmusic_mpq = init_test_access(hfmusic_mpq_path, "\\hfmusic.mpq", "DiabloInstall", 8200, FS_PC); + hfvoice_mpq = init_test_access(hfvoice_mpq_path, "\\hfvoice.mpq", "DiabloInstall", 8500, FS_PC); + hfopt1_mpq = init_test_access(hfopt1_mpq_path, "\\hfopt1.mpq", "DiabloInstall", 8600, FS_PC); + hfopt2_mpq = init_test_access(hfopt2_mpq_path, "\\hfopt2.mpq", "DiabloInstall", 8610, FS_PC); +#endif } HANDLE init_test_access(char *mpq_path, char *mpq_name, char *reg_loc, int flags, int fs)