# HG changeset patch # User Matti Hamalainen # Date 1621900624 -10800 # Node ID 05677852afd54598b810be72542f3b20bcd2d1d4 # Parent 50a69d327b4fa3aa3f018ad13f2f0ad234be24d7 Improve manual mode. diff -r 50a69d327b4f -r 05677852afd5 gldragon.cpp --- a/gldragon.cpp Tue May 25 02:35:14 2021 +0300 +++ b/gldragon.cpp Tue May 25 02:57:04 2021 +0300 @@ -17,7 +17,7 @@ */ #define SET_DEF_WIDTH 1280 #define SET_DEF_HEIGHT 960 -#define SET_FRAMES (180) +#define SET_FRAMES (360) #define SET_MAX_SHADER_SIZE (128 * 1024) @@ -100,6 +100,7 @@ exitFlag = false, pauseFlag = false, manualFlag = false, + manualChanged = false, optShowHelp = false, optSetInputFilename = false, optUseShaders = false; @@ -344,20 +345,22 @@ break; case SDLK_RIGHT: - manualFlag = true; - cycleFrames++; + manualChanged = manualFlag = true; + if (++cycleFrames >= SET_FRAMES) + cycleFrames = 0; break; case SDLK_LEFT: - manualFlag = true; - cycleFrames--; + manualChanged = manualFlag = true; + if (--cycleFrames < 0) + cycleFrames = SET_FRAMES - 1; break; } } // Render the frame frameStart = SDL_GetTicks(); - renderer.drawScene(scene, fmodf((float) cycleFrames, SET_FRAMES) / SET_FRAMES); + renderer.drawScene(scene, (float) cycleFrames / (float) SET_FRAMES); renderer.swapWindow(); frameEnd = SDL_GetTicks(); @@ -366,9 +369,22 @@ frameDelta = frameEnd - frameStart; - // Handle automatic mode - if (!pauseFlag && !manualFlag) + if (manualFlag) { + // Handle manual control mode + if (manualChanged) + { + printf("%d ms frametime, frame #%d\n", + frameDelta, cycleFrames); + manualChanged = false; + } + + SDL_Delay(25); + } + else + if (!pauseFlag) + { + // Handle automatic mode totalFrames++; cycleFrames++; @@ -407,7 +423,7 @@ } else { - SDL_Delay(manualFlag ? 25 : 100); + SDL_Delay(100); } }