/** * Open the previous article in the list. Loops to the last. * @param game Pointer to actual game. */ void Ufopaedia::prev(Game *game) { ArticleDefinitionList articles = getAvailableArticles(game); if (_current_index == 0) { // goto last _current_index = articles.size() - 1; } else { _current_index--; } game->popState(); game->pushState(createArticleState(game, articles[_current_index], 0)); }
/** * Open the next article in the list. Loops to the first. * @param game Pointer to actual game. */ void Ufopaedia::next(Game *game) { ArticleDefinitionList articles = getAvailableArticles(game); if (_current_index >= articles.size() - 1) { // goto first _current_index = 0; } else { _current_index++; } game->popState(); game->pushState(createArticleState(game, articles[_current_index], 0)); }
/** * Set UPSaved index and open the new state. * @param game Pointer to actual game. * @param article Article definition of the article to open. */ void Ufopaedia::openArticle(Game *game, ArticleDefinition *article) { game->getSavedGame()->getUfopaedia()->setCurrentArticle(article); game->pushState(createArticleState(game, article)); }
/** * Set UPSaved index and open the new state. * @param game Pointer to actual game. * @param article Article definition of the article to open. */ void Ufopaedia::openArticle(Game *game, ArticleDefinition *article) { _current_index = getArticleIndex(game, article->id); game->pushState(createArticleState(game, article)); }