예제 #1
0
int main(int argc, char *argv[]) 
{
  initscr();
  noecho();
  curs_set(FALSE);
  nodelay(stdscr, true);
  // Global var `stdscr` is created by the call to `initscr()`
  //getmaxyx(stdscr, max_y, max_x);
  initScene();
  while(shutDown == false)
  {
    world.update();
    clear();
    if(checkScreenSize() == false)
    { 
      usleep(DELAY);
      continue;
    }
    handleInput();
    world.calculate();
    world.draw();
    dialog.draw(); 
    refresh();
    usleep(DELAY);
  }
  endwin();
}
예제 #2
0
파일: engine.cpp 프로젝트: Nienhaus/ADWIF
  int Engine::start()
  {
    log("Engine"), "ADWIF revision ", ADWIF_GIT_VERSION, " starting up.";
    log("Engine"), " renderer: ", myRenderer->name();
    log("Engine"), " data archive: ", boost::filesystem::path(dataFile).make_preferred();
    log("Engine"), " data directory: ", boost::filesystem::path(dataDir).make_preferred();
    log("Engine"), " write directory: ", boost::filesystem::path(writeDir).make_preferred();
    log("Engine"), " save directory: ", boost::filesystem::path(saveDir).make_preferred();

    renderer()->clear();
    bool screenCheckLast = false;
    while (myStates.size())
    {
      bool screenCheck = checkScreenSize();
      if (screenCheck)
      {
        if (myStates.back()->done())
        {
          myStates.back()->exit();
          myStates.pop_back();
          if (!myStates.empty())
            myStates.back()->activate();
          else
            break;
        }
        else
        {
          int ch = myInput->key();
          if (ch != -1)
            myStates.back()->consume(ch);
          // superfluous checks for this condition,
          // reportError() could be called at any point
          if (!myRunningFlag) break;
          if (screenCheckLast == false)
          {
            myStates.back()->resize();
            if (!myRunningFlag) break;
            myStates.back()->activate();
          }
          if (!myRunningFlag) break;
          myStates.back()->step();
          renderer()->refresh();
          sleep(delay());
        }
      }
      else
      {
        static const std::string message = "A minimum terminal size of 80x24 is required to play this game";
        renderer()->clear();
        renderer()->style(White, Black, Style::Bold);
        renderer()->drawText(1, 1, message);
        renderer()->refresh();
        sleep(1);
      }
      screenCheckLast = screenCheck;
    }
    return 0;
  }