New command show updates:

(show): New sub-command.
(player_coms): Update its c_form.
(show_updates, fmttime2822): New.

(vers): Show game_days and game_hours.

(upda): Mark obsolete and point to show updates.
(vers): Point to show rather than update.

Rewrite much of info zdone.
This commit is contained in:
Markus Armbruster 2007-07-15 13:34:22 +00:00
parent 87eeea32c9
commit a57645340c
12 changed files with 111 additions and 26 deletions

View file

@ -655,6 +655,7 @@ extern void show_sect_stats(int);
extern void show_sect_capab(int); extern void show_sect_capab(int);
extern void show_item(int); extern void show_item(int);
extern void show_news(int); extern void show_news(int);
extern void show_updates(int);
/* shpsub.c */ /* shpsub.c */
extern void shp_sel(struct nstr_item *, struct emp_qelem *); extern void shp_sel(struct nstr_item *, struct emp_qelem *);
extern void shp_nav(struct emp_qelem *, double *, double *, int *, natid); extern void shp_nav(struct emp_qelem *, double *, double *, int *, natid);

View file

@ -2,8 +2,8 @@
.NA disable "Disable Updates" .NA disable "Disable Updates"
.LV Expert .LV Expert
.SY "disable" .SY "disable"
No updates will fire if you disable them. "UPDATES ARE DISABLED" will No updates will fire if you disable them. The \*Qshow updates\*U
show up in the output of the "update" command. command will report the fact.
.s1 .s1
Disabling updates this way does not stop the Empire clock. Stuff Disabling updates this way does not stop the Empire clock. Stuff
using the clock, like BTU growth, continues normally. Should a using the clock, like BTU growth, continues normally. Should a
@ -13,6 +13,6 @@ between updates. This effectively stops the clock.
.s1 .s1
You should not use this command as a tool for implementing your update You should not use this command as a tool for implementing your update
schedule! Enabling and disabling updates by hand is far too error schedule! Enabling and disabling updates by hand is far too error
prone, and your players can't trust the update command to find out prone, and your players can't trust the show command to find out
when the next update really is. Use the update schedule file instead. when the next update really is. Use the update schedule file instead.
.SA "update, disable, Time, Deity" .SA "disable, show, Time, Deity"

View file

@ -3,4 +3,4 @@
.LV Expert .LV Expert
.SY "enable" .SY "enable"
If updates have been disabled, then this will enable them again. If updates have been disabled, then this will enable them again.
.SA "update, enable, force, Deity" .SA "disable, show, force, Deity"

View file

@ -3,11 +3,12 @@
.LV Basic .LV Basic
.SY "show <land|nuke|plane|sector|ship> [b|s|c] [tech]" .SY "show <land|nuke|plane|sector|ship> [b|s|c] [tech]"
.SY "show <bridge|item|news|tower>" .SY "show <bridge|item|news|tower>"
.SY "show <updates> [number]"
The show command shows characteristics of sectors, units (ships, The show command shows characteristics of sectors, units (ships,
planes, land units and nukes), bridges (spans and towers), items and planes, land units and nukes), bridges (spans and towers), items and
news. news, as well as information on updates.
.s1 .s1
The format of each output is more fully described in separate info Characteristics are more fully described in separate info
pages (Ship-types, Nuke-types, etc.). pages (Ship-types, Nuke-types, etc.).
.s1 .s1
For sectors and units, a For sectors and units, a
@ -35,4 +36,4 @@ Printing for tech level '325'
75kt fusion 3 90 3 320 106 $ 20000 75kt fusion 3 90 3 320 106 $ 20000
.FI .FI
.s1 .s1
.SA "Ship-types, Nuke-types, Plane-types, Unit-types, Sector-types, Ships, Planes, LandUnits, Nukes, Bridges, Item-types, newspaper" .SA "Ship-types, Nuke-types, Plane-types, Unit-types, Sector-types, Ships, Planes, LandUnits, Nukes, Bridges, Item-types, newspaper, Updates"

View file

@ -5,4 +5,4 @@
The update command shows you when the next update will occur, and The update command shows you when the next update will occur, and
describes the current update policies. describes the current update policies.
.sp .sp
.SA "zdone, Updates" .SA "show, zdone, Obsolete"

View file

