167 lines
5.1 KiB
C
167 lines
5.1 KiB
C
/*
|
|
* Empire - A multi-player, client/server Internet based war game.
|
|
* Copyright (C) 1986-2000, Dave Pare, Jeff Bailey, Thomas Ruschak,
|
|
* Ken Stevens, Steve McClure
|
|
*
|
|
* This program 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
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* 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
|
|
*
|
|
* ---
|
|
*
|
|
* 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.
|
|
*
|
|
* ---
|
|
*
|
|
* nsc.h: Definitions for Empire conditionals
|
|
*
|
|
* Known contributors to this file:
|
|
* Dave Pare, 1989
|
|
*/
|
|
|
|
#ifndef _NSC_H_
|
|
#define _NSC_H_
|
|
|
|
#include "prototype.h"
|
|
#include "xy.h"
|
|
|
|
#define NS_LSIZE 128
|
|
#define NS_NCOND 16
|
|
|
|
struct nscstr {
|
|
long fld1; /* first commodity or number */
|
|
long fld2; /* second commodity or number */
|
|
int oper; /* required relationship operator */
|
|
};
|
|
|
|
struct nstr_sect {
|
|
coord x, y; /* current x-y */
|
|
coord dx, dy; /* accumlated x,y travel */
|
|
int id; /* return value of sctoff */
|
|
int type; /* type of query */
|
|
int curdist; /* dist query: current range */
|
|
struct range range; /* area of coverage */
|
|
int dist; /* dist query: range */
|
|
coord cx, cy; /* dist query: center x-y */
|
|
int (*read) (); /* read function */
|
|
int ncond; /* # of selection conditions */
|
|
struct nscstr cond[NS_NCOND]; /* selection conditions */
|
|
};
|
|
|
|
struct nstr_item {
|
|
int cur; /* current item */
|
|
int sel; /* selection type */
|
|
int type; /* item type being selected */
|
|
int curdist; /* if NS_DIST, current item's dist */
|
|
struct range range; /* NS_AREA/NS_DIST: range selector */
|
|
int dist; /* NS_DIST: distance selector */
|
|
coord cx, cy; /* NS_DIST: center x-y, NS_XY: xy */
|
|
int group; /* NS_GROUP: fleet/wing match */
|
|
int size; /* NS_LIST: size of list */
|
|
int index; /* NS_LIST: index */
|
|
int list[NS_LSIZE]; /* NS_LIST: item list */
|
|
int (*read) (); /* read function */
|
|
int flags; /* EFF_ flags */
|
|
int ncond; /* # of selection conditions */
|
|
struct nscstr cond[NS_NCOND]; /* selection conditions */
|
|
};
|
|
|
|
#define NS_UNDEF 0
|
|
#define NS_LIST 1
|
|
#define NS_DIST 2
|
|
#define NS_AREA 3
|
|
#define NS_ALL 4
|
|
#define NS_XY 5
|
|
#define NS_GROUP 6
|
|
|
|
/*
|
|
* looks something like this:
|
|
* D: only deity can query on this field
|
|
* R: round this value to the nearest 10 if not owner
|
|
* T: type of pointer.
|
|
* C: catagory of value.
|
|
* V: value.
|
|
*
|
|
* 22 2 1 1 1
|
|
* 32 0 8 6 2 8 4 0
|
|
* xxxx xxxx xxxx xxxx xxxx xxxx
|
|
* DRTT TTCC VVVV VVVV VVVV VVVV
|
|
*/
|
|
|
|
/*
|
|
* catagories
|
|
*/
|
|
#define NSC_VAL (0) /* normal number */
|
|
#define NSC_VAR (1<<16) /* is a vtype */
|
|
#define NSC_OFF (2<<16) /* is an offset */
|
|
#define NSC_CMASK (3<<16)
|
|
|
|
/*
|
|
* how to interpret "offset" fields
|
|
*/
|
|
#define NSC_CHAR (1<<18) /* pointer to s_char */
|
|
#define NSC_UCHAR (2<<18) /* pointer to uchar */
|
|
#define NSC_SHORT (3<<18) /* pointer to short */
|
|
#define NSC_USHORT (4<<18) /* pointer to unsigned short */
|
|
#define NSC_INT (5<<18) /* pointer to int */
|
|
#define NSC_LONG (6<<18) /* pointer to long */
|
|
#define NSC_XCOORD (7<<18) /* pointer to short that needs x conversion */
|
|
#define NSC_YCOORD (8<<18) /* pointer to short that needs y conversion */
|
|
#define NSC_FLOAT (9<<18) /* pointer to float */
|
|
#define NSC_CHARP (10<<18) /* pointer to string pointer */
|
|
#define NSC_TIME (11<<18) /* pointer to time_t */
|
|
#define NSC_TMASK (15<<18)
|
|
|
|
#define NSC_NATID NSC_UCHAR /* change if natid typedef changes */
|
|
|
|
#define NSC_MASK (0xffff0000)
|
|
|
|
#define NSC_ROUND (1<<22)
|
|
#define NSC_DEITY (1<<23)
|
|
|
|
struct castr {
|
|
long ca_code; /* encoded form */
|
|
s_char *ca_name; /* name used for matches */
|
|
u_short ca_len; /* Used for arrays */
|
|
long ca_edv; /* which commands is this field visible to? */
|
|
};
|
|
|
|
/* variables using the above */
|
|
|
|
extern struct castr var_ca[];
|
|
extern struct castr sect_ca[];
|
|
extern struct castr ship_ca[];
|
|
extern struct castr plane_ca[];
|
|
extern struct castr land_ca[];
|
|
extern struct castr nuke_ca[];
|
|
extern struct castr news_ca[];
|
|
extern struct castr nat_ca[];
|
|
extern struct castr treaty_ca[];
|
|
extern struct castr trade_ca[];
|
|
extern struct castr loan_ca[];
|
|
extern struct castr genitem_ca[];
|
|
extern struct castr map_ca[];
|
|
extern struct castr bmp_ca[];
|
|
extern struct castr ca[];
|
|
extern struct castr commodity_ca[];
|
|
|
|
/* src/lib/subs/nstr.c */
|
|
extern s_char *nstr_comp(struct nscstr *, int *, int, s_char *);
|
|
extern int encode(register s_char *, long *, int);
|
|
|
|
|
|
extern s_char *decodep _PROTO((register long code, register void *addr));
|
|
|
|
#endif /* _NSC_H_ */
|