From 26e61b363b3cee9f671d06d120295e65d5828c09 Mon Sep 17 00:00:00 2001 From: obligaron Date: Mon, 9 Aug 2021 20:23:13 +0200 Subject: [PATCH] demo: Centralize options override --- Source/dx.cpp | 3 +-- Source/engine/demomode.cpp | 24 +++++++++++++++--------- Source/engine/demomode.h | 2 +- Source/options.cpp | 9 +++++---- Source/utils/display.cpp | 5 ++--- 5 files changed, 24 insertions(+), 19 deletions(-) diff --git a/Source/dx.cpp b/Source/dx.cpp index 75ca90a5d..ff2b3eff4 100644 --- a/Source/dx.cpp +++ b/Source/dx.cpp @@ -7,7 +7,6 @@ #include -#include "engine/demomode.h" #include "engine.h" #include "options.h" #include "storm/storm.h" @@ -334,7 +333,7 @@ void RenderPresent() } SDL_RenderPresent(renderer); - if (!sgOptions.Graphics.bVSync && !demo::IsTimedemo()) { + if (!sgOptions.Graphics.bVSync) { LimitFrameRate(); } } else { diff --git a/Source/engine/demomode.cpp b/Source/engine/demomode.cpp index ed7ab7f27..c13e7f566 100644 --- a/Source/engine/demomode.cpp +++ b/Source/engine/demomode.cpp @@ -46,6 +46,9 @@ uint32_t DemoModeLastTick = 0; int LogicTick = 0; int StartTime = 0; +int DemoGraphicsWidth = 640; +int DemoGraphicsHeight = 480; + void PumpDemoMessage(DemoMsgType demoMsgType, uint32_t message, int32_t wParam, int32_t lParam, float progressToNextGameTick) { demoMsg msg; @@ -82,12 +85,10 @@ bool LoadDemoMessages(int i) gSaveNumber = std::stoi(number); std::getline(header, number, ','); - uint32_t width = std::stoi(number); - sgOptions.Graphics.nWidth = width; + DemoGraphicsWidth = std::stoi(number); std::getline(header, number, ','); - uint32_t height = std::stoi(number); - sgOptions.Graphics.nHeight = height; + DemoGraphicsHeight = std::stoi(number); while (std::getline(demofile, line)) { std::stringstream command(line); @@ -141,15 +142,20 @@ void InitRecording(int recordNumber) { RecordNumber = recordNumber; } - -bool IsRunning() +void OverrideOptions() { - return DemoNumber != -1; + sgOptions.Graphics.nWidth = DemoGraphicsWidth; + sgOptions.Graphics.nHeight = DemoGraphicsHeight; + sgOptions.Graphics.bFitToScreen = false; + if (Timedemo) { + sgOptions.Graphics.bVSync = false; + sgOptions.Graphics.bFPSLimit = false; + } } -bool IsTimedemo() +bool IsRunning() { - return Timedemo; + return DemoNumber != -1; } bool IsRecording() diff --git a/Source/engine/demomode.h b/Source/engine/demomode.h index ca75066f6..0667016f0 100644 --- a/Source/engine/demomode.h +++ b/Source/engine/demomode.h @@ -13,9 +13,9 @@ namespace demo { void InitPlayBack(int demoNumber, bool timedemo); void InitRecording(int recordNumber); +void OverrideOptions(); bool IsRunning(); -bool IsTimedemo(); bool IsRecording(); bool GetRunGameLoop(bool &drawGame, bool &processInput); diff --git a/Source/options.cpp b/Source/options.cpp index 46de7252f..3aac0e13b 100644 --- a/Source/options.cpp +++ b/Source/options.cpp @@ -225,10 +225,8 @@ void LoadOptions() sgOptions.Audio.nBufferSize = GetIniInt("Audio", "Buffer Size", DEFAULT_AUDIO_BUFFER_SIZE); sgOptions.Audio.nResamplingQuality = GetIniInt("Audio", "Resampling Quality", DEFAULT_AUDIO_RESAMPLING_QUALITY); - if (!demo::IsRunning()) { - sgOptions.Graphics.nWidth = GetIniInt("Graphics", "Width", DEFAULT_WIDTH); - sgOptions.Graphics.nHeight = GetIniInt("Graphics", "Height", DEFAULT_HEIGHT); - } + sgOptions.Graphics.nWidth = GetIniInt("Graphics", "Width", DEFAULT_WIDTH); + sgOptions.Graphics.nHeight = GetIniInt("Graphics", "Height", DEFAULT_HEIGHT); #ifndef __vita__ sgOptions.Graphics.bFullscreen = GetIniBool("Graphics", "Fullscreen", true); #else @@ -355,6 +353,9 @@ void LoadOptions() keymapper.Load(); + if (demo::IsRunning()) + demo::OverrideOptions(); + sbWasOptionsLoaded = true; } diff --git a/Source/utils/display.cpp b/Source/utils/display.cpp index 9b43cf6a6..436d85dd4 100644 --- a/Source/utils/display.cpp +++ b/Source/utils/display.cpp @@ -15,7 +15,6 @@ #include "controls/devices/joystick.h" #include "controls/devices/kbcontroller.h" #include "controls/game_controls.h" -#include "engine/demomode.h" #include "options.h" #include "utils/log.hpp" @@ -173,7 +172,7 @@ bool SpawnWindow(const char *lpWindowName) int width = sgOptions.Graphics.nWidth; int height = sgOptions.Graphics.nHeight; - if (sgOptions.Graphics.bUpscale && sgOptions.Graphics.bFitToScreen && !demo::IsRunning()) { + if (sgOptions.Graphics.bUpscale && sgOptions.Graphics.bFitToScreen) { CalculatePreferdWindowSize(width, height); } AdjustToScreenGeometry(width, height); @@ -221,7 +220,7 @@ bool SpawnWindow(const char *lpWindowName) #ifndef USE_SDL1 Uint32 rendererFlags = SDL_RENDERER_ACCELERATED; - if (sgOptions.Graphics.bVSync && !demo::IsTimedemo()) { + if (sgOptions.Graphics.bVSync) { rendererFlags |= SDL_RENDERER_PRESENTVSYNC; }