//execute a command
int doCmd(char *cs) {
    //buffers for args and arg vector
    //NOTE: this limits the maximum # of arguments
    //      and total length of all arguments
    char args[50];
    char *argv[10];
    unsigned short argc;
    int i;
    //split string into arguments
    argc=make_args(argv,cs,args);
    //search for command
    for(i=0; cmd_tbl[i].name!=NULL; i++) {
        //look for a match
        if(!strcmp(cmd_tbl[i].name,argv[0])) {
            //match found, run command and return
            return cmd_tbl[i].cmd(argv,argc);
        }
    }
    //unknown command, print help message
    printf("unknown command \'%s\'\r\n",argv[0]);
    helpCmd(NULL,0);
    //unknonwn command, return error
    return 1;
}
Exemple #2
0
void Game::run()
{
    Area area;
    Font btnFont(L"laudcn2.ttf", 14);
    
    area.setTimer(300, watch);

    GameBackground *background = new GameBackground();
    area.add(background);
    CheatCommand cheatCmd(&area);
    area.add(new CheatAccel(L"iddqd", &cheatCmd));
    WinCommand winCmd(&area, watch, this);
    FailCommand failCmd(&area, this);
    puzzle->setCommands(&winCmd, &failCmd);
    area.add(puzzle, false);
    area.add(verHints, false);
    area.add(horHints, false);
    
    PauseGameCommand pauseGameCmd(&area, watch, background);
    BUTTON(12, 400, L"pause", &pauseGameCmd)
    ToggleHintCommand toggleHintsCmd(verHints, horHints);
    BUTTON(119, 400, L"switch", &toggleHintsCmd)
    SaveGameCommand saveCmd(&area, watch, background, this);
    BUTTON(12, 440, L"save", &saveCmd)
    GameOptionsCommand optionsCmd(&area);
    BUTTON(119, 440, L"options", &optionsCmd)
    ExitCommand exitGameCmd(area);
    BUTTON(226, 400, L"exit", &exitGameCmd)
    area.add(new KeyAccel(SDLK_ESCAPE, &exitGameCmd));
    HelpCommand helpCmd(&area, watch, background);
    BUTTON(226, 440, L"help", &helpCmd)
    area.add(watch, false);

    watch->start();
    area.run();
}