/** * ART file packer by Daniel Marschall, ViaThinkSoft (C) 2014-2018 * Supports: * - Blown Away - The Interactive Game by Imagination Pilots * - Panic in the Park - The Interactive Game by Imagination Pilots * - Where's Waldo? At the Circus * - Where's Waldo? Exploring Geography * - Eraser Turnabout by Imagination Pilots * - Virtual K'Nex by Imagination Pilots * Revision: 2018-02-21 **/ #include #include #include #include #include #include #include "ipe_artfile_packer_ipe16_ba.h" #include "ipe_artfile_packer_ipe16_pip.h" #include "ipe_artfile_packer_ipe32.h" #define VERSION "2018-02-21" void print_syntax() { fprintf(stderr, "Syntax: [-v] -t -i -o \n"); fprintf(stderr, " -t : ba (Blown Away)\n"); fprintf(stderr, " pip (Panic in the Park)\n"); fprintf(stderr, " waldo (Where's Waldo? At the Circus)\n"); fprintf(stderr, " waldo2 (Where's Waldo? Exploring Geography)\n"); fprintf(stderr, " eraser (Eraser Turnabout)\n"); fprintf(stderr, " knex (Virtual K'Nex)\n"); fprintf(stderr, " -v : verbose output\n"); } #define GAME_UNKNOWN 0 #define GAME_BA 1 #define GAME_PIP 2 #define GAME_WALDO_CIRCUS 3 #define GAME_WALDO_GEOGRAPHY 4 #define GAME_ERASER 5 #define GAME_KNEX 6 int main(int argc, char *argv[]) { int verbosity = 0; char* szSrcFolder = ""; char* szArtFile = ""; int c; #define PRINT_SYNTAX { print_syntax(); return 0; } int game = GAME_UNKNOWN; while ((c = getopt(argc, argv, "Vvi:o:t:")) != -1) { switch (c) { case 't': if (strcmp(optarg, "ba") == 0) game = GAME_BA; if (strcmp(optarg, "pip") == 0) game = GAME_PIP; if (strcmp(optarg, "waldo") == 0) game = GAME_WALDO_CIRCUS; if (strcmp(optarg, "waldo2") == 0) game = GAME_WALDO_GEOGRAPHY; if (strcmp(optarg, "eraser") == 0) game = GAME_ERASER; if (strcmp(optarg, "knex") == 0) game = GAME_KNEX; break; case 'v': verbosity++; break; case 'V': fprintf(stdout, "IPE artfile packer, revision %s\n", VERSION); return 0; case 'i': szSrcFolder = optarg; break; case 'o': szArtFile = optarg; break; case '?': PRINT_SYNTAX; break; } } if (optind < argc) PRINT_SYNTAX; if (game == GAME_UNKNOWN) { fprintf(stderr, "Please specify the game\n"); PRINT_SYNTAX; } if (strlen(szArtFile) == 0) PRINT_SYNTAX; if (strlen(szSrcFolder) == 0) PRINT_SYNTAX; FILE* fobArt = fopen(szArtFile, "wb"); switch (game) { case GAME_BA: return ba_pack_art(szSrcFolder, fobArt, verbosity) ? 0 : 1; break; case GAME_PIP: case GAME_WALDO_CIRCUS: return pip_pack_art(szSrcFolder, fobArt, verbosity) ? 0 : 1; break; case GAME_WALDO_GEOGRAPHY: case GAME_ERASER: case GAME_KNEX: return ipe32_pack_art(szSrcFolder, fobArt, verbosity) ? 0 : 1; break; } }