Change nation status from bits to a simple enum:

(nat_status, STAT_UNUSED, STAT_VIS, STAT_ACTIVE): New.
(STAT_NEW, STAT_SANCT, STAT_GOD): Change into nat_status members.
(STAT_INUSE, STAT_NORM): Remove.
(natstr): Use new nat_status for nat_stat.
    New value       Old value
    STAT_UNUSED     0
    STAT_NEW        STAT_INUSE | STAT_NEW
    STAT_VIS        STAT_INUSE
    STAT_SANCT      STAT_INUSE | STAT_SANCT
    STAT_ACTIVE     STAT_INUSE | STAT_NORM
    STAT_GOD        STAT_INUSE | STAT_NORM | STAT_GOD
Users changed.
This commit is contained in:
Markus Armbruster 2006-01-04 22:49:42 +00:00
parent 41c2c27376
commit 8b16c31223
35 changed files with 113 additions and 151 deletions

View file

@ -78,8 +78,7 @@ acce(void)
break;
if (cn == as)
continue;
if ((np->nat_stat & STAT_NORM) == 0 &&
(np->nat_stat & STAT_SANCT) == 0)
if (np->nat_stat < STAT_SANCT)
continue;
if (opt_HIDDEN) {
if (!player->god && !getcontact(getnatp(player->cnum), cn))

View file

@ -68,7 +68,7 @@ add(void)
struct lndstr land;
for (freecn = 0; NULL != (natp = getnatp(freecn)); freecn++) {
if ((natp->nat_stat & STAT_INUSE) == 0)
if (natp->nat_stat == STAT_UNUSED)
break;
}
if (freecn < MAXNOC)
@ -111,19 +111,19 @@ add(void)
return RET_SYN;
switch (*p) {
case 'v':
stat = STAT_INUSE;
stat = STAT_VIS;
break;
case 'n':
stat = STAT_NEW | STAT_INUSE;
stat = STAT_NEW;
break;
case 'a':
stat = STAT_NORM | STAT_INUSE;
stat = STAT_ACTIVE;
break;
case 'g':
stat = STAT_GOD | STAT_NORM | STAT_INUSE;
stat = STAT_GOD;
break;
case 'd':
stat = 0;
stat = STAT_UNUSED;
break;
default:
pr("Illegal status\n");
@ -189,8 +189,7 @@ add(void)
}
}
if ((natp->nat_stat & (STAT_INUSE | STAT_NORM | STAT_GOD)) ==
STAT_INUSE) {
if (natp->nat_stat == STAT_NEW || natp->nat_stat == STAT_VIS) {
*natp->nat_hostaddr = '\0';
*natp->nat_hostname = '\0';
*natp->nat_userid = '\0';

View file

@ -45,13 +45,12 @@ brea(void)
struct natstr *natp;
natp = getnatp(player->cnum);
if ((natp->nat_stat & STAT_SANCT) == 0) {
if (natp->nat_stat != STAT_SANCT) {
pr("You aren't in sanctuary!\n");
return RET_SYN;
}
bsanct();
natp->nat_stat &= ~STAT_SANCT;
natp->nat_stat |= STAT_NORM;
natp->nat_stat = STAT_ACTIVE;
putnat(natp);
player->nstat |= NORM;
return RET_OK;

View file

@ -99,7 +99,7 @@ cede(void)
return RET_FAIL;
}
natp = getnatp(n);
if (natp->nat_stat & STAT_GOD) {
if (natp->nat_stat == STAT_GOD) {
pr("You can only give to normal countries...\n");
return RET_FAIL;
}

View file

@ -61,7 +61,7 @@ chan(void)
buf)) == 0)
return RET_SYN;
us = getnatp(player->cnum);
if (us->nat_stat == VIS) {
if (us->nat_stat == STAT_VIS) {
pr("Visitor countries can't change their country name or representative.\n");
return RET_FAIL;
}
@ -70,7 +70,7 @@ chan(void)
case 'c':
charge = 0;
btucost = 0;
if (!player->god && (us->nat_stat & STAT_NORM)) {
if (us->nat_stat == STAT_ACTIVE) {
if (opt_BLITZ == 0) {
if (us->nat_btu < 254) {
pr("You need 254 btus to change your country name!\n");

View file

@ -59,7 +59,7 @@ coun(void)
pr(" # last access %sstatus country name\n",
player->god ? "BTU " : "");
while (nxtitem(&ni, &nat)) {
if ((nat.nat_stat & STAT_INUSE) == 0)
if (nat.nat_stat == STAT_UNUSED)
continue;
coun_list(&nat);
}
@ -76,7 +76,7 @@ coun_list(struct natstr *natp)
if (getplayer(cn)
&& (player->god
|| (natp->nat_stat & STAT_GOD)
|| natp->nat_stat == STAT_GOD
|| cn == player->cnum || getrel(natp, player->cnum) == ALLIED))
pr(" Now logged on ");
else if (player->god) {
@ -94,13 +94,13 @@ coun_list(struct natstr *natp)
if (player->god)
pr(" %4d", natp->nat_btu);
if (natp->nat_stat & STAT_GOD)
if (natp->nat_stat == STAT_GOD)
status = "DEITY";
else if (natp->nat_stat & STAT_NEW)
else if (natp->nat_stat == STAT_NEW)
status = "New";
else if (natp->nat_stat & STAT_SANCT)
else if (natp->nat_stat == STAT_SANCT)
status = "Sanctuary";
else if (natp->nat_stat & STAT_NORM) {
else if (natp->nat_stat == STAT_ACTIVE) {
status = "Active";
if (!opt_HIDDEN || player->god) {
if (influx(natp))

View file

@ -102,7 +102,7 @@ decl(void)
natp = getnatp(who);
while (nxtitem(&ni, &nat)) {
if (!(nat.nat_stat & STAT_INUSE))
if (nat.nat_stat == STAT_UNUSED)
continue;
if (player->cnum == (natid)ni.cur)
continue;

View file

@ -748,7 +748,7 @@ docountry(s_char op, int arg, s_char *p, float farg, natid nat,
np->nat_yorg = newy;
break;
case 's':
np->nat_stat = (s_char)errcheck(arg, 0, STAT_NEW);
np->nat_stat = (nat_status)errcheck(arg, STAT_UNUSED, STAT_GOD);
break;
case 'u':
arg = errcheck(arg, 0, m_m_p_d);

View file

@ -58,18 +58,17 @@ flash(void)
return RET_SYN;
}
if (us->nat_stat & STAT_GOD) {
if (us->nat_stat == STAT_GOD) {
/* We are gods, we can flash anyone */
} else if (us->nat_stat == VIS) {
} else if (us->nat_stat == STAT_VIS) {
/* We are a visitor. We can only flash the gods. :) */
if (!(to->nat_stat & STAT_GOD)) {
if (to->nat_stat != STAT_GOD) {
pr("Visitors can only flash the gods.\n");
return RET_SYN;
}
} else {
/* Ok, we are a normal country, can we flash them? */
if ((!(to->nat_stat & STAT_GOD)) &&
(getrel(to, player->cnum) < FRIENDLY)) {
if (to->nat_stat != STAT_GOD && getrel(to, player->cnum) < FRIENDLY) {
pr("%s is not a deity or friendly with us.\n", to->nat_cnam);
return RET_SYN;
}

View file

@ -74,7 +74,7 @@ nati(void)
prdate();
pr("Nation status is %s", natstate(natp));
pr(" Bureaucratic Time Units: %d\n", natp->nat_btu);
if (natp->nat_stat & STAT_INUSE) {
if (natp->nat_stat != STAT_UNUSED) {
getsect(natp->nat_xcap, natp->nat_ycap, &sect);
if (influx(natp))
pr("No capital (was at %s).\n",

View file

@ -80,7 +80,7 @@ new(void)
}
num = n;
natp = getnatp(num);
if ((natp->nat_stat & STAT_NEW) == 0) {
if (natp->nat_stat != STAT_NEW) {
pr("Country #%d (%s) isn't a new country!\n", num, cname(num));
return RET_SYN;
}
@ -180,8 +180,7 @@ new(void)
sect.sct_item[I_UW] = 75;
putsect(&sect);
natp->nat_btu = max_btus;
natp->nat_stat &= ~STAT_NEW;
natp->nat_stat |= STAT_SANCT;
natp->nat_stat = STAT_SANCT;
natp->nat_xcap = x;
natp->nat_ycap = y;
natp->nat_xorg = x;

View file

@ -87,12 +87,12 @@ play_list(struct player *joe)
/* It's a blitz, we see everything */
} else if (joe->god) {
/* This country is a god, so we see it */
} else if (us->nat_stat == VIS) {
} else if (us->nat_stat == STAT_VIS) {
/* We are a visitor country, we can't see squat, except deities */
return 0;
} else if (joe->cnum != player->cnum) {
/* This isn't us. Can we see it? */
if (natp->nat_stat == VIS) {
if (natp->nat_stat == STAT_VIS) {
/* Yes, we can see visitors are logged on */
} else if (getrel(natp, player->cnum) < ALLIED) {
/* This is a non-allied country, don't show it. */

View file

@ -144,7 +144,7 @@ powe(void)
continue;
}
natp2 = getnatp(pow.p_nation);
if (natp2->nat_stat & STAT_GOD)
if (natp2->nat_stat == STAT_GOD)
continue;
if (use_targets && !targets[pow.p_nation])
continue;
@ -288,12 +288,7 @@ gen_power(void)
for (i = 1; NULL != (natp = getnatp(i)); i++) {
pow = &powbuf[i];
pow->p_nation = i;
if ((natp->nat_stat & STAT_INUSE) == 0 ||
(natp->nat_stat & STAT_NORM) == 0) {
pow->p_power = 0.;
continue;
}
if (natp->nat_stat & STAT_GOD) {
if (natp->nat_stat != STAT_ACTIVE) {
pow->p_power = 0.;
continue;
}
@ -397,11 +392,11 @@ set_target(s_char *p, int *targets)
target = cnumb(p);
if (target > 0 && target < MAXNOC && (natp = getnatp(target))) {
if (natp->nat_stat & STAT_GOD) {
if (natp->nat_stat == STAT_GOD) {
pr("Country #%d is a deity country\n", target);
} else if (!(natp->nat_stat & STAT_INUSE)) {
} else if (natp->nat_stat == STAT_UNUSED) {
pr("Country #%d is not in use\n", target);
} else if (!(natp->nat_stat & STAT_NORM)) {
} else if (natp->nat_stat != STAT_ACTIVE) {
pr("Country #%d is not a normal country\n", target);
} else {
targets[target] = 1;

View file

@ -89,13 +89,7 @@ reje(void)
if (!snxtitem(&ni, EF_NATION, player->argp[3]))
return RET_SYN;
while (nxtitem(&ni, &nat)) {
#if 0
if ((nat.nat_stat & STAT_NORM) == 0) {
pr("You may not reject/accept stuff from %s\nbecause they are not a normal country.\n", nat.nat_cnam);
continue;
}
#endif
if (nat.nat_stat & STAT_GOD) {
if (nat.nat_stat == STAT_GOD) {
pr("You may not reject/accept stuff from %s\nbecause they are a deity.\n", nat.nat_cnam);
continue;
}

View file

@ -82,8 +82,7 @@ rela(void)
break;
if (cn == as)
continue;
if ((np->nat_stat & STAT_NORM) == 0 &&
(np->nat_stat & STAT_SANCT) == 0)
if (np->nat_stat < STAT_SANCT)
continue;
if (opt_HIDDEN) {
if (!player->god && !getcontact(natp, cn))

View file

@ -78,7 +78,7 @@ repo(void)
natp = getnatp(player->cnum);
memset(&mystat, 0, sizeof(struct stats));
mystat.stat = natp->nat_stat;
if (mystat.stat & STAT_NORM) {
if (mystat.stat >= STAT_ACTIVE) {
mystat.res = natp->nat_level[NAT_RLEV];
mystat.tech = natp->nat_level[NAT_TLEV];
mystat.edu = natp->nat_level[NAT_ELEV];
@ -91,7 +91,7 @@ repo(void)
first = 1;
}
while (nxtitem(&ni, &nat)) {
if (!(nat.nat_stat & STAT_INUSE))
if (nat.nat_stat == STAT_UNUSED)
continue;
if (opt_HIDDEN) {
if (!player->god && !getcontact(getnatp(player->cnum), ni.cur))
@ -132,8 +132,7 @@ repo_list(struct stats *stat, natid cn, struct natstr *natp)
prxy(" %4d,%-4d\n", natp->nat_xcap, natp->nat_ycap, player->cnum);
return;
}
switch (natp->nat_stat & (STAT_NORM | STAT_GOD | STAT_NEW | STAT_SANCT)) {
case STAT_NORM:
if (natp->nat_stat == STAT_ACTIVE) {
pr(" %-3d %-14.14s ", cn, natp->nat_cnam);
printdiff(stat->stat, stat->tech, natp, NAT_TLEV);
printdiff(stat->stat, stat->res, natp, NAT_RLEV);
@ -149,19 +148,6 @@ repo_list(struct stats *stat, natid cn, struct natstr *natp)
else
pr("Active\n");
}
break;
case STAT_SANCT:
break;
case STAT_NEW:
case 0:
break;
case STAT_SANCT | STAT_NORM | STAT_GOD:
case STAT_NORM | STAT_GOD:
case STAT_GOD:
break;
default:
pr("???? ???? ???? ????\n");
break;
}
}
@ -177,7 +163,7 @@ printdiff(int mystat, double ours, struct natstr *natp, int what)
pr(" %7.2f ", ours);
return;
}
if (ours && mystat & STAT_NORM && natp->nat_stat & STAT_NORM) {
if (ours && mystat >= STAT_ACTIVE && natp->nat_stat >= STAT_ACTIVE) {
theirs = natp->nat_level[what];
if ((shift = min((int)theirs, (int)ours) - 100) > 0) {
ours -= shift;

View file

@ -103,8 +103,7 @@ tele(void)
}
natp = getnatp(to);
if (((natp->nat_stat & STAT_NORM) == 0) &&
((natp->nat_stat & STAT_SANCT) == 0)) {
if (natp->nat_stat < STAT_SANCT) {
pr("%s has no \"telegram priveleges\".\n", cname(to));
kk++;
continue;
@ -119,8 +118,8 @@ tele(void)
return RET_FAIL;
}
if (!player->god &&
(natp->nat_stat & GOD) != GOD && player->cnum != to)
if (!player->god && natp->nat_stat != STAT_GOD
&& player->cnum != to)
nreport(player->cnum, N_SENT_TEL, to, 1);
if (opt_HIDDEN) {
setcont(to, player->cnum, FOUND_TELE);

View file

@ -204,7 +204,7 @@ xdvisible(int type, void *p)
case EF_LOST:
return gp->own != 0 && (gp->own == player->cnum || player->god);
case EF_NATION:
return ((struct natstr *)p)->nat_stat != 0
return ((struct natstr *)p)->nat_stat != STAT_UNUSED
&& (gp->own == player->cnum || player->god);
case EF_NEWS:
return ((struct nwsstr *)p)->nws_vrb != 0