(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.
extern void show_sect_capab(int);
extern void show_item(int);
extern void show_news(int);
+extern void show_updates(int);
/* shpsub.c */
extern void shp_sel(struct nstr_item *, struct emp_qelem *);
extern void shp_nav(struct emp_qelem *, double *, double *, int *, natid);
.NA disable "Disable Updates"
.LV Expert
.SY "disable"
-No updates will fire if you disable them. "UPDATES ARE DISABLED" will
-show up in the output of the "update" command.
+No updates will fire if you disable them. The \*Qshow updates\*U
+command will report the fact.
.s1
Disabling updates this way does not stop the Empire clock. Stuff
using the clock, like BTU growth, continues normally. Should a
.s1
You should not use this command as a tool for implementing your update
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.
-.SA "update, disable, Time, Deity"
+.SA "disable, show, Time, Deity"
.LV Expert
.SY "enable"
If updates have been disabled, then this will enable them again.
-.SA "update, enable, force, Deity"
+.SA "disable, show, force, Deity"
.LV Basic
.SY "show <land|nuke|plane|sector|ship> [b|s|c] [tech]"
.SY "show <bridge|item|news|tower>"
+.SY "show <updates> [number]"
The show command shows characteristics of sectors, units (ships,
planes, land units and nukes), bridges (spans and towers), items and
-news.
+news, as well as information on updates.
.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.).
.s1
For sectors and units, a
75kt fusion 3 90 3 320 106 $ 20000
.FI
.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"
The update command shows you when the next update will occur, and
describes the current update policies.
.sp
-.SA "zdone, Updates"
+.SA "show, zdone, Obsolete"
There can be up to 99 countries.
By default, countries use their own coordinate system.
-An Empire time unit is 10 seconds long.
-Use the 'update' command to find out the time of the next update.
+Use the 'show' command to find out the time of the next update.
The current time is Tue Jul 10 23:09:03.
An update consists of 60 empire time units.
Each country is allowed to be logged in 1440 minutes a day.
.s1
"check" checks to see what your zdone state is.
.s1
-The command will also show you how many countries want
-an update. There are 3 possible update policies which could
-be set in this game. The update policy is shown in the update command.
+The command will also show you how many countries want an update. The
+number of ready countries required for a demand update to happen is
+configurable, and may be seen in the \*Qshow updates\*U command.
.s1
-Your zdone state is cleared when an update occurs.
+There are three possible update policies which could be set in this
+game:
.s1
1. No demand updates. If so, then this command is useless.
.s1
-2. Updates occur upon demand, right after the last person sets
-zdone. The threshold at which a demand update occurs is configurable,
-and may be seen in the update command.
+2. Demand updates occur right after the last required country sets
+zdone.
+.s1
+3. Demand updates occur according to the update schedule. If enough
+countries have set zdone by the scheduled time, then an update will
+occur. The update schedule may be seen in the \*Qshow updates\*U
+command.
+.s1
+Your zdone state is cleared when an update occurs.
.s1
-3. Demand updates occur at specific times. If enough countries
-have set zdone at one of those times, then an update will occur.
-The times may be seen in the update command.
+The \*Qshow updates\*U command shows update policy and schedule.
.sp
-.SA "update, Playing"
+.SA "show, Updates"
int rlev;
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))
|| !*p)
return RET_SYN;
cfunc = show_ship_capab;
}
break;
+ case 'u':
+ show_updates(player->argp[2] ? atoi(player->argp[2]) : 8);
+ return RET_OK;
default:
return RET_SYN;
}
+
if (!(p = getstarg(player->argp[2],
"Build, stats, or capability data (b,s,c)? ", buf))
|| !*p)
if (*game_hours != 0)
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;
}
pr("By default, countries use %s coordinate system.\n",
(players_at_00) ? "the deity's" : "their own");
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("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",
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",
(1.0 / (btu_build_rate * 100.0)));
pr("\n");
{"shark <LOAN>", 25, shark, C_MOD, NORM + MONEY + CAP},
{"ship <SHIPS>", 0, shi, 0, NORM},
{"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},
{"shutdown <minutes> <disable update?>", 0, shut, 0, GOD},
{"sinfrastructure <SECTS>", 0, sinfra, 0, VIS},
* Jeff Bailey, 1990
* Steve McClure, 1996
* Ron Koenderink, 2005
- * Markus Armbruster, 2006
+ * Markus Armbruster, 2006-2007
*/
#include <config.h>
#include <math.h>
#include "file.h"
+#include "game.h"
#include "item.h"
#include "land.h"
#include "nat.h"
#include "product.h"
#include "prototypes.h"
#include "sect.h"
+#include "server.h"
#include "ship.h"
+static char *fmttime2822(time_t);
+
struct look_list {
union {
struct lchrstr *lp;
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;
+}