//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; }
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(); }