X-Git-Url: http://git.pond.sub.org/?p=empserver;a=blobdiff_plain;f=include%2Fnat.h;h=58a8b1b6e1c25cf8b7c25e8a51563edb5012ca12;hp=f3993054336a7848a59d1b44e42656a249c3093e;hb=HEAD;hpb=129fe58c19beb0722c99cd2af642bae66df104f2 diff --git a/include/nat.h b/include/nat.h index f39930543..58a8b1b6e 100644 --- a/include/nat.h +++ b/include/nat.h @@ -1,6 +1,6 @@ /* * Empire - A multi-player, client/server Internet based war game. - * Copyright (C) 1986-2016, Dave Pare, Jeff Bailey, Thomas Ruschak, + * Copyright (C) 1986-2021, Dave Pare, Jeff Bailey, Thomas Ruschak, * Ken Stevens, Steve McClure, Markus Armbruster * * Empire is free software: you can redistribute it and/or modify @@ -111,7 +111,6 @@ 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]; /* enum relations */ }; #define NAT_TLEV 0 @@ -132,6 +131,17 @@ enum relations { ALLIED }; +struct relatstr { + /* initial part must match struct empobj */ + signed ef_type: 8; + unsigned rel_seqno: 12; + unsigned rel_generation: 12; + int rel_uid; + time_t rel_timestamp; + /* end of part matching struct empobj */ + unsigned char rel_relate[MAXNOC]; /* enum relations */ +}; + /* * Number of updates contact lasts for various ways of making contact. * These are only useful with option LOSE_CONTACT, which implies @@ -182,6 +192,10 @@ struct rejectstr { #define putnat(p) ef_write(EF_NATION, (p)->nat_cnum, (p)) #define getnatp(n) ((struct natstr *)ef_ptr(EF_NATION, (n))) +#define getrelat(n, p) ef_read(EF_RELAT, (n), (p)) +#define putrelat(p) ef_write(EF_RELAT, (p)->rel_uid, (p)) +#define getrelatp(n) ((struct relatstr *)ef_ptr(EF_RELAT, (n))) + #define getcontact(n, p) ef_read(EF_CONTACT, (n), (p)) #define putcontact(p) ef_write(EF_CONTACT, (p)->con_uid, (p)) #define getcontactp(n) ((struct contactstr *)ef_ptr(EF_CONTACT, (n))) @@ -199,17 +213,14 @@ extern double techfact(int level, double mult); /* src/lib/common/nat.c */ extern char *cname(natid n); -extern char *relatename(struct natstr *np, natid other); extern char *natstate(struct natstr *np); -extern enum relations getrel(struct natstr *np, natid them); extern enum relations relations_with(natid, natid); extern char *relations_string(enum relations); extern int nat_accepts(natid, natid, enum rej_comm); extern int in_contact(natid, natid); extern void agecontact(struct natstr *np); extern int influx(struct natstr *np); -extern struct natstr *nat_reset(struct natstr *, natid, char *, char *, - enum nat_status); +extern void nat_reset(natid, char *, char *, enum nat_status); /* src/lib/subs/natsub.c */ extern int check_nat_name(char *, natid);