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);
         }
     }