/** * Search a textfile file next to this file in the content list. * @param type The type of the textfile to search for. * @return The filename for the textfile, \c NULL otherwise. */ const char *ContentInfo::GetTextfile(TextfileType type) const { if (this->state == INVALID) return NULL; const char *tmp; switch (this->type) { default: NOT_REACHED(); case CONTENT_TYPE_AI: tmp = AI::GetScannerInfo()->FindMainScript(this, true); break; case CONTENT_TYPE_AI_LIBRARY: tmp = AI::GetScannerLibrary()->FindMainScript(this, true); break; case CONTENT_TYPE_GAME: tmp = Game::GetScannerInfo()->FindMainScript(this, true); break; case CONTENT_TYPE_GAME_LIBRARY: tmp = Game::GetScannerLibrary()->FindMainScript(this, true); break; case CONTENT_TYPE_NEWGRF: { const GRFConfig *gc = FindGRFConfig(BSWAP32(this->unique_id), FGCM_EXACT, this->md5sum); tmp = gc != NULL ? gc->filename : NULL; break; } case CONTENT_TYPE_BASE_GRAPHICS: tmp = TryGetBaseSetFile(this, true, BaseGraphics::GetAvailableSets()); break; case CONTENT_TYPE_BASE_SOUNDS: tmp = TryGetBaseSetFile(this, true, BaseSounds::GetAvailableSets()); break; case CONTENT_TYPE_BASE_MUSIC: tmp = TryGetBaseSetFile(this, true, BaseMusic::GetAvailableSets()); break; case CONTENT_TYPE_SCENARIO: case CONTENT_TYPE_HEIGHTMAP: extern const char *FindScenario(const ContentInfo *ci, bool md5sum); tmp = FindScenario(this, true); break; } if (tmp == NULL) return NULL; return ::GetTextfile(type, GetContentInfoSubDir(this->type), tmp); }
ContentTextfileWindow(TextfileType file_type, const ContentInfo *ci) : TextfileWindow(file_type), ci(ci) { const char *textfile = this->ci->GetTextfile(file_type); this->LoadTextfile(textfile, GetContentInfoSubDir(this->ci->type)); }