[Add] Hopefully this will prevent dt intervels being too big.
This commit is contained in:
parent
78d0346515
commit
e87f160e23
@ -244,6 +244,11 @@ static void fps_control(void) {
|
||||
|
||||
// Update the game.
|
||||
static void update_space(void) {
|
||||
if(dt > 1./30.) {
|
||||
// Slow timers down and re-run calculations.
|
||||
pause_delay((unsigned int)dt*1000.);
|
||||
return;
|
||||
}
|
||||
weapons_update(dt);
|
||||
spfx_update(dt);
|
||||
pilots_update(dt);
|
||||
|
19
src/pause.c
19
src/pause.c
@ -16,6 +16,7 @@ extern unsigned int gtime;
|
||||
|
||||
static void pilots_pause(void);
|
||||
static void pilots_unpause(void);
|
||||
static void pilots_delay(unsigned int delay);
|
||||
|
||||
// Pause the game.
|
||||
void pause(void) {
|
||||
@ -38,6 +39,13 @@ void unpause(void) {
|
||||
paused = 0;
|
||||
}
|
||||
|
||||
// Set the timers back.
|
||||
void pause_delay(unsigned int delay) {
|
||||
pilots_delay(delay);
|
||||
weapons_delay(delay);
|
||||
spfx_delay(delay);
|
||||
}
|
||||
|
||||
static void pilots_pause(void) {
|
||||
int i, j;
|
||||
unsigned int t = SDL_GetTicks();
|
||||
@ -62,3 +70,14 @@ static void pilots_unpause(void) {
|
||||
}
|
||||
}
|
||||
|
||||
static void pilots_delay(unsigned int delay) {
|
||||
int i, j;
|
||||
for(i = 0; i < pilots; i++) {
|
||||
pilot_stack[i]->ptimer += delay;
|
||||
|
||||
pilot_stack[i]->tcontrol += delay;
|
||||
for(j = 0; j < MAX_AI_TIMERS; j++)
|
||||
pilot_stack[i]->timer[j] += delay;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -5,3 +5,5 @@ extern int paused;
|
||||
void pause(void);
|
||||
void unpause(void);
|
||||
|
||||
void pause_delay(unsigned int delay);
|
||||
|
||||
|
12
src/spfx.c
12
src/spfx.c
@ -44,6 +44,7 @@ static void spfx_destroy(SPFX* layer, int* nlayer, int spfx);
|
||||
static void spfx_update_layer(SPFX* layer, int* nlayer, const double dt);
|
||||
static void spfx_pause_layer(SPFX* layer, int nlayer);
|
||||
static void spfx_unpause_layer(SPFX* layer, int nlayer);
|
||||
static void spfx_delay_layer(SPFX* layer, int nlayer, unsigned int delay);
|
||||
|
||||
// Load the SPFX_Base.
|
||||
static int spfx_base_load(char* name, int anim, char* gfx, int sx, int sy) {
|
||||
@ -228,3 +229,14 @@ static void spfx_unpause_layer(SPFX* layer, int nlayer) {
|
||||
layer[i].t += t;
|
||||
}
|
||||
|
||||
void spfx_delay(unsigned int delay) {
|
||||
spfx_delay_layer(spfx_stack_front, spfx_nstack_front, delay);
|
||||
spfx_delay_layer(spfx_stack_back, spfx_nstack_back, delay);
|
||||
}
|
||||
|
||||
static void spfx_delay_layer(SPFX* layer, int nlayer, unsigned int delay) {
|
||||
int i;
|
||||
for(i = 0; i < nlayer; i++)
|
||||
layer[i].t += delay;
|
||||
}
|
||||
|
||||
|
@ -21,4 +21,5 @@ void spfx_free(void);
|
||||
// Pause/Unpause routines.
|
||||
void spfx_pause(void);
|
||||
void spfx_unpause(void);
|
||||
void spfx_delay(unsigned int delay);
|
||||
|
||||
|
@ -105,6 +105,14 @@ void weapons_unpause(void) {
|
||||
wfrontLayer[i]->timer += t;
|
||||
}
|
||||
|
||||
void weapons_delay(unsigned int delay) {
|
||||
int i;
|
||||
for(i = 0; i < nwbackLayer; i++)
|
||||
wbackLayer[i]->timer += delay;
|
||||
for(i = 0; i < nwfrontLayer; i++)
|
||||
wfrontLayer[i]->timer += delay;
|
||||
}
|
||||
|
||||
static void think_seeker(Weapon* w) {
|
||||
double diff;
|
||||
if(w->target == w->parent) return; // HEY! Self harm is not allowed.
|
||||
|
@ -10,6 +10,7 @@ void weapon_add(const Outfit* outfit, const double dir, const Vec2* pos,
|
||||
// Pausing.
|
||||
void weapons_pause(void);
|
||||
void weapons_unpause(void);
|
||||
void weapons_delay(unsigned int delay);
|
||||
|
||||
// Update.
|
||||
void weapons_update(const double dt);
|
||||
|
Loading…
Reference in New Issue
Block a user