/* ================================================================================ Name : Texture-Extractor.c Author : JackCarterSmith Version : 1.0 License : GPL-v3.0 Description : DAT textures extractor to PNG format with enhanced function in C ================================================================================ */ #include "Texture-Extractor.h" int _options = 0x0000; // Global options settings variable int main(int argc, char *argv[]) { // Init buffer vars HMT_FILE *hmt_fdatas = NULL; // Check if filenames arguments exist if (argc < 2) { printf("\nNo input file/commands specified!\n\nCorrect syntax is:\n$> Texture-Extractor \n"); //TODO: add help function return EXCEPTION_NONCONTINUABLE; //TODO: implement own error codes system } _options = checkArgs(argv, argc); // Analyse program arguments if (_options == -1) return EXIT_SUCCESS; // Do the work hmt_fdatas = extractDatasFromHMT(argv[(_options >> 8) + 0]); //TODO: Manage multi inputs files if (hmt_fdatas == NULL) return EXIT_FAILURE; if (exportTextures(hmt_fdatas, argv[(_options >> 8) + 0]) == EXIT_FAILURE) return EXIT_FAILURE; purgeHMTFromMemory(hmt_fdatas); // Clean up memory (because I'm a good boy) return EXIT_SUCCESS; } int checkArgs(char *args[], int arg_nbr) { int _o = 0x0000; char test[256]; int i; if (arg_nbr > 1) { for (i=1; itexture_count > 0) { createSubDir(filename); for (i=0; itexture_count; i++) { switch (hmt_f->textures_list[i].image.type_) { case 0: case 1: case 3: case 4: case 5: if (saveToPNG(&(hmt_f->textures_list[i].image), hmt_f->textures_list[i].name, filename)) return EXIT_FAILURE; break; default: printf("[INFO] Image type %d not currently supported!\n", hmt_f->textures_list[i].image.type_); } } } return EXIT_SUCCESS; } void dispHelp() { printf("\n"); printf("RogueSquadron Data Extractor - TEXTURE module\n"); printf("\n"); printf("Options:\n -h Print this message\n -v Activate verbose output\n -no-subdir Extract textures directly inside current folder\n"); printf("\n"); printf("Usage: Texture-Extractor_\"version\" [options] \n"); printf("\n"); }