From 00be994dd52a12a255e581317f25f4905c2f7177 Mon Sep 17 00:00:00 2001 From: JackCarterSmith Date: Sun, 21 Jul 2019 16:40:52 +0200 Subject: [PATCH] Implement options flag and help menu --- src/Texture-Extractor.c | 80 +++++++++++++++++++++++++++++++---------- src/Texture-Extractor.h | 5 +++ 2 files changed, 67 insertions(+), 18 deletions(-) diff --git a/src/Texture-Extractor.c b/src/Texture-Extractor.c index 42b7cb3..603294c 100644 --- a/src/Texture-Extractor.c +++ b/src/Texture-Extractor.c @@ -11,25 +11,57 @@ #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("No input file specified!\nCorrect syntax is:\n HMT-Extractor \n"); + 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[1]); //TODO: Manage multi inputs files + hmt_fdatas = extractDatasFromHMT(argv[(_options >> 8) + 0]); //TODO: Manage multi inputs files if (hmt_fdatas == NULL) return EXIT_FAILURE; - if (exportTextures(hmt_fdatas, argv[1]) == EXIT_FAILURE) 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; 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_); - } + if(hmt_f->texture_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"); +} diff --git a/src/Texture-Extractor.h b/src/Texture-Extractor.h index 439503e..5c3d94f 100644 --- a/src/Texture-Extractor.h +++ b/src/Texture-Extractor.h @@ -14,9 +14,14 @@ #include "RS_images.h" #include "Image_Exporter.h" +#define VERBOSE_ENABLED 0x0001 +#define NO_OUTPUT_DIR 0x0002 + void createSubDir(char *dirName); +int checkArgs(char *args[], int arg_nbr); HMT_FILE *extractDatasFromHMT(char* hmt_filename); int exportTextures(HMT_FILE *hmt_f, char *filename); +void dispHelp(); #endif