static void on_zip_downloaded(_unused_ void* userdata, void* buffer, int size) { log_info("Done."); mz_zip_archive za; if (!mz_zip_reader_init_mem(&za, buffer, size, 0)) { log_error("Cannot unzip game files: invalid archive"); return; } for (mz_uint i = 0; i < mz_zip_reader_get_num_files(&za); i++) { mz_zip_archive_file_stat file_stat; if (!mz_zip_reader_file_stat(&za, i, &file_stat)) { log_error("Cannot unzip game files"); break; } const char* filename = file_stat.m_filename; int r = mkdir_p(filename); if (r < 0) { log_error("Cannot unzip game files: %s", strerror(-r)); break; } if (!mz_zip_reader_is_file_a_directory(&za, i)) { mz_zip_reader_extract_to_file(&za, i, filename, 0); } } mz_zip_reader_end(&za); engine_load(); }
Engine *prepare_game(char *save_name) { char input; //Read option printf("Load save? [Y/n]: "); scanf("%c", &input); //Process if(toupper(input) == 'Y') { printf("Name of the save file to be loaded: "); scanf("%s", save_name); return engine_load(save_name); } else { printf("Name of the new save file: "); scanf("%s", save_name); int height, width, ups; printf("New engine:\n\t->height: "); scanf("%d", &height); printf("\t->width: "); scanf("%d", &width); printf("\t->ups: "); scanf("%d", &ups); return engine_create(height, width, ups); } }