mirror of
https://github.com/thepigeongenerator/sdl_template.git
synced 2025-12-17 05:55:47 +01:00
add gametime
This commit is contained in:
@@ -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");
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
31
src/game/gametime.h
Normal 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;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user