(stats): Remove, simply pass around natstr * instead.
(repo): Don't suppress part of the header if the report is empty and HIDDEN is disabled. (repo, repo_list): Concentrate decision whether to report on a country in repo(). (repo_header): Simplify. (repo_list): Remove redundant parameter cn. (repo_list, printdiff): Move reporting on self from printdiff() to repo_list(). (repo_list): Simplify. Move research value one character to the right for player->god, to match format of the report on self. (printdiff): Remove redundant parameter ours.
This commit is contained in:
parent
57808ef10c
commit
53c3101e77
1 changed files with 32 additions and 68 deletions
|
@ -37,71 +37,39 @@
|
|||
|
||||
#include "misc.h"
|
||||
#include "player.h"
|
||||
#include "sect.h"
|
||||
#include "nat.h"
|
||||
#include "file.h"
|
||||
#include "xy.h"
|
||||
#include "nsc.h"
|
||||
#include <fcntl.h>
|
||||
#include <ctype.h>
|
||||
#include "commands.h"
|
||||
#include "optlist.h"
|
||||
|
||||
struct stats {
|
||||
double res;
|
||||
double tech;
|
||||
double edu;
|
||||
double hap;
|
||||
int stat;
|
||||
};
|
||||
|
||||
static void printdiff(int mystat, double ours, struct natstr *natp,
|
||||
int what);
|
||||
static void repo_header(void);
|
||||
static void repo_list(struct stats *stat, natid cn, struct natstr *natp);
|
||||
|
||||
static int check(s_char *buf, double theirs, double min, double max,
|
||||
static void repo_list(struct natstr *, struct natstr *);
|
||||
static void printdiff(struct natstr *, struct natstr *, int what);
|
||||
static int check(char *buf, double theirs, double min, double max,
|
||||
int shift, int tolerance);
|
||||
|
||||
int
|
||||
repo(void)
|
||||
{
|
||||
struct natstr *natp;
|
||||
struct stats mystat;
|
||||
struct natstr nat;
|
||||
struct nstr_item ni;
|
||||
int first;
|
||||
|
||||
if (!snxtitem(&ni, EF_NATION, player->argp[1]))
|
||||
return RET_SYN;
|
||||
prdate();
|
||||
natp = getnatp(player->cnum);
|
||||
memset(&mystat, 0, sizeof(struct stats));
|
||||
mystat.stat = natp->nat_stat;
|
||||
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];
|
||||
mystat.hap = natp->nat_level[NAT_HLEV];
|
||||
}
|
||||
if (opt_HIDDEN) {
|
||||
repo_header();
|
||||
first = 0;
|
||||
} else {
|
||||
first = 1;
|
||||
}
|
||||
while (nxtitem(&ni, &nat)) {
|
||||
if (nat.nat_stat == STAT_UNUSED)
|
||||
continue;
|
||||
if (opt_HIDDEN) {
|
||||
if (!player->god && !getcontact(getnatp(player->cnum), ni.cur))
|
||||
if (!player->god && !getcontact(natp, ni.cur))
|
||||
continue;
|
||||
}
|
||||
if (first) {
|
||||
repo_header();
|
||||
first = 0;
|
||||
}
|
||||
repo_list(&mystat, (natid)ni.cur, &nat);
|
||||
if (!player->god && nat.nat_stat != STAT_ACTIVE)
|
||||
continue;
|
||||
repo_list(natp, &nat);
|
||||
}
|
||||
return RET_OK;
|
||||
}
|
||||
|
@ -109,31 +77,29 @@ repo(void)
|
|||
static void
|
||||
repo_header(void)
|
||||
{
|
||||
pr(" # name tech research education happiness ");
|
||||
if (player->god)
|
||||
pr("capital\n");
|
||||
else
|
||||
pr(" status\n");
|
||||
pr(" # name tech research education happiness"
|
||||
" %s\n",
|
||||
player->god ? "capital" : " status");
|
||||
}
|
||||
|
||||
static void
|
||||
repo_list(struct stats *stat, natid cn, struct natstr *natp)
|
||||
repo_list(struct natstr *plnatp, struct natstr *natp)
|
||||
{
|
||||
if (player->god) {
|
||||
pr(" %-3d %-14.14s ", cn, natp->nat_cnam);
|
||||
pr(" %7.2f %7.2f %7.2f %7.2f",
|
||||
natp->nat_level[NAT_TLEV],
|
||||
natp->nat_level[NAT_RLEV],
|
||||
natp->nat_level[NAT_ELEV], natp->nat_level[NAT_HLEV]);
|
||||
prxy(" %4d,%-4d\n", natp->nat_xcap, natp->nat_ycap, player->cnum);
|
||||
return;
|
||||
pr(" %-3d %-14.14s ", natp->nat_cnum, natp->nat_cnam);
|
||||
if (player->god || player->cnum == natp->nat_cnum) {
|
||||
pr(" %7.2f %7.2f %7.2f %7.2f%s",
|
||||
natp->nat_level[NAT_TLEV], natp->nat_level[NAT_RLEV],
|
||||
natp->nat_level[NAT_ELEV], natp->nat_level[NAT_HLEV],
|
||||
player->god ? "" : " ");
|
||||
} else {
|
||||
printdiff(plnatp, natp, NAT_TLEV);
|
||||
printdiff(plnatp, natp, NAT_RLEV);
|
||||
printdiff(plnatp, natp, NAT_ELEV);
|
||||
printdiff(plnatp, natp, NAT_HLEV);
|
||||
}
|
||||
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);
|
||||
printdiff(stat->stat, stat->edu, natp, NAT_ELEV);
|
||||
printdiff(stat->stat, stat->hap, natp, NAT_HLEV);
|
||||
if (player->god) {
|
||||
prxy(" %4d,%-4d\n", natp->nat_xcap, natp->nat_ycap, player->cnum);
|
||||
} else {
|
||||
if (!opt_HIDDEN && influx(natp))
|
||||
pr("In flux\n");
|
||||
else if (!opt_HIDDEN && natp->nat_money <= 0)
|
||||
|
@ -144,18 +110,16 @@ repo_list(struct stats *stat, natid cn, struct natstr *natp)
|
|||
}
|
||||
|
||||
static void
|
||||
printdiff(int mystat, double ours, struct natstr *natp, int what)
|
||||
printdiff(struct natstr *plnatp, struct natstr *natp, int what)
|
||||
{
|
||||
double ours = plnatp->nat_level[what];
|
||||
double theirs;
|
||||
int shift;
|
||||
int tolerance;
|
||||
s_char buf[128];
|
||||
char buf[128];
|
||||
|
||||
if (natp->nat_cnum == player->cnum) {
|
||||
pr(" %7.2f ", ours);
|
||||
return;
|
||||
}
|
||||
if (ours && mystat >= STAT_ACTIVE && natp->nat_stat >= STAT_ACTIVE) {
|
||||
if (ours
|
||||
&& plnatp->nat_stat >= STAT_ACTIVE && natp->nat_stat >= STAT_ACTIVE) {
|
||||
theirs = natp->nat_level[what];
|
||||
if ((shift = min((int)theirs, (int)ours) - 100) > 0) {
|
||||
ours -= shift;
|
||||
|
@ -200,7 +164,7 @@ printdiff(int mystat, double ours, struct natstr *natp, int what)
|
|||
}
|
||||
|
||||
static int
|
||||
check(s_char *buf, double theirs, double min, double max, int shift,
|
||||
check(char *buf, double theirs, double min, double max, int shift,
|
||||
int tolerance)
|
||||
{
|
||||
double shove;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue