From d1ff2a608971573eff769bf068e0e2122e88e531 Mon Sep 17 00:00:00 2001 From: Ron Koenderink Date: Sun, 1 Feb 2009 06:29:57 -0600 Subject: [PATCH] Factor out gamehours and max minutes per day checks Combine the checks from player_main(), command() and status() into may_play_now(). --- include/prototypes.h | 2 ++ src/lib/player/empdis.c | 21 +++++++++++++++++++++ src/lib/player/player.c | 36 +++--------------------------------- 3 files changed, 26 insertions(+), 33 deletions(-) diff --git a/include/prototypes.h b/include/prototypes.h index 82db0acd..2b8631d7 100644 --- a/include/prototypes.h +++ b/include/prototypes.h @@ -369,6 +369,8 @@ extern int gamedown(void); extern void update_timeused_login(time_t now); extern void update_timeused(time_t now); extern void enforce_minimum_session_time(void); +extern int may_play_now(struct natstr *natp, time_t current_time, + int suppress_deity_message); /* more under Commands */ /* empmod.c */ /* init_nats.c */ diff --git a/src/lib/player/empdis.c b/src/lib/player/empdis.c index 7c509044..d8d3d687 100644 --- a/src/lib/player/empdis.c +++ b/src/lib/player/empdis.c @@ -265,3 +265,24 @@ enforce_minimum_session_time(void) natp->nat_timeused += 15 - dt; putnat(natp); } + +int +may_play_now(struct natstr *natp, time_t now, + int suppress_deity_message) +{ + update_timeused(now); + + if (!gamehours(now)) { + if (natp->nat_stat != STAT_GOD || !suppress_deity_message) + pr("Empire hours restriction in force\n"); + if (natp->nat_stat != STAT_GOD) + return 0; + } + + if ((natp->nat_stat == STAT_ACTIVE || natp->nat_stat == STAT_SANCT) + && natp->nat_timeused > m_m_p_d * 60) { + pr("Max minutes per day limit exceeded.\n"); + return 0; + } + return 1; +} diff --git a/src/lib/player/player.c b/src/lib/player/player.c index c218f355..e593c33e 100644 --- a/src/lib/player/player.c +++ b/src/lib/player/player.c @@ -72,16 +72,8 @@ player_main(struct player *p) return; } natp = getnatp(player->cnum); - if (!gamehours(player->curup)) { - pr("Empire hours restriction in force\n"); - if (natp->nat_stat != STAT_GOD) - return; - } - if ((natp->nat_stat == STAT_ACTIVE || natp->nat_stat == STAT_SANCT) - && natp->nat_timeused > m_m_p_d * 60) { - pr("Max minutes per day limit exceeded.\n"); + if (!may_play_now(natp, player->curup, 0)) return; - } if (natp->nat_stat != STAT_VIS && natp->nat_last_login && (strcmp(natp->nat_hostaddr, player->hostaddr) @@ -128,25 +120,12 @@ command(void) { char *redir; /* UTF-8 */ char scanspace[1024]; - time_t now; - struct natstr *natp; if (getcommand(player->combuf) < 0) return 0; - now = time(NULL); - update_timeused(now); - natp = getnatp(player->cnum); - if (!gamehours(player->curup)) - if (natp->nat_stat != STAT_GOD) { - pr("Empire hours restriction in force\n"); - return 0; - } - if ((natp->nat_stat == STAT_ACTIVE || natp->nat_stat == STAT_SANCT) - && natp->nat_timeused > m_m_p_d * 60) { - pr("Max minutes per day limit exceeded.\n"); + if (!may_play_now(getnatp(player->cnum), time(NULL), 1)) return 0; - } if (parse(player->combuf, scanspace, player->argp, player->comtail, &player->condarg, &redir) < 0) { @@ -192,17 +171,8 @@ status(void) pr("You are no longer broke!\n"); time(&player->curup); - update_timeused(player->curup); - if (!gamehours(player->curup)) { - pr("Empire hours restriction in force\n"); - if (natp->nat_stat != STAT_GOD) - return 0; - } - if ((natp->nat_stat == STAT_ACTIVE || natp->nat_stat == STAT_SANCT) - && natp->nat_timeused > m_m_p_d * 60) { - pr("Max minutes per day limit exceeded.\n"); + if (!may_play_now(natp, player->curup, 0)) return 0; - } if (player->btused) { natp->nat_btu -= player->btused; player->btused = 0;