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