Change xdump nat to show only own country, and xdump cou to show to

deities what xdump nat used to show:
(cou_ca): Remove initializer.
(ef_init_srv): Initialize cou_ca[] from nat_ca[].
(xdvisible): Change case EF_NATION to return true only for owner
even for deities.
This commit is contained in:
Markus Armbruster 2006-02-17 18:38:50 +00:00
parent 3f96090ac5
commit 58f67c8e19
3 changed files with 15 additions and 10 deletions

View file

@ -207,9 +207,7 @@ xdvisible(int type, void *p)
case EF_LOST: case EF_LOST:
return gp->own != 0 && (gp->own == player->cnum || player->god); return gp->own != 0 && (gp->own == player->cnum || player->god);
case EF_NATION: case EF_NATION:
if (!player->god)
return gp->own == player->cnum; return gp->own == player->cnum;
/* fall through */
case EF_COUNTRY: case EF_COUNTRY:
return ((struct natstr *)p)->nat_stat != STAT_UNUSED; return ((struct natstr *)p)->nat_stat != STAT_UNUSED;
case EF_NEWS: case EF_NEWS:

View file

@ -494,6 +494,11 @@ struct castr trade_ca[] = {
}; };
struct castr nat_ca[] = { struct castr nat_ca[] = {
/*
* Keep selectors cnum, stat and cname at the beginning.
* ef_init_srv() makes their copies in cou_ca[] accessible for
* mortals.
*/
{NSC_NATID, 0, 0, fldoff(natstr, nat_cnum), "cnum", EF_NATION}, {NSC_NATID, 0, 0, fldoff(natstr, nat_cnum), "cnum", EF_NATION},
{NSC_SITYPE(nat_status), 0, 0, fldoff(natstr, nat_stat), "stat", {NSC_SITYPE(nat_status), 0, 0, fldoff(natstr, nat_stat), "stat",
EF_NATION_STATUS}, EF_NATION_STATUS},
@ -535,13 +540,8 @@ struct castr nat_ca[] = {
{NSC_NOTYPE, 0, 0, 0, NULL, EF_BAD} {NSC_NOTYPE, 0, 0, 0, NULL, EF_BAD}
}; };
struct castr cou_ca[] = { struct castr cou_ca[sizeof(nat_ca) / sizeof(*nat_ca)];
{NSC_NATID, NSC_CONST, 0, fldoff(natstr, nat_cnum), "cnum", EF_NATION}, /* initialized in ef_init_srv() */
{NSC_SITYPE(nat_status), NSC_CONST, 0, fldoff(natstr, nat_stat), "stat",
EF_NATION_STATUS},
{NSC_STRINGY, NSC_CONST, 20, fldoff(natstr, nat_cnam), "cname", EF_BAD},
{NSC_NOTYPE, 0, 0, 0, NULL, EF_BAD}
};
struct castr realm_ca[] = { struct castr realm_ca[] = {
/* uid is encoded in cnum, realm */ /* uid is encoded in cnum, realm */

View file

@ -77,6 +77,13 @@ ef_init_srv(void)
empfile[fileinit[i].ef_type].postread = fileinit[i].postread; empfile[fileinit[i].ef_type].postread = fileinit[i].postread;
empfile[fileinit[i].ef_type].prewrite = fileinit[i].prewrite; empfile[fileinit[i].ef_type].prewrite = fileinit[i].prewrite;
} }
for (i = 0; nat_ca[i].ca_name; i++) {
cou_ca[i] = nat_ca[i];
cou_ca[i].ca_flags |= NSC_CONST | (i < 3 ? 0 : NSC_DEITY);
}
cou_ca[i] = nat_ca[i];
ef_open_srv(); ef_open_srv();
if (ef_verify() < 0) if (ef_verify() < 0)
exit(EXIT_FAILURE); exit(EXIT_FAILURE);