/[enigma]/enigma/src/enigma.cc
ViewVC logotype

Diff of /enigma/src/enigma.cc

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.2 by dheck, Mon Jan 6 12:28:52 2003 UTC revision 1.3 by dheck, Tue Jan 7 00:31:05 2003 UTC
# Line 394  Game::load_level(int ilevel) Line 394  Game::load_level(int ilevel)
394  void  void
395  Game::run (LevelPack *lp, int ilevel)  Game::run (LevelPack *lp, int ilevel)
396  {  {
397        class Avg {
398            enum {N=20};
399            double dtimes[N];
400            int idx;
401        public:
402            Avg() : idx(0) { fill(dtimes, dtimes+N, 0.010); }
403            void add(double dtime) {
404                dtimes[idx++] = dtime;
405                idx = idx % N;
406            }
407            double get() {
408                double s=0;
409                for (int i=0; i<N; s+=dtimes[i++]);
410                return s/N;
411            }
412        };
413        static Avg average_dtime;
414    
415      level_pack = lp;      level_pack = lp;
416    
417      icurrent_level = ilevel;      icurrent_level = ilevel;
# Line 418  Game::run (LevelPack *lp, int ilevel) Line 436  Game::run (LevelPack *lp, int ilevel)
436              ; //SDL_Delay(sleeptime);              ; //SDL_Delay(sleeptime);
437    
438          dtime=(SDL_GetTicks()-last_tick_time)/1000.0;          dtime=(SDL_GetTicks()-last_tick_time)/1000.0;
439    
440            double adtime = average_dtime.get();
441            average_dtime.add(dtime);
442            if (abs(adtime-dtime)/adtime < 0.1) {
443                // less than 10% deviation from average frame time?
444                dtime = adtime;
445            }
446    
447          if (dtime > 500.0) /* Time has done something strange, perhaps          if (dtime > 500.0) /* Time has done something strange, perhaps
448                                run backwards */                                run backwards */
449              dtime = 0.0;              dtime = 0.0;

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.3

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26