@ -19,8 +19,7 @@ World size is 64 by 32.
There can be up to 99 countries. There can be up to 99 countries.
By default, countries use their own coordinate system. By default, countries use their own coordinate system.
An Empire time unit is 10 seconds long. Use the 'show' command to find out the time of the next update.
Use the 'update' command to find out the time of the next update.
The current time is Tue Jul 10 23:09:03. The current time is Tue Jul 10 23:09:03.
An update consists of 60 empire time units. An update consists of 60 empire time units.
Each country is allowed to be logged in 1440 minutes a day. Each country is allowed to be logged in 1440 minutes a day.

View file

@ -11,20 +11,25 @@ for an update.
.s1 .s1
"check" checks to see what your zdone state is. "check" checks to see what your zdone state is.
.s1 .s1
The command will also show you how many countries want The command will also show you how many countries want an update. The
an update. There are 3 possible update policies which could number of ready countries required for a demand update to happen is
be set in this game. The update policy is shown in the update command. configurable, and may be seen in the \*Qshow updates\*U command.
.s1 .s1
Your zdone state is cleared when an update occurs. There are three possible update policies which could be set in this
game:
.s1 .s1
1. No demand updates. If so, then this command is useless. 1. No demand updates. If so, then this command is useless.
.s1 .s1
2. Updates occur upon demand, right after the last person sets 2. Demand updates occur right after the last required country sets
zdone. The threshold at which a demand update occurs is configurable, zdone.
and may be seen in the update command.
.s1 .s1
3. Demand updates occur at specific times. If enough countries 3. Demand updates occur according to the update schedule. If enough
have set zdone at one of those times, then an update will occur. countries have set zdone by the scheduled time, then an update will
The times may be seen in the update command. occur. The update schedule may be seen in the \*Qshow updates\*U
command.
.s1
Your zdone state is cleared when an update occurs.
.s1
The \*Qshow updates\*U command shows update policy and schedule.
.sp .sp
.SA "update, Playing" .SA "show, Updates"

View file

@ -51,7 +51,7 @@ show(void)
int rlev; int rlev;
if (!(p = getstarg(player->argp[1], if (!(p = getstarg(player->argp[1],
"Describe what (plane, nuke, bridge, ship, sect, land unit, tower, item)? ", "Show what (bridge, item, land, nuke, plane, sect, ship, tower, updates)?",
buf)) buf))
|| !*p) || !*p)
return RET_SYN; return RET_SYN;
@ -113,9 +113,13 @@ show(void)
cfunc = show_ship_capab; cfunc = show_ship_capab;
} }
break; break;
case 'u':
show_updates(player->argp[2] ? atoi(player->argp[2]) : 8);
return RET_OK;
default: default:
return RET_SYN; return RET_SYN;
} }
if (!(p = getstarg(player->argp[2], if (!(p = getstarg(player->argp[2],
"Build, stats, or capability data (b,s,c)? ", buf)) "Build, stats, or capability data (b,s,c)? ", buf))
|| !*p) || !*p)

View file

@ -95,5 +95,7 @@ upda(void)
if (*game_hours != 0) if (*game_hours != 0)
pr("Game hours are: %s\n", game_hours); pr("Game hours are: %s\n", game_hours);
pr("\nThis command is obsolete and will go away in a future version.\n"
"Please use \"show updates\".");
return 0; return 0;
} }

View file

@ -61,11 +61,15 @@ vers(void)
pr("By default, countries use %s coordinate system.\n", pr("By default, countries use %s coordinate system.\n",
(players_at_00) ? "the deity's" : "their own"); (players_at_00) ? "the deity's" : "their own");
pr("\n"); pr("\n");
pr("Use the 'update' command to find out the time of the next update.\n"); pr("Use the 'show' command to find out the time of the next update.\n");
pr("The current time is %19.19s.\n", ctime(&now)); pr("The current time is %19.19s.\n", ctime(&now));
pr("An update consists of %d empire time units.\n", etu_per_update); pr("An update consists of %d empire time units.\n", etu_per_update);
pr("Each country is allowed to be logged in %d minutes a day.\n", pr("Each country is allowed to be logged in %d minutes a day.\n",
m_m_p_d); m_m_p_d);
if (*game_days != 0)
pr("Game days are %s\n", game_days);
if (*game_hours != 0)
pr("Game hours are %s\n", game_hours);
pr("It takes %.2f civilians to produce a BTU in one time unit.\n", pr("It takes %.2f civilians to produce a BTU in one time unit.\n",
(1.0 / (btu_build_rate * 100.0))); (1.0 / (btu_build_rate * 100.0)));
pr("\n"); pr("\n");

