add gametime

This commit is contained in:
2025-02-13 22:46:17 +01:00
parent ecdec2ab2a
commit b5c531532e
3 changed files with 38 additions and 7 deletions

View File

@@ -1,18 +1,17 @@
#include "game.h" #include "game.h"
#include "../error.h" #include "gametime.h"
void game_init(game_data* dat) { void game_init(game_data* dat) {
(void)dat; *dat = (game_data){
//error(STATUS_ERROR, "function not defined"); gametime_new(),
};
} }
void game_update(game_data* dat) { void game_update(game_data* dat) {
(void)dat; gametime_update(&dat->time);
//error(STATUS_ERROR, "function not defined");
} }
void game_free(game_data* dat) { void game_free(game_data* dat) {
(void)dat; (void)dat;
error(STATUS_ERROR, "function not defined");
} }

View File

@@ -1,9 +1,10 @@
#pragma once #pragma once
#include <stdint.h> #include <stdint.h>
#include "gametime.h"
typedef struct { typedef struct {
uint8_t tmp; gametime time;
} game_data; } game_data;
void game_init(game_data*); // initializes everything needed to start the game; outputs to game_data void game_init(game_data*); // initializes everything needed to start the game; outputs to game_data

31
src/game/gametime.h Normal file
View File

@@ -0,0 +1,31 @@
#pragma once
#include <time.h>
typedef struct {
struct timespec ts; // stores the time at the current update
float timescale; // multiplier for the time calculation, default value is 1.0
float deltatime; // the time that it took between updates
} gametime;
// initializes the gametime struct
static inline gametime gametime_new(void) {
return (gametime){
{0},
1.0F,
0.0F,
};
}
// updates the internal variables
static inline void gametime_update(gametime* gt) {
struct timespec ts;
timespec_get(&ts, TIME_UTC);
gt->deltatime = ((double)(ts.tv_nsec - gt->ts.tv_nsec) * 1e-9) * gt->timescale;
gt->ts = ts;
}
// gets how many times the
static inline float gametime_get_ups(gametime* gt) {
return 1.0F / gt->deltatime;
}