void Resources::load_resources(bool home_paks_only) throw (ResourcesException) { try { if (!home_paks_only) { /* scan main directories */ subsystem << "scanning main directories" << std::endl; read_all(resource_directory + dir_separator, 0, true); /* read main paks */ Directory dir(resource_directory, ".pak"); const char *entry = 0; while ((entry = dir.get_entry())) { subsystem << "scanning " << entry << ".pak" << std::endl; try { ZipReader zip(resource_directory + dir_separator + entry + ".pak"); read_all("", &zip, true); loaded_paks.push_back(LoadedPak(zip.get_zip_filename(), zip.get_zip_short_filename(), zip.get_hash(), false)); } catch (const ZipException& e) { subsystem << e.what() << std::endl; } } } /* scan user directories */ subsystem << "scanning user directories" << std::endl; read_all(get_home_directory() + dir_separator + UserDirectory + dir_separator, 0, false); /* read home directory */ std::string hdir = get_home_directory() + dir_separator + UserDirectory; Directory dir(hdir, ".pak"); const char *entry = 0; while ((entry = dir.get_entry())) { subsystem << "scanning " << entry << ".pak" << std::endl; try { ZipReader zip(hdir + dir_separator + entry + ".pak"); read_all("", &zip, false); loaded_paks.push_back(LoadedPak(zip.get_zip_filename(), zip.get_zip_short_filename(), zip.get_hash(), true)); } catch (const ZipException& e) { subsystem << e.what() << std::endl; } } /* prepare all resources for quick accesses */ subsystem.set_scanlines_icon(get_icon("scanlines")); prepare_resources(); } catch (const Exception& e) { destroy_resources(false); throw ResourcesException(e.what()); } }
int main(int argc, char **argv) { t_princ lemip; int ret; if ((ret = init_resources(&lemip)) == EXIT_FAILURE) { fprintf(stderr, "Can't create resources requiered for the battle !\n"); return (EXIT_FAILURE); } if (init_player(&lemip, argv[1], (argc > 1) ? argv[2] : NULL) == EXIT_FAILURE) return (EXIT_FAILURE); if (ret == 2) { exec_map(&lemip); destroy_resources(&lemip); } else (lemip.ia_take == 1) ? ia_intermediate(&lemip) : ia_easy(&lemip); return (EXIT_SUCCESS); }
void Resources::reload_resources() throw (ResourcesException) { destroy_resources(true); load_resources(true); }
Resources::~Resources() { subsystem << "cleaning resources" << std::endl; destroy_resources(false); }