diff --git a/src/dehacked.c b/src/dehacked.c index 9f819a665..7a89cadcf 100644 --- a/src/dehacked.c +++ b/src/dehacked.c @@ -1650,6 +1650,8 @@ static void readtextpromptpage(MYFILE *f, INT32 num, INT32 pagenum) strncpy(textprompts[num]->page[pagenum].iconname, word2, 8); else if (fastcmp(word, "ICONALIGN")) textprompts[num]->page[pagenum].rightside = (i || word2[0] == 'R'); + else if (fastcmp(word, "ICONFLIP")) + textprompts[num]->page[pagenum].iconflip = (i || word2[0] == 'T' || word2[0] == 'Y'); else if (fastcmp(word, "LINES")) textprompts[num]->page[pagenum].lines = usi; else if (fastcmp(word, "BACKCOLOR")) @@ -1696,6 +1698,7 @@ static void readtextpromptpage(MYFILE *f, INT32 num, INT32 pagenum) strncpy(textprompts[num]->page[pagenum].name, textprompts[num]->page[metapagenum].name, 32); strncpy(textprompts[num]->page[pagenum].iconname, textprompts[num]->page[metapagenum].iconname, 8); textprompts[num]->page[pagenum].rightside = textprompts[num]->page[metapagenum].rightside; + textprompts[num]->page[pagenum].iconflip = textprompts[num]->page[metapagenum].iconflip; textprompts[num]->page[pagenum].lines = textprompts[num]->page[metapagenum].lines; textprompts[num]->page[pagenum].backcolor = textprompts[num]->page[metapagenum].backcolor; textprompts[num]->page[pagenum].align = textprompts[num]->page[metapagenum].align; diff --git a/src/doomstat.h b/src/doomstat.h index 73758a6a6..7bcf59946 100644 --- a/src/doomstat.h +++ b/src/doomstat.h @@ -171,6 +171,7 @@ typedef struct char name[32]; // narrator name char iconname[8]; // narrator icon lump boolean rightside; // narrator side, false = left, true = right + boolean iconflip; // narrator flip icon horizontally UINT8 lines; // # of lines to show. If name is specified, name takes one of the lines. If 0, defaults to 4. UINT8 backcolor; // see CON_SetupBackColormap: 0-10, 11 for default, UINT8_MAX for user-defined (CONS_BACKCOLOR) UINT8 align; // text alignment, 0 = left, 1 = right, 2 = center diff --git a/src/f_finale.c b/src/f_finale.c index 05a77cedd..1fae49e9d 100644 --- a/src/f_finale.c +++ b/src/f_finale.c @@ -2223,18 +2223,21 @@ void F_TextPromptDrawer(void) icony = namey << FRACBITS; } - V_DrawFixedPatch(iconx, icony, scale, V_SNAPTOBOTTOM, patch, NULL); + if (textprompts[cutnum]->page[scenenum].iconflip) + iconx += FixedMul(patch->width, scale) << FRACBITS; + + V_DrawFixedPatch(iconx, icony, scale, (V_SNAPTOBOTTOM|(textprompts[cutnum]->page[scenenum].iconflip ? V_FLIP : 0)), patch, NULL); W_UnlockCachedPatch(patch); } // Draw text // \todo Char-by-char printing, see f_finale.c F_WriteText - V_DrawString(textx, texty, V_SNAPTOBOTTOM, cutscene_disptext); + V_DrawString(textx, texty, (V_SNAPTOBOTTOM|V_ALLOWLOWERCASE), cutscene_disptext); // Draw name // Don't use V_YELLOWMAP here so that the name color can be changed with control codes if (textprompts[cutnum]->page[scenenum].name[0]) - V_DrawString(textx, namey, V_SNAPTOBOTTOM, textprompts[cutnum]->page[scenenum].name); + V_DrawString(textx, namey, (V_SNAPTOBOTTOM|V_ALLOWLOWERCASE), textprompts[cutnum]->page[scenenum].name); // Draw chevron if (promptblockcontrols && !timetonext) // \todo if !CloseTimer