Mercurial > hg > forks > gldragon
changeset 97:05677852afd5
Improve manual mode.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Tue, 25 May 2021 02:57:04 +0300 |
parents | 50a69d327b4f |
children | 44e3656f4c83 |
files | gldragon.cpp |
diffstat | 1 files changed, 25 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- 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); } }