// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include <iostream>
+#include <sstream>
#include <cassert>
#include <cstdio>
#include <cstdlib>
fps_timer.init(true);
frame_timer.init(true);
+ frame_rate.set_fps(100);
context = new DrawingContext();
+ if(flip_levels_mode)
+ flip_level = true;
+
restart_level();
}
{
time_left.start(level->time_left*1000);
Ticks::pause_init();
- update_time = Ticks::get();
+ frame_rate.start();
}
void
int fps_cnt = 0;
- update_time = last_update_time = Ticks::get();
+ frame_rate.start();
// Eat unneeded events
SDL_Event event;
while (exit_status == ES_NONE)
{
/* Calculate the movement-factor */
- double frame_ratio = ((double)(update_time-last_update_time))/((double)FRAME_RATE);
+ double frame_ratio = frame_rate.get();
if(!frame_timer.check())
{
continue;
}
- /* Set the time of the last update and the time of the current update */
- last_update_time = update_time;
- update_time = Ticks::get();
-
- /* Pause till next frame, if the machine running the game is too fast: */
- /* FIXME: Works great for in OpenGl mode, where the CPU doesn't have to do that much. But
- the results in SDL mode aren't perfect (thought the 100 FPS are reached), even on an AMD2500+. */
- if(last_update_time >= update_time - 12)
- {
- SDL_Delay(10);
- update_time = Ticks::get();
- }
+ frame_rate.update();
/* Handle time: */
if (!time_left.check() && currentsector->player->dying == DYING_NOT
std::string slotinfo(int slot)
{
- char tmp[1024];
- char slotfile[1024];
+ std::string tmp;
+ std::string slotfile;
std::string title;
- sprintf(slotfile,"%s/slot%d.stsg",st_save_dir,slot);
+ std::stringstream stream;
+ stream << slot;
+ slotfile = st_save_dir + "/slot" + stream.str() + ".stsg";
- lisp_object_t* savegame = lisp_read_from_file(slotfile);
+ lisp_object_t* savegame = lisp_read_from_file(slotfile.c_str());
if (savegame)
{
LispReader reader(lisp_cdr(savegame));
lisp_free(savegame);
}
- if (access(slotfile, F_OK) == 0)
+ if (access(slotfile.c_str(), F_OK) == 0)
{
if (!title.empty())
- snprintf(tmp,1024,"Slot %d - %s",slot, title.c_str());
+ tmp = "Slot " + stream.str() + " - " + title;
else
- snprintf(tmp, 1024,_("Slot %d - Savegame"),slot);
+ tmp = "Slot " + stream.str() + " - Savegame";
}
else
- sprintf(tmp,_("Slot %d - Free"),slot);
+ tmp = std::string(_("Slot")) + " " + stream.str() + " - " + std::string(_("Free"));
return tmp;
}
if(slot != -1 && load_game_menu->get_item_by_id(slot).kind == MN_ACTION)
{
- char slotfile[1024];
- snprintf(slotfile, 1024, "%s/slot%d.stsg", st_save_dir, slot);
+ std::stringstream stream;
+ stream << slot;
+ std::string slotfile = st_save_dir + "/slot" + stream.str() + ".stsg";
- if (access(slotfile, F_OK) != 0)
+ if (access(slotfile.c_str(), F_OK) != 0)
{
draw_intro();
}