comparison gldragon.cpp @ 94:5191f8e571d1

Add manual control mode.
author Matti Hamalainen <ccr@tnsp.org>
date Tue, 25 May 2021 00:58:02 +0300
parents 9fee97e7c5b6
children 59195e95c080
comparison
equal deleted inserted replaced
93:9fee97e7c5b6 94:5191f8e571d1
97 int frameDeltas[SET_FRAMES + 1]; 97 int frameDeltas[SET_FRAMES + 1];
98 98
99 bool 99 bool
100 exitFlag = false, 100 exitFlag = false,
101 pauseFlag = false, 101 pauseFlag = false,
102 manualFlag = false,
102 optShowHelp = false, 103 optShowHelp = false,
103 optSetInputFilename = false, 104 optSetInputFilename = false,
104 optUseShaders = false; 105 optUseShaders = false;
105 106
106 int optWidth = SET_DEF_WIDTH, 107 int optWidth = SET_DEF_WIDTH,
328 case SDL_KEYDOWN: 329 case SDL_KEYDOWN:
329 switch (event.key.keysym.sym) 330 switch (event.key.keysym.sym)
330 { 331 {
331 case SDLK_SPACE: 332 case SDLK_SPACE:
332 case SDLK_p: 333 case SDLK_p:
333 pauseFlag = !pauseFlag; 334 if (manualFlag)
335 pauseFlag = manualFlag = false;
336 else
337 pauseFlag = !pauseFlag;
334 break; 338 break;
335 339
336 case SDLK_ESCAPE: 340 case SDLK_ESCAPE:
337 case SDLK_q: 341 case SDLK_q:
338 exitFlag = true; 342 exitFlag = true;
343 break;
344
345 case SDLK_RIGHT:
346 manualFlag = true;
347 cycleFrames++;
348 break;
349
350 case SDLK_LEFT:
351 manualFlag = true;
352 cycleFrames--;
339 break; 353 break;
340 } 354 }
341 } 355 }
342 356
343 // Render the frame 357 // Render the frame
349 // Check for errors 363 // Check for errors
350 renderer.checkErrors(); 364 renderer.checkErrors();
351 365
352 frameDelta = frameEnd - frameStart; 366 frameDelta = frameEnd - frameStart;
353 367
354 // Return true if a full rotation was done 368 // Handle automatic mode
355 if (!pauseFlag) 369 if (!pauseFlag && !manualFlag)
356 { 370 {
357 totalFrames++; 371 totalFrames++;
358 cycleFrames++; 372 cycleFrames++;
359 373
360 cycleTime += frameDelta; 374 cycleTime += frameDelta;
390 cycleTime = 0; 404 cycleTime = 0;
391 } 405 }
392 } 406 }
393 else 407 else
394 { 408 {
395 SDL_Delay(100); 409 SDL_Delay(manualFlag ? 25 : 100);
396 } 410 }
397 } 411 }
398 412
399 // Show totals 413 // Show totals
400 printf("%d ms total for %d total frames = %.2lf FPS average\n", 414 printf("%d ms total for %d total frames = %.2lf FPS average\n",