/*
* Empire - A multi-player, client/server Internet based war game.
- * Copyright (C) 1986-2004, Dave Pare, Jeff Bailey, Thomas Ruschak,
+ * Copyright (C) 1986-2006, Dave Pare, Jeff Bailey, Thomas Ruschak,
* Ken Stevens, Steve McClure
*
* This program is free software; you can redistribute it and/or modify
*
* ---
*
- * See the "LEGAL", "LICENSE", "CREDITS" and "README" files for all the
- * related information and legal notices. It is expected that any future
- * projects/authors will amend these files as needed.
+ * See files README, COPYING and CREDITS in the root of the source
+ * tree for related information and legal notices. It is expected
+ * that future projects/authors will amend these files as needed.
*
* ---
*
* Markus Armbruster, 2004
*/
-#ifndef _NSC_H_
-#define _NSC_H_
+#ifndef NSC_H
+#define NSC_H
#include <stddef.h>
#include "xy.h"
NSC_TIME, /* time_t */
NSC_FLOAT, /* float */
NSC_STRINGY, /* char[], zero-terminated string */
+ /* FIXME zero may be missing */
/* aliases, must match typedefs */
NSC_NATID = NSC_UCHAR /* nation id */
} nsc_type;
enum {
NSC_DEITY = bit(0), /* access restricted to deity */
- NSC_EXTRA = bit(1) /* computable from other selectors */
+ NSC_EXTRA = bit(1), /* computable from other selectors */
+ NSC_CONST = bit(2), /* field cannot be changed */
+ NSC_BITS = bit(3) /* value consists of flag bits */
};
typedef unsigned char nsc_flags;
NS_LIST, /* list of IDs */
NS_DIST, /* circular area */
NS_AREA, /* rectangular area */
- NS_EVERYTHING, /* everything */
+ NS_ALL, /* everything */
NS_XY, /* one sector area */
NS_GROUP /* group, i.e. fleet, wing, army */
} ns_seltype;
struct nscstr cond[NS_NCOND]; /* selection conditions */
};
+/*
+ * Symbol binding: associate NAME with VALUE.
+ */
+struct symbol {
+ int value;
+ char *name;
+};
+
/*
* Selector descriptor.
- * Value is at offset CA_OFF in the context object.
*/
struct castr {
packed_nsc_type ca_type; /* type of value */
nsc_flags ca_flags;
unsigned short ca_len; /* non-zero: is an array; #array elements */
- ptrdiff_t ca_off;
+ ptrdiff_t ca_off; /* offset of value in the context object */
char *ca_name;
+ int ca_table; /* referred table ID, or EF_BAD */
};
/* variables using the above */
+extern struct castr ichr_ca[];
+extern struct castr pchr_ca[];
extern struct castr sect_ca[];
+extern struct castr dchr_ca[];
extern struct castr ship_ca[];
+extern struct castr mchr_ca[];
extern struct castr plane_ca[];
+extern struct castr plchr_ca[];
extern struct castr land_ca[];
+extern struct castr lchr_ca[];
extern struct castr nuke_ca[];
-extern struct castr news_ca[];
-extern struct castr nat_ca[];
+extern struct castr nchr_ca[];
extern struct castr treaty_ca[];
-extern struct castr trade_ca[];
extern struct castr loan_ca[];
-extern struct castr genitem_ca[];
+extern struct castr news_ca[];
extern struct castr lost_ca[];
extern struct castr commodity_ca[];
+extern struct castr trade_ca[];
+extern struct castr nat_ca[];
+extern struct castr cou_ca[];
+extern struct castr realm_ca[];
+extern struct castr intrchr_ca[];
+extern struct castr rpt_ca[];
+extern struct castr empfile_ca[];
+extern struct castr symbol_ca[];
+extern struct symbol ship_chr_flags[];
+extern struct symbol plane_chr_flags[];
+extern struct symbol land_chr_flags[];
+extern struct symbol nuke_chr_flags[];
+extern struct symbol treaty_flags[];
+extern struct castr mdchr_ca[];
+extern struct symbol meta_type[];
+extern struct symbol meta_flags[];
+extern struct symbol missions[];
+extern struct symbol plane_flags[];
+extern struct symbol retreat_flags[];
+extern struct symbol nation_status[];
+extern struct symbol nation_flags[];
+extern struct symbol nation_relations[];
+extern struct symbol level[];
+extern struct symbol agreement_statuses[];
+extern struct symbol plague_stages[];
+extern struct symbol packing[];
+extern struct symbol resources[];
+extern struct symbol sector_navigation[];
/* src/lib/subs/nstr.c */
extern int nstr_comp(struct nscstr *np, int len, int type, char *str);
extern int nstr_coerce_val(struct valstr *, nsc_type, char *);
extern int nstr_exec(struct nscstr *, int, void *);
extern void nstr_exec_val(struct valstr *, natid, void *, nsc_type);
+extern char *symbol_by_value(int, struct symbol *);
-#endif /* _NSC_H_ */
+#endif