From fbf57e0c1d541756dd036658f99d0e04b3d8e56d Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sat, 3 Oct 2020 09:07:29 +0200 Subject: [PATCH] - fixed some scaling inconsistencies in the summary screen. The background size wasn't taken into account for the splats and the widescreen check never verified the height of the background image. It will now unconditionally use the new widescreen expansion mode for everything to reduce problems, use the background's display size for positioning overlays and only in the case of 200 pixel tall images perform widescreen positioning adjustment. --- src/wi_stuff.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/wi_stuff.cpp b/src/wi_stuff.cpp index 3fdde8aa5c..fca44fd17e 100644 --- a/src/wi_stuff.cpp +++ b/src/wi_stuff.cpp @@ -210,7 +210,7 @@ private: // //==================================================================== - void drawOnLnode(int n, FGameTexture * c[], int numc) + void drawOnLnode(int n, FGameTexture * c[], int numc, double backwidth, double backheight) { int i; for (i = 0; i= 0 && right < 320 && top >= 0 && bottom < 200) { - DrawTexture(twod, c[i], lnodes[n].x, lnodes[n].y, DTA_320x200, true, TAG_DONE); + DrawTexture(twod, c[i], lnodes[n].x, lnodes[n].y, DTA_FullscreenScale, FSMode_ScaleToFit43, DTA_VirtualWidthF, backwidth, DTA_VirtualHeightF, backheight, TAG_DONE); break; } } @@ -602,8 +602,8 @@ void DInterBackground::drawBackground(int state, bool drawsplat, bool snl_pointe // placing the animations precisely where they belong on the base pic animwidth = background->GetDisplayWidth(); animheight = background->GetDisplayHeight(); - if (gameinfo.fullscreenautoaspect > 0) animwidth = 320; // deal with widescreen replacements that keep the original coordinates. - DrawTexture(twod, background, 0, 0, DTA_Fullscreen, true, TAG_DONE); + if (animheight == 200) animwidth = 320; // deal with widescreen replacements that keep the original coordinates. + DrawTexture(twod, background, 0, 0, DTA_FullscreenEx, FSMode_ScaleToFit43, TAG_DONE); } else { @@ -659,7 +659,7 @@ void DInterBackground::drawBackground(int state, bool drawsplat, bool snl_pointe } if (a->ctr >= 0) DrawTexture(twod, a->frames[a->ctr], a->loc.x, a->loc.y, - DTA_VirtualWidthF, animwidth, DTA_VirtualHeightF, animheight, DTA_FullscreenScale, gameinfo.fullscreenautoaspect, TAG_DONE); + DTA_VirtualWidthF, animwidth, DTA_VirtualHeightF, animheight, DTA_FullscreenScale, FSMode_ScaleToFit43, TAG_DONE); } if (drawsplat) @@ -667,7 +667,7 @@ void DInterBackground::drawBackground(int state, bool drawsplat, bool snl_pointe for (i = 0; iflags & LEVEL_VISITED) drawOnLnode(i, &splat, 1); // draw a splat on taken cities. + if (li && li->flags & LEVEL_VISITED) drawOnLnode(i, &splat, 1, animwidth, animheight); // draw a splat on taken cities. } } @@ -676,7 +676,7 @@ void DInterBackground::drawBackground(int state, bool drawsplat, bool snl_pointe { unsigned int v = MapToIndex(wbs->next); // Draw only if it points to a valid level on the current screen! - if (v