From a97502f65048daa592578f40b1be97a1ad276e71 Mon Sep 17 00:00:00 2001 From: Justin Marshall Date: Tue, 28 Jul 2020 09:40:30 -0700 Subject: [PATCH] Zoom level now capped at 7, tiles outside the zoomed area shouldn't render anymore. --- code/redalert/io/userinput.cpp | 2 +- code/redalert/startup.cpp | 4 ++++ code/redalert/tileset.cpp | 12 ++++++++++++ redalert.ini | 4 ++-- 4 files changed, 19 insertions(+), 3 deletions(-) diff --git a/code/redalert/io/userinput.cpp b/code/redalert/io/userinput.cpp index eaafdd9..165db05 100644 --- a/code/redalert/io/userinput.cpp +++ b/code/redalert/io/userinput.cpp @@ -132,7 +132,7 @@ void UserInputClass::Process_Input(KeyNumType& key, int& flags) if (state[SDL_SCANCODE_F6]) { ZoomLevel++; - ZoomLevel = min(ZoomLevel, 6); + ZoomLevel = min(ZoomLevel, 7); break; } diff --git a/code/redalert/startup.cpp b/code/redalert/startup.cpp index e2b9807..debcb89 100644 --- a/code/redalert/startup.cpp +++ b/code/redalert/startup.cpp @@ -933,6 +933,10 @@ void Read_Setup_Options( RawFileClass *config_file ) ScreenWidth = ini.Get_Int("Options", "Width", 1280); ScreenHeight = ini.Get_Int("Options", "Height", 720); ZoomLevel = ini.Get_Int("Options", "ZoomLevel", 0); + if (ZoomLevel > 7) + ZoomLevel = 7; + if (ZoomLevel < 0) + ZoomLevel = 0; /* ** See if an alternative socket number has been specified diff --git a/code/redalert/tileset.cpp b/code/redalert/tileset.cpp index 7abc85e..dd1168b 100644 --- a/code/redalert/tileset.cpp +++ b/code/redalert/tileset.cpp @@ -274,6 +274,18 @@ void __cdecl Buffer_Draw_Stamp_Clip2(GraphicViewPortClass& viewport, const void icon_index = 0; } + int renderTargetScale = ZoomLevel; + if (Debug_Map) { + renderTargetScale = 0; + } + + double scale = ((((float)ScreenWidth / (float)ScreenHeight) * (float)renderTargetScale) * 0.05) + 1; + float xstart_zoom = xstart * scale; + float ystart_zoom = ystart * scale; + + if (xstart_zoom >= ScreenWidth || ystart_zoom >= ScreenHeight) + return; + //GL_SetClipRect(xstart, ystart, blit_width, blit_height); GL_RenderImage(iconImage, xstart, ystart, blit_width, blit_height, 0, icon_index); //GL_ResetClipRect(); diff --git a/redalert.ini b/redalert.ini index 0f2480b..5058990 100644 --- a/redalert.ini +++ b/redalert.ini @@ -7,7 +7,7 @@ VideoBackBuffer=Yes Resolution=400 Width=1280 Height=720 -ZoomLevel=6 +ZoomLevel=7 ShowAllMusic=Yes PlayEnglishIntro=Yes VideoInterlaceMode=2 @@ -23,11 +23,11 @@ UseSmallInfantry=No NoCD=Yes CounterstrikeEnabled=Yes AftermathEnabled=Yes -ScoreVolume=0.5 GameSpeed=2 ScrollRate=5 Brightness=0.5 Volume=0.375 +ScoreVolume=0.5 MultiplayerScoreVolume=0.5 Contrast=0.5 Color=0.5