/*
* Empire - A multi-player, client/server Internet based war game.
- * Copyright (C) 1986-2008, 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,
* 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 <http://www.gnu.org/licenses/>.
*
* ---
*
* ---
*
* empobj.h: General empire objects.
- *
+ *
* Known contributors to this file:
* Ron Koenderink, 2006
- * Markus Armbruster, 2006
+ * Markus Armbruster, 2006-2014
*/
#ifndef EMPOBJ_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. */
- signed char type; /* is valid for sectors and units */
- /* remaining are valid for units */
+ /*
+ * 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;
};
-struct empobj_chr;
+#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 *obj_nameof(struct empobj *gp);
-extern struct empobj *get_empobjp(int type, int id);
-extern int put_empobj(struct empobj *gp);
-extern struct empobj_chr *get_empobj_chr(struct empobj *gp);
-extern char *emp_obj_chr_name(struct empobj *gp);
-extern int get_empobj_mob_max(int type);
+extern char *empobj_chr_name(struct empobj *gp);
+extern int empobj_in_use(int, void *);
#endif