View file

@ -229,7 +229,9 @@ struct cmndstr player_coms[] = {
{"shark <LOAN>", 25, shark, C_MOD, NORM + MONEY + CAP}, {"shark <LOAN>", 25, shark, C_MOD, NORM + MONEY + CAP},
{"ship <SHIPS>", 0, shi, 0, NORM}, {"ship <SHIPS>", 0, shi, 0, NORM},
{"shoot <c|u> <SECTS> <NUMBER>", 3, shoo, C_MOD, NORM + MONEY + CAP}, {"shoot <c|u> <SECTS> <NUMBER>", 3, shoo, C_MOD, NORM + MONEY + CAP},
{"show <TYPE|\"bridge\"|\"tower\"> <\"build\"|\"stats\"|\"cap\"> [<tech>]", {"show <TYPE> <\"build\"|\"stats\"|\"cap\"> [<tech>]\n"
"\tshow <bridge|tower>\n"
"\tshow updates [<NUM>]>",
0, show, 0, VIS}, 0, show, 0, VIS},
{"shutdown <minutes> <disable update?>", 0, shut, 0, GOD}, {"shutdown <minutes> <disable update?>", 0, shut, 0, GOD},
{"sinfrastructure <SECTS>", 0, sinfra, 0, VIS}, {"sinfrastructure <SECTS>", 0, sinfra, 0, VIS},

View file

@ -32,13 +32,14 @@
* Jeff Bailey, 1990 * Jeff Bailey, 1990
* Steve McClure, 1996 * Steve McClure, 1996
* Ron Koenderink, 2005 * Ron Koenderink, 2005
* Markus Armbruster, 2006 * Markus Armbruster, 2006-2007
*/ */
#include <config.h> #include <config.h>
#include <math.h> #include <math.h>
#include "file.h" #include "file.h"
#include "game.h"
#include "item.h" #include "item.h"
#include "land.h" #include "land.h"
#include "nat.h" #include "nat.h"
@ -50,8 +51,11 @@
#include "product.h" #include "product.h"
#include "prototypes.h" #include "prototypes.h"
#include "sect.h" #include "sect.h"
#include "server.h"
#include "ship.h" #include "ship.h"
static char *fmttime2822(time_t);
struct look_list { struct look_list {
union { union {
struct lchrstr *lp; struct lchrstr *lp;
@ -654,3 +658,66 @@ show_news(int tlev)
pr(" %s\n", rpt[i].r_newstory[j]); pr(" %s\n", rpt[i].r_newstory[j]);
} }
} }
/*
* Show update policy and up to N scheduled updates.
*/
void
show_updates(int n)
{
struct gamestr *game = game_tick_tick();
int demand = 0;
int i;
pr("%s, Turn %d, ETU %d\n", fmttime2822(time(NULL)),
game->game_turn, game->game_tick);
if (update_time[0]) {
if (update_demand == UPD_DEMAND_SCHED) {
pr("Demand updates occur according to schedule:\n");
demand = 1;
} else
pr("Updates occur according to schedule:\n");
for (i = 0; i < n && update_time[i]; i++)
pr("%3d. %s\n", game->game_turn + i,
fmttime2822(update_time[i]));
if (update_window) {
pr("Updates occur within %d seconds after the scheduled time\n",
update_window);
}
} else
pr("There are no updates scheduled.\n");
if (update_demand == UPD_DEMAND_ASYNC) {
pr("Demand updates occur right after the demand is set.\n");
if (*update_demandtimes != 0) {
pr("Demand updates are allowed during: %s\n",
update_demandtimes);
}
demand = 1;
}
if (demand) {
pr("Demand updates require %d country(s) to want one.\n",
update_wantmin);
}
if (updates_disabled())
pr("\nUPDATES ARE DISABLED!\n");
}
/*
* Return T formatted according to RFC 2822.
* The return value is statically allocated and overwritten on
* subsequent calls.
*/
static char *
fmttime2822(time_t t)
{
static char buf[32];
int n = strftime(buf, sizeof(buf), "%a, %d %b %Y %T %z",
localtime(&t));
if (CANT_HAPPEN(n == 0))
buf[0] = 0;
return buf;
}