X-Git-Url: http://git.pond.sub.org/?p=empserver;a=blobdiff_plain;f=include%2Fempobj.h;h=331cf3d248e4c8bfb0ca202b8451c6db7b4af213;hp=546ef46bde8b803206f9ed8bda1253f88c0a18ce;hb=HEAD;hpb=e42053d928a9757f2fc2b9fa58e08be29f963e28 diff --git a/include/empobj.h b/include/empobj.h index 546ef46bd..331cf3d24 100644 --- a/include/empobj.h +++ b/include/empobj.h @@ -1,11 +1,11 @@ /* * Empire - A multi-player, client/server Internet based war game. - * Copyright (C) 1986-2006, Dave Pare, Jeff Bailey, Thomas Ruschak, - * Ken Stevens, Steve McClure + * Copyright (C) 1986-2021, Dave Pare, Jeff Bailey, Thomas Ruschak, + * Ken Stevens, Steve McClure, Markus Armbruster * - * This program is free software; you can redistribute it and/or modify + * Empire is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or + * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, @@ -14,8 +14,7 @@ * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * along with this program. If not, see . * * --- * @@ -26,64 +25,76 @@ * --- * * empobj.h: General empire objects. - * + * * Known contributors to this file: * Ron Koenderink, 2006 - * Markus Armbruster, 2006 + * Markus Armbruster, 2006-2014 */ #ifndef EMPOBJ_H #define EMPOBJ_H #include "commodity.h" +#include "game.h" #include "land.h" #include "loan.h" #include "lost.h" #include "nat.h" -#include "news.h" #include "nuke.h" #include "plane.h" #include "sect.h" #include "ship.h" #include "trade.h" -#include "treaty.h" #include "types.h" struct empobj { - short ef_type; /* is always valid */ - natid own; /* is valid if EFF_OWNER is set in table def. */ - short uid; - coord x; /* is valid if EFF_XY is set in table def. */ - coord y; /* is valid if EFF_XY is set in table def. */ + /* + * initial part must match struct emptypedstr + * valid if EFF_TYPED is set in table's flags + */ + signed ef_type: 8; + unsigned seqno: 12; + unsigned generation: 12; + int uid; + time_t timestamp; + /* end of part matching struct emptypedstr */ + natid own; /* valid if EFF_OWNER is in table's flags */ + coord x; /* valid if EFF_XY is in table's flags */ + coord y; /* valid if EFF_XY is in table's flags */ + /* remaining are valid for sectors and units */ signed char type; signed char effic; signed char mobil; unsigned char off; - short tech; - char group; /* is valid if EFF_GROUP is set in table def. */ + /* remaining are valid for units */ + short tech; + char group; /* valid if EFF_GROUP is in table's flags */ coord opx, opy; short mission; short radius; }; union empobj_storage { - short ef_type; struct empobj gen; struct comstr comm; + struct gamestr game; struct lndstr land; struct lonstr loan; struct loststr lost; - struct natstr nat; - struct nwsstr news; + struct natstr nat; struct nukstr nuke; struct plnstr plane; struct realmstr realm; struct sctstr sect; struct shpstr ship; struct trdstr trade; - struct trtstr treaty; }; -extern char * probjname(union empobj_storage *gp); -#endif +#define get_empobj(type, n, p) ef_read((type), (n), (p)) +#define put_empobj(type, n, p) ef_write((type), (n), (p)) +#define get_empobjp(type, n) ((struct empobj *)ef_ptr((type), (n))) +extern char *empobj_chr_name(struct empobj *gp); +extern int empobj_in_use(int, void *); + +#endif