From 0b05f11d28b7b01090629c63839df486deb00efa Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Mon, 31 Oct 2016 14:54:21 +0100 Subject: [PATCH] relations: New enum relations Signed-off-by: Markus Armbruster --- include/nat.h | 28 +++++++++++++++++----------- src/lib/commands/assa.c | 2 +- src/lib/commands/decl.c | 2 +- src/lib/commands/spy.c | 4 ++-- src/lib/common/nat.c | 6 +++--- src/lib/subs/aircombat.c | 6 +++--- src/lib/subs/lndsub.c | 2 +- src/lib/subs/mission.c | 3 ++- src/lib/subs/rej.c | 4 ++-- 9 files changed, 32 insertions(+), 25 deletions(-) diff --git a/include/nat.h b/include/nat.h index 6c85ca33..0d5683ae 100644 --- a/include/nat.h +++ b/include/nat.h @@ -111,21 +111,27 @@ struct natstr { time_t nat_newstim; /* date news last read */ time_t nat_annotim; /* date annos last read */ float nat_level[4]; /* technology, etc */ - unsigned char nat_relate[MAXNOC]; + unsigned char nat_relate[MAXNOC]; /* enum relations */ }; - /* nation relation codes */ -#define AT_WAR 0 -#define HOSTILE 1 -#define NEUTRAL 2 -#define FRIENDLY 3 -#define ALLIED 4 - #define NAT_TLEV 0 #define NAT_RLEV 1 #define NAT_ELEV 2 #define NAT_HLEV 3 +/* Diplomatic relations */ +enum relations { + /* + * Don't change order without checking inequality comparisons and + * array initializers! + */ + AT_WAR, + HOSTILE, + NEUTRAL, + FRIENDLY, + ALLIED +}; + /* * Number of updates contact lasts for various ways of making contact. * These are only useful with option LOSE_CONTACT, which implies @@ -197,8 +203,8 @@ extern double techfact(int level, double mult); extern char *cname(natid n); extern char *relatename(struct natstr *np, natid other); extern char *natstate(struct natstr *np); -extern int getrel(struct natstr *np, natid them); -extern int relations_with(natid, natid); +extern enum relations getrel(struct natstr *np, natid them); +extern enum relations relations_with(natid, natid); extern int nat_accepts(natid, natid, enum rej_comm); extern int in_contact(natid, natid); extern void agecontact(struct natstr *np); @@ -215,7 +221,7 @@ extern char *prnatid(natid); extern int grant_btus(struct natstr *, int); /* src/lib/subs/rej.c */ -extern void setrel(natid, natid, int); +extern void setrel(natid, natid, enum relations); extern void setcont(natid, natid, int); extern void setrej(natid, natid, int, enum rej_comm); diff --git a/src/lib/commands/assa.c b/src/lib/commands/assa.c index ba9fccaf..03e0ac39 100644 --- a/src/lib/commands/assa.c +++ b/src/lib/commands/assa.c @@ -192,7 +192,7 @@ sneak_ashore(struct combat off[], struct emp_qelem *olist, struct emp_qelem *qp; struct ulist *llp; struct lndstr *lp; - int rel; + enum relations rel; pr("Trying to sneak on shore...\n"); diff --git a/src/lib/commands/decl.c b/src/lib/commands/decl.c index 703b573a..cdf7d6ed 100644 --- a/src/lib/commands/decl.c +++ b/src/lib/commands/decl.c @@ -39,7 +39,7 @@ int decl(void) { struct natstr nat; - int rel; + enum relations rel; int who; struct nstr_item ni; char *p; diff --git a/src/lib/commands/spy.c b/src/lib/commands/spy.c index 4c7b4448..f12442ab 100644 --- a/src/lib/commands/spy.c +++ b/src/lib/commands/spy.c @@ -57,7 +57,7 @@ int spy(void) { natid own; - int relat; + enum relations relat; coord x, y; coord nx, ny; int military; @@ -252,7 +252,7 @@ prplanes(int x, int y) static char * player_relstr(natid them) { - int rel = relations_with(player->cnum, them); + enum relations rel = relations_with(player->cnum, them); if (rel == ALLIED) return "Allied"; diff --git a/src/lib/common/nat.c b/src/lib/common/nat.c index 07608165..35b941fe 100644 --- a/src/lib/common/nat.c +++ b/src/lib/common/nat.c @@ -42,7 +42,7 @@ #include "tel.h" char *relates[] = { - /* must follow nation relation defines in nat.h */ + /* must match enum relations */ "At War", "Hostile", "Neutral", "Friendly", "Allied" }; @@ -73,7 +73,7 @@ natstate(struct natstr *np) } /* This returns the relations that np has with them */ -int +enum relations getrel(struct natstr *np, natid them) { return np->nat_relate[them]; @@ -83,7 +83,7 @@ getrel(struct natstr *np, natid them) * Return relations @us has with @them. * Countries are considered allied to themselves. */ -int +enum relations relations_with(natid us, natid them) { return us == them ? ALLIED : getrel(getnatp(us), them); diff --git a/src/lib/subs/aircombat.c b/src/lib/subs/aircombat.c index 09f76c3c..a648cf68 100644 --- a/src/lib/subs/aircombat.c +++ b/src/lib/subs/aircombat.c @@ -65,7 +65,7 @@ static void ac_doflak(struct emp_qelem *, struct sctstr *); static void ac_landflak(struct emp_qelem *, coord, coord); static void ac_shipflak(struct emp_qelem *, coord, coord); static void ac_fireflak(struct emp_qelem *, natid, int); -static void getilists(struct emp_qelem *, unsigned char *, natid); +static void getilists(struct emp_qelem *, enum relations[], natid); static int do_evade(struct emp_qelem *, struct emp_qelem *); void @@ -76,7 +76,7 @@ ac_encounter(struct emp_qelem *bomb_list, struct emp_qelem *esc_list, int dir; unsigned char gotships[MAXNOC]; unsigned char gotlands[MAXNOC]; - unsigned char rel[MAXNOC]; + enum relations rel[MAXNOC]; int overfly[MAXNOC]; int flags; struct emp_qelem ilist[MAXNOC]; @@ -741,7 +741,7 @@ ac_flak_dam(int guns, int def, int pl_flags) * Get planes available for interception duties. */ static void -getilists(struct emp_qelem *list, unsigned char *rel, natid intruder) +getilists(struct emp_qelem *list, enum relations rel[], natid intruder) { natid cn; struct plchrstr *pcp; diff --git a/src/lib/subs/lndsub.c b/src/lib/subs/lndsub.c index eaabfbb7..59c75740 100644 --- a/src/lib/subs/lndsub.c +++ b/src/lib/subs/lndsub.c @@ -987,7 +987,7 @@ lnd_mar_dir(struct emp_qelem *list, int dir, natid actor) coord newx; coord newy; int move; - int rel; + enum relations rel; int oldown; if (CANT_HAPPEN(QEMPTY(list))) diff --git a/src/lib/subs/mission.c b/src/lib/subs/mission.c index fc4f6008..9313d5e6 100644 --- a/src/lib/subs/mission.c +++ b/src/lib/subs/mission.c @@ -179,7 +179,8 @@ int unit_interdict(coord x, coord y, natid victim, char *s, int hardtarget, int mission) { - int cn, rel, newdam, osubs; + int cn, newdam, osubs; + enum relations rel; int dam = -1; unsigned char plane_act[MAXNOC], other_act[MAXNOC]; struct genlist mi[MAXNOC]; diff --git a/src/lib/subs/rej.c b/src/lib/subs/rej.c index 699ad38a..c72fcb32 100644 --- a/src/lib/subs/rej.c +++ b/src/lib/subs/rej.c @@ -41,10 +41,10 @@ #include "update.h" void -setrel(natid us, natid them, int rel) +setrel(natid us, natid them, enum relations rel) { struct natstr *mynp = getnatp(us); - int oldrel; + enum relations oldrel; char *whichway; int n_up = 0; int n_down = 0;