← index
JavaScript.Projects/source/apps/WebAssembly_Ports/emx/scroller/convert/main.cpp
Source: JavaScript.Projects/source/apps/WebAssembly_Ports/emx/scroller/convert/main.cpp
#define CONVERT_VERSION "0.0.1"
#include<iostream>
#include<string>
#include"../level.hpp"
#include<unistd.h>

int main(int argc, char **argv) {
    
    int opt = 0;
    int mode = 0;
    std::string input, output;
    while((opt = getopt(argc, argv, "i:o:tbh")) != -1) {
        switch(opt) {
            case 'i':
                input = optarg;
                break;
            case 'o':
                output = optarg;
                break;
            case 't':
                mode = 1;
                break;
            case 'b':
                mode = 2;
                break;
            case 'h':
            case 'v':
                mode = 3;
                break;    
        }
    }
    
    if(mode == 0 || mode == 3 || input.length() == 0 || output.length() == 0) {
        std::cout << argv[0] << " v" << CONVERT_VERSION << "\n";
        std::cerr << "to use:\n\n";
        std::cerr << argv[0] << " -i input.lvl-o output.txt-t\n";
        std::cerr << argv[0] << " -i input.txt -o output.lvl -b\n";
        exit(EXIT_FAILURE);
    }
    
    if(mode == 1) {
        game::Level level;
        if(!level.loadLevel(input)) {
            std::cerr << "Error loading level: " << argv[2] << "\n";
            exit(EXIT_FAILURE);
        }
        if(level.saveLevelText(output)) {
            std::cout << "level saved as text: " <<  output << "\n";
        } else {
            std::cerr << "Error level " << output << " could not be saved.\n";
        }
    } else if (mode == 2) {
        game::Level level;
        if(!level.loadLevelText(input)) {
            std::cerr << "Error loading level text..\n";
            exit(EXIT_FAILURE);
        }
        if(level.saveLevel(output)) {
            std::cout << "Level saved as bin: " << output << "\n";
        } else {
            std::cerr << "Error level " << output << " could not be saved.\n";
        }
    }
    return 0;
}