Esempio n. 1
0
void item(char *text, char *action) {
  auto &menu = menus.last();
  auto &mi = menu.items.add();
  mi.text = NEWSTRING(text);
  mi.action = action[0] ? NEWSTRING(action) : NEWSTRING(text);
  mi.manual = 0;
}
Esempio n. 2
0
void keypress(int code, bool isdown) {
  if (saycommandon) { // keystrokes go to commandline
    if (isdown) {
      switch (code) {
        case SDLK_RETURN: break;
        case SDLK_BACKSPACE:
        case SDLK_LEFT:
          loopi(cmdbuf[i]) if (!cmdbuf[i+1]) cmdbuf[i] = 0;
          script::resetcomplete();
        break;
        case SDLK_UP:
          if (histpos) strcpy_s(cmdbuf, vhistory[--histpos]);
        break;
        case SDLK_DOWN:
          if (histpos<vhistory.size()) strcpy_s(cmdbuf, vhistory[histpos++]);
        break;
        case SDLK_TAB: script::complete(cmdbuf); break;
        default:
          script::resetcomplete();
        break;
      }
    } else {
      if (code==SDLK_RETURN) {
        if (cmdbuf[0]) {
          if (vhistory.empty() || strcmp(vhistory.back(), cmdbuf.c_str()))
            vhistory.push_back(NEWSTRING(cmdbuf.c_str()));  // cap this?
          histpos = vhistory.size();
          if (cmdbuf[0]=='/') {
            setkeydownflag(true);
            script::execstring(cmdbuf.c_str()+1);
          } else
            client::toserver(cmdbuf.c_str());
        }
        saycommand(NULL);
      } else if (code==SDLK_ESCAPE)
        saycommand(NULL);
    }
  } else if (!menu::key(code, isdown)) { // keystrokes go to menu
Esempio n. 3
0
void newm(const char *name) {
  auto &menu = menus.add();
  menu.name = NEWSTRING(name);
  menu.menusel = 0;
}