void Hu_DrawMapTitle(float alpha, dd_bool mapIdInsteadOfAuthor) { de::Uri const mapUri = COMMON_GAMESESSION->mapUri(); de::String const title = G_MapTitle(mapUri); de::String const author = G_MapAuthor(mapUri, CPP_BOOL(cfg.common.hideIWADAuthor)); float y = 0; DGL_Enable(DGL_TEXTURE_2D); DGL_Color4f(1, 1, 1, alpha); FR_SetFont(FID(GF_FONTB)); FR_LoadDefaultAttrib(); FR_SetColorAndAlpha(defFontRGB[0], defFontRGB[1], defFontRGB[2], alpha); #if __JDOOM__ || __JDOOM64__ patchid_t patchId = 0; de::Uri const titleImage = G_MapTitleImage(mapUri); if(!titleImage.isEmpty()) { if(!titleImage.scheme().compareWithoutCase("Patches")) { patchId = R_DeclarePatch(titleImage.path().toUtf8().constData()); } } WI_DrawPatch(patchId, Hu_ChoosePatchReplacement(PRM_ALLOW_TEXT, patchId, title), de::Vector2i(), ALIGN_TOP, 0, DTF_ONLY_SHADOW); // Following line of text placed according to patch height. y += Hu_MapTitleFirstLineHeight(); #elif __JHERETIC__ || __JHEXEN__ if(!title.isEmpty()) { FR_DrawTextXY3(title.toUtf8().constData(), 0, 0, ALIGN_TOP, DTF_ONLY_SHADOW); y += 20; } #endif if(mapIdInsteadOfAuthor) { FR_SetFont(FID(GF_FONTA)); #if defined(__JHERETIC__) || defined(__JHEXEN__) FR_SetColorAndAlpha(.85f, .85f, .85f, alpha); #else FR_SetColorAndAlpha(.6f, .6f, .6f, alpha); #endif FR_DrawTextXY3(mapUri.path().toUtf8().constData(), 0, y, ALIGN_TOP, DTF_ONLY_SHADOW); } else if(!author.isEmpty()) { FR_SetFont(FID(GF_FONTA)); FR_SetColorAndAlpha(.5f, .5f, .5f, alpha); FR_DrawTextXY3(author.toUtf8().constData(), 0, y, ALIGN_TOP, DTF_ONLY_SHADOW); } DGL_Disable(DGL_TEXTURE_2D); }
GLuint GL_PrepareFlaremap(de::Uri const &resourceUri) { if(resourceUri.path().length() == 1) { // Select a system flare by numeric identifier? int number = resourceUri.path().toStringRef().first().digitValue(); if(number == 0) return 0; // automatic if(number >= 1 && number <= 4) { return GL_PrepareSysFlaremap(flaretexid_t(number - 1)); } } if(Texture *tex = App_ResourceSystem().texture("Flaremaps", resourceUri)) { if(TextureVariant const *variant = tex->prepareVariant(Rend_HaloTextureSpec())) { return variant->glName(); } // Dang... } return 0; }