From ee19774618fd9fb3a2cdc2c480c7f57abe7e6cc1 Mon Sep 17 00:00:00 2001 From: VitorMM Date: Wed, 5 Feb 2025 20:23:28 -0300 Subject: [PATCH] Mission information header shouldn't bug other HUD elements --- ...nKingdomHeartsReCoded_GPU_OpenGL_shaders.h | 73 ++++++++----------- 1 file changed, 31 insertions(+), 42 deletions(-) diff --git a/src/plugins/PluginKingdomHeartsReCoded_GPU_OpenGL_shaders.h b/src/plugins/PluginKingdomHeartsReCoded_GPU_OpenGL_shaders.h index caa011f460..47124646e6 100644 --- a/src/plugins/PluginKingdomHeartsReCoded_GPU_OpenGL_shaders.h +++ b/src/plugins/PluginKingdomHeartsReCoded_GPU_OpenGL_shaders.h @@ -113,17 +113,12 @@ bool is2DGraphicEqualToColor(ivec4 diffColor, ivec2 texcoord) return (pixel.r == diffColor.r && pixel.g == diffColor.g && pixel.b == diffColor.b); } -bool isMissionInformationVisibleOnTopScreen() +bool isMissionInformationVisible() { return is2DGraphicDifferentFromColor(ivec4(63,0,0,31), ivec2(256/2, 0)) || is2DGraphicDifferentFromColor(ivec4(63,0,0,31), ivec2(256/2, 10)); } -bool isMissionInformationVisible() -{ - return isMissionInformationVisibleOnTopScreen(); -} - bool isDialogVisible() { return is2DGraphicDifferentFromColor(ivec4(0,0,0,31), ivec2(256/2, 192*0.809)); @@ -347,31 +342,6 @@ vec2 getVerticalDualScreenTextureCoordinates(float xpos, float ypos, vec2 clearV return clearVect; } -vec2 getMissionInformationCoordinates(vec2 texPosition3d) -{ - float heightScale = 1.0/TopScreenAspectRatio; - float widthScale = TopScreenAspectRatio; - vec2 fixStretch = vec2(widthScale, 1.0); - - // mission information - float sourceMissionInfoHeight = 40.0; - float sourceMissionInfoWidth = 256.0; - float missionInfoHeight = sourceMissionInfoHeight; - float missionInfoWidth = sourceMissionInfoWidth*heightScale; - float missionInfoY1 = 0; - float missionInfoY2 = missionInfoHeight; - float missionInfoDetailsLeftMargin = -5.4*heightScale; - - if (texPosition3d.x >= 0 && - texPosition3d.x < missionInfoWidth && - texPosition3d.y >= 0 && - texPosition3d.y < missionInfoY2) { - return fixStretch*(texPosition3d); - } - - return vec2(-1, -1); -} - vec2 getIngameHudTextureCoordinates(float xpos, float ypos) { bool _isHealthVisible = isHealthVisible(); @@ -390,16 +360,23 @@ vec2 getIngameHudTextureCoordinates(float xpos, float ypos) float heightScale = 1.0/TopScreenAspectRatio; float widthScale = TopScreenAspectRatio; vec2 fixStretch = vec2(widthScale, 1.0); - - if (isMissionInformationVisible()) { - vec2 missionInfoCoords = getMissionInformationCoordinates(texPosition3d); - if (missionInfoCoords.x != -1 && missionInfoCoords.y != -1) { - return missionInfoCoords; - } - - if (texPosition3d.y <= (192*iuTexScale)/3) { - // nothing (clear screen) - return vec2(-1, -1); + bool _isMissionInformationVisible = isMissionInformationVisible(); + + if (_isMissionInformationVisible) { + // mission information + float sourceMissionInfoHeight = 40.0; + float sourceMissionInfoWidth = 256.0; + float missionInfoHeight = sourceMissionInfoHeight; + float missionInfoWidth = sourceMissionInfoWidth*heightScale; + float missionInfoY1 = 0; + float missionInfoY2 = missionInfoHeight; + float missionInfoDetailsLeftMargin = -5.4*heightScale; + + if (texPosition3d.x >= 0 && + texPosition3d.x < missionInfoWidth && + texPosition3d.y >= 0 && + texPosition3d.y < missionInfoY2) { + return fixStretch*(texPosition3d); } } @@ -595,6 +572,18 @@ vec2 getIngameHudTextureCoordinates(float xpos, float ypos) } } + if (_isMissionInformationVisible) { + // mission information + float sourceMissionInfoHeight = 40.0; + float missionInfoHeight = sourceMissionInfoHeight; + float missionInfoY2 = missionInfoHeight; + + if (texPosition3d.y < missionInfoY2) { + // nothing (clear screen) + return vec2(-1, -1); + } + } + // overclock notification float sourceOverclockNotificationHeight = 27.0; float sourceOverclockNotificationWidth = 95.0; @@ -955,7 +944,7 @@ ivec4 getTopScreenColor(float xpos, float ypos, int index) return color; } - if (!isDialogVisible() && !isMissionInformationVisible()) + if (!isDialogVisible()) { int iuScale = KHUIScale; float iuTexScale = (6.0)/iuScale;