1
0
mirror of https://github.com/TerryCavanagh/VVVVVV.git synced 2024-06-16 09:38:29 +02:00

Add centiseconds to timer overlays

This adds centiseconds to the in-game timer, as well as the time trial
timer.

This is to aid speedrun moderators in determining when exactly a run was
completed, which they can't easily do if the timer only has a precision
up to a second.
This commit is contained in:
Misa 2021-12-20 17:32:12 -08:00
parent 51fac68d3a
commit 1d6a808cbd
3 changed files with 25 additions and 3 deletions

View File

@ -5822,6 +5822,21 @@ std::string Game::timetstring( int t )
return tempstring;
}
void Game::timestringcenti(char* buffer, const size_t buffer_size)
{
/* 16 chars should be plenty for int32s */
char hours_str[16] = {'\0'};
if (hours > 0)
{
SDL_snprintf(hours_str, sizeof(hours_str), "%i:", hours);
}
SDL_snprintf(
buffer, buffer_size,
"%s%02i:%02i.%02i",
hours_str, minutes, seconds, frames * 100 / 30
);
}
void Game::returnmenu(void)
{
if (menustack.empty())

View File

@ -143,6 +143,8 @@ public:
std::string timetstring(int t);
void timestringcenti(char* buffer, size_t buffer_size);
void returnmenu(void);
void returntomenu(enum Menu::MenuName t);
void createmenu(enum Menu::MenuName t, bool samemenu = false);

View File

@ -1724,8 +1724,10 @@ void gamerender(void)
if (graphics.fademode==0 && !game.intimetrial && !game.isingamecompletescreen() && (!game.swnmode || game.swngame != 1) && game.showingametimer)
{
char buffer[SCREEN_WIDTH_TILES + 1]; /* ASCII only */
graphics.bprint(6, 6, "TIME:", 255,255,255);
graphics.bprint(46, 6, game.timestring(), 196, 196, 196);
game.timestringcenti(buffer, sizeof(buffer));
graphics.bprint(46, 6, buffer, 196, 196, 196);
}
if(map.extrarow==0 || (map.custommode && map.roomname[0] != '\0'))
@ -1932,6 +1934,9 @@ void gamerender(void)
}
else
{
char buffer[SCREEN_WIDTH_TILES + 1]; /* ASCII only */
game.timestringcenti(buffer, sizeof(buffer));
//Draw OSD stuff
graphics.bprint(6, 18, "TIME :", 255,255,255);
graphics.bprint(6, 30, "DEATH:", 255, 255, 255);
@ -1939,11 +1944,11 @@ void gamerender(void)
if(game.timetrialparlost)
{
graphics.bprint(56, 18, game.timestring(), 196, 80, 80);
graphics.bprint(56, 18, buffer, 196, 80, 80);
}
else
{
graphics.bprint(56, 18, game.timestring(), 196, 196, 196);
graphics.bprint(56, 18, buffer, 196, 196, 196);
}
if(game.deathcounts>0)
{