//Render Text (Console) Constructor {{{
RText::RText() {
#ifdef HAVE_SDL
	//Initialize shared mutex
	// (creation is always single-threaded, since no aliases are possible yet)
	_rtextSDLMutex();
#endif

	ndraw = 15;
	WORDWRAP = 85;
	conskip = 0;
//	histpos = 0;
	saycommand("");
}
Пример #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