/** * @file init.h * * Interface of routines for initializing the environment, disable screen saver, load MPQ. */ #pragma once #include "utils/attributes.h" #include "utils/stdcompat/optional.hpp" #ifdef UNPACKED_MPQS #include #else #include "mpq/mpq_reader.hpp" #endif #include namespace devilution { extern bool gbActive; extern DVL_API_FOR_TEST bool gbIsSpawn; extern DVL_API_FOR_TEST bool gbIsHellfire; extern DVL_API_FOR_TEST bool gbVanilla; extern bool forceHellfire; #ifdef UNPACKED_MPQS extern DVL_API_FOR_TEST std::optional spawn_data_path; extern DVL_API_FOR_TEST std::optional diabdat_data_path; extern std::optional hellfire_data_path; extern std::optional font_data_path; extern std::optional lang_data_path; #else /** A handle to the spawn.mpq archive. */ extern DVL_API_FOR_TEST std::optional spawn_mpq; /** A handle to the diabdat.mpq archive. */ extern DVL_API_FOR_TEST std::optional diabdat_mpq; /** A handle to an hellfire.mpq archive. */ extern std::optional hellfire_mpq; extern std::optional hfmonk_mpq; extern std::optional hfbard_mpq; extern std::optional hfbarb_mpq; extern std::optional hfmusic_mpq; extern std::optional hfvoice_mpq; extern std::optional font_mpq; extern std::optional lang_mpq; extern std::optional devilutionx_mpq; #endif inline bool HaveSpawn() { #ifdef UNPACKED_MPQS return bool(spawn_data_path); #else return bool(spawn_mpq); #endif } inline bool HaveDiabdat() { #ifdef UNPACKED_MPQS return bool(diabdat_data_path); #else return bool(diabdat_mpq); #endif } inline bool HaveHellfire() { #ifdef UNPACKED_MPQS return bool(hellfire_data_path); #else return bool(hellfire_mpq); #endif } inline bool HaveExtraFonts() { #ifdef UNPACKED_MPQS return bool(font_data_path); #else return bool(font_mpq); #endif } void init_cleanup(); void LoadCoreArchives(); void LoadLanguageArchive(); void LoadGameArchives(); void init_create_window(); void MainWndProc(const SDL_Event &event); } // namespace devilution