(game_reset_tick): New.
(prod_nat): Use it.
This commit is contained in:
parent
d3e0597f0e
commit
aa34ef2b7b
3 changed files with 28 additions and 11 deletions
|
@ -56,5 +56,6 @@ extern void game_record_update(time_t);
|
||||||
extern struct gamestr *game_tick_tick(void);
|
extern struct gamestr *game_tick_tick(void);
|
||||||
extern int game_tick_to_now(short *);
|
extern int game_tick_to_now(short *);
|
||||||
extern int game_step_a_tick(struct gamestr *, short *);
|
extern int game_step_a_tick(struct gamestr *, short *);
|
||||||
|
extern int game_reset_tick(short *);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -34,10 +34,10 @@
|
||||||
/*
|
/*
|
||||||
* On Empire Time:
|
* On Empire Time:
|
||||||
*
|
*
|
||||||
* A turn is terminated by an update and consists of etu_per_update
|
* An Empire turn is terminated by an update. The Empire clock counts
|
||||||
* ETUs. The Empire clock counts turns and ETUs. When updates move
|
* turns and ETUs, i.e. it ticks etu_per_update times per turn. When
|
||||||
* around in real time (schedule change, downtime, etc.), the Empire
|
* updates move around in real time (schedule change, downtime, etc.),
|
||||||
* clock automatically adapts the length of an ETU in seconds
|
* the Empire clock automatically adapts the duration of an ETU
|
||||||
* accordingly.
|
* accordingly.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -127,11 +127,27 @@ game_tick_to_now(short *tick)
|
||||||
int
|
int
|
||||||
game_step_a_tick(struct gamestr *game, short *tick)
|
game_step_a_tick(struct gamestr *game, short *tick)
|
||||||
{
|
{
|
||||||
int d;
|
int etu;
|
||||||
|
|
||||||
d = game->game_tick - *tick;
|
etu = game->game_tick - *tick;
|
||||||
if (CANT_HAPPEN(d < 0))
|
if (CANT_HAPPEN(etu < 0))
|
||||||
d = 0;
|
etu = 0;
|
||||||
*tick = game->game_tick;
|
*tick = game->game_tick;
|
||||||
return d;
|
return etu;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Reset ETU timestamp *TICK to zero.
|
||||||
|
* Return how many ETUs it had left until etu_per_update.
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
game_reset_tick(short *tick)
|
||||||
|
{
|
||||||
|
int etu;
|
||||||
|
|
||||||
|
etu = etu_per_update - *tick;
|
||||||
|
if (CANT_HAPPEN(etu < 0))
|
||||||
|
etu = 0;
|
||||||
|
*tick = 0;
|
||||||
|
return etu;
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,6 +36,7 @@
|
||||||
|
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include "budg.h"
|
#include "budg.h"
|
||||||
|
#include "game.h"
|
||||||
#include "item.h"
|
#include "item.h"
|
||||||
#include "update.h"
|
#include "update.h"
|
||||||
|
|
||||||
|
@ -133,8 +134,7 @@ prod_nat(int etu)
|
||||||
struct natstr *cnp;
|
struct natstr *cnp;
|
||||||
|
|
||||||
for (n = 0; NULL != (np = getnatp(n)); n++) {
|
for (n = 0; NULL != (np = getnatp(n)); n++) {
|
||||||
grant_btus(np, etu_per_update - np->nat_access);
|
grant_btus(np, game_reset_tick(&np->nat_access));
|
||||||
np->nat_access = 0;
|
|
||||||
if (np->nat_stat < STAT_ACTIVE)
|
if (np->nat_stat < STAT_ACTIVE)
|
||||||
continue;
|
continue;
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue