Update of /cvsroot/super-tux/supertux/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13751/src
Modified Files:
title.cpp worldmap.cpp
Log Message:
- FrameRate class is more flexible
- All "game-loops" use the FrameRate class now
Index: title.cpp
===================================================================
RCS file: /cvsroot/super-tux/supertux/src/title.cpp,v
retrieving revision 1.114
retrieving revision 1.115
diff -u -d -r1.114 -r1.115
--- title.cpp 27 Jul 2004 19:31:39 -0000 1.114
+++ title.cpp 29 Jul 2004 11:05:28 -0000 1.115
@@ -42,6 +42,7 @@
#include "high_scores.h"
#include "gui/menu.h"
#include "special/timer.h"
+#include "special/frame_rate.h"
#include "app/setup.h"
#include "level.h"
#include "level_subset.h"
@@ -66,8 +67,6 @@
static Timer random_timer;
static int frame;
-static unsigned int last_update_time;
-static unsigned int update_time;
static GameSession* titlesession;
@@ -288,7 +287,9 @@
/* --- Main title loop: --- */
frame = 0;
- update_time = Ticks::get();
+ FrameRate frame_rate(100);
+ frame_rate.set_frame_limit(false);
+
random_timer.start(rand() % 2000 + 2000);
Menu::set_current(main_menu);
@@ -296,11 +297,11 @@
while (Menu::current())
{
// if we spent to much time on a menu entry
- if( (update_time - last_update_time) > 1000)
- update_time = last_update_time = Ticks::get();
-
+ frame_rate.smooth_hanger();
+
// Calculate the movement-factor
- double frame_ratio = ((double)(update_time-last_update_time))/((double)FRAME_RATE);
+ double frame_ratio = frame_rate.get();
+
if(frame_ratio > 1.5) /* Quick hack to correct the unprecise CPU clocks a little bit. */
frame_ratio = 1.5 + (frame_ratio - 1.5) * 0.85;
/* Lower the frame_ratio that Tux doesn't jump to hectically throught the demo. */
@@ -358,7 +359,7 @@
leveleditor->run();
delete leveleditor;
Menu::set_current(main_menu);
- update_time = Ticks::get();
+ frame_rate.update();
break;
case MNID_CREDITS:
display_text_file("CREDITS", SCROLL_SPEED_CREDITS, white_big_text , white_text, white_small_text, blue_text );
@@ -390,7 +391,7 @@
update_load_save_game_menu(load_game_menu);
Menu::set_current(main_menu);
- update_time = Ticks::get();
+ frame_rate.update();
}
else if (process_load_game_menu())
{
@@ -398,7 +399,7 @@
titlesession->get_current_sector()->activate();
titlesession->set_current();
//titletux.level_begin();
- update_time = Ticks::get();
+ frame_rate.update();
}
}
else if(menu == contrib_menu)
@@ -415,9 +416,7 @@
context.do_drawing();
- /* Set the time of the last update and the time of the current update */
- last_update_time = update_time;
- update_time = Ticks::get();
+ frame_rate.update();
/* Pause: */
frame++;
Index: worldmap.cpp
===================================================================
RCS file: /cvsroot/super-tux/supertux/src/worldmap.cpp,v
retrieving revision 1.112
retrieving revision 1.113
diff -u -d -r1.112 -r1.113
--- worldmap.cpp 28 Jul 2004 20:41:59 -0000 1.112
+++ worldmap.cpp 29 Jul 2004 11:05:28 -0000 1.113
@@ -28,6 +28,7 @@
#include "video/screen.h"
#include "video/drawing_context.h"
#include "utils/lispreader.h"
+#include "special/frame_rate.h"
#include "gameloop.h"
#include "app/setup.h"
#include "sector.h"
@@ -1013,24 +1014,23 @@
song = SoundManager::get()->load_music(datadir + "/music/" + music);
SoundManager::get()->play_music(song);
-
- unsigned int last_update_time;
- unsigned int update_time;
- last_update_time = update_time = Ticks::get();
+ FrameRate frame_rate(10);
+ frame_rate.set_frame_limit(false);
+
+ frame_rate.start();
DrawingContext context;
while(!quit)
{
- float delta = ((float)(update_time-last_update_time))/100.0;
+ float delta = frame_rate.get();
delta *= 1.3f;
if (delta > 10.0f)
delta = .3f;
-
- last_update_time = update_time;
- update_time = Ticks::get();
+
+ frame_rate.update();
Vector tux_pos = tux->get_pos();
if (1)
@@ -1048,7 +1048,7 @@
draw(context, offset);
get_input();
update(delta);
-
+
if(Menu::current())
{
Menu::current()->draw(context);
|