*** empty log message ***
This commit is contained in:
246
include/sp_lev.h
Normal file
246
include/sp_lev.h
Normal file
@@ -0,0 +1,246 @@
|
||||
/* SCCS Id: @(#)sp_lev.h 3.3 96/05/08 */
|
||||
/* Copyright (c) 1989 by Jean-Christophe Collet */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
#ifndef SP_LEV_H
|
||||
#define SP_LEV_H
|
||||
|
||||
/* wall directions */
|
||||
#define W_NORTH 1
|
||||
#define W_SOUTH 2
|
||||
#define W_EAST 4
|
||||
#define W_WEST 8
|
||||
#define W_ANY (W_NORTH|W_SOUTH|W_EAST|W_WEST)
|
||||
|
||||
/* MAP limits */
|
||||
#define MAP_X_LIM 76
|
||||
#define MAP_Y_LIM 21
|
||||
|
||||
/* Per level flags */
|
||||
#define NOTELEPORT 1
|
||||
#define HARDFLOOR 2
|
||||
#define NOMMAP 4
|
||||
#define SHORTSIGHTED 8
|
||||
#define ARBOREAL 16
|
||||
|
||||
/* special level types */
|
||||
#define SP_LEV_ROOMS 1
|
||||
#define SP_LEV_MAZE 2
|
||||
|
||||
/*
|
||||
* Structures manipulated by the special levels loader & compiler
|
||||
*/
|
||||
|
||||
typedef union str_or_len {
|
||||
char *str;
|
||||
int len;
|
||||
} Str_or_Len;
|
||||
|
||||
typedef struct {
|
||||
boolean init_present, padding;
|
||||
char fg, bg;
|
||||
boolean smoothed, joined;
|
||||
xchar lit, walled;
|
||||
} lev_init;
|
||||
|
||||
typedef struct {
|
||||
xchar x, y, mask;
|
||||
} door;
|
||||
|
||||
typedef struct {
|
||||
xchar wall, pos, secret, mask;
|
||||
} room_door;
|
||||
|
||||
typedef struct {
|
||||
xchar x, y, chance, type;
|
||||
} trap;
|
||||
|
||||
typedef struct {
|
||||
Str_or_Len name, appear_as;
|
||||
short id;
|
||||
aligntyp align;
|
||||
xchar x, y, chance, class, appear;
|
||||
schar peaceful, asleep;
|
||||
} monster;
|
||||
|
||||
typedef struct {
|
||||
Str_or_Len name;
|
||||
int corpsenm;
|
||||
short id, spe;
|
||||
xchar x, y, chance, class, containment;
|
||||
schar curse_state;
|
||||
} object;
|
||||
|
||||
typedef struct {
|
||||
xchar x, y;
|
||||
aligntyp align;
|
||||
xchar shrine;
|
||||
} altar;
|
||||
|
||||
typedef struct {
|
||||
xchar x, y, dir, db_open;
|
||||
} drawbridge;
|
||||
|
||||
typedef struct {
|
||||
xchar x, y, dir;
|
||||
} walk;
|
||||
|
||||
typedef struct {
|
||||
xchar x1, y1, x2, y2;
|
||||
} digpos;
|
||||
|
||||
typedef struct {
|
||||
xchar x, y, up;
|
||||
} lad;
|
||||
|
||||
typedef struct {
|
||||
xchar x, y, up;
|
||||
} stair;
|
||||
|
||||
typedef struct {
|
||||
xchar x1, y1, x2, y2;
|
||||
xchar rtype, rlit, rirreg;
|
||||
} region;
|
||||
|
||||
/* values for rtype are defined in dungeon.h */
|
||||
typedef struct {
|
||||
struct { xchar x1, y1, x2, y2; } inarea;
|
||||
struct { xchar x1, y1, x2, y2; } delarea;
|
||||
boolean in_islev, del_islev;
|
||||
xchar rtype, padding;
|
||||
Str_or_Len rname;
|
||||
} lev_region;
|
||||
|
||||
typedef struct {
|
||||
xchar x, y;
|
||||
int amount;
|
||||
} gold;
|
||||
|
||||
typedef struct {
|
||||
xchar x, y;
|
||||
Str_or_Len engr;
|
||||
xchar etype;
|
||||
} engraving;
|
||||
|
||||
typedef struct {
|
||||
xchar x, y;
|
||||
} fountain;
|
||||
|
||||
typedef struct {
|
||||
xchar x, y;
|
||||
} sink;
|
||||
|
||||
typedef struct {
|
||||
xchar x, y;
|
||||
} pool;
|
||||
|
||||
typedef struct {
|
||||
char halign, valign;
|
||||
char xsize, ysize;
|
||||
char **map;
|
||||
char nrobjects;
|
||||
char *robjects;
|
||||
char nloc;
|
||||
char *rloc_x;
|
||||
char *rloc_y;
|
||||
char nrmonst;
|
||||
char *rmonst;
|
||||
char nreg;
|
||||
region **regions;
|
||||
char nlreg;
|
||||
lev_region **lregions;
|
||||
char ndoor;
|
||||
door **doors;
|
||||
char ntrap;
|
||||
trap **traps;
|
||||
char nmonster;
|
||||
monster **monsters;
|
||||
char nobject;
|
||||
object **objects;
|
||||
char ndrawbridge;
|
||||
drawbridge **drawbridges;
|
||||
char nwalk;
|
||||
walk **walks;
|
||||
char ndig;
|
||||
digpos **digs;
|
||||
char npass;
|
||||
digpos **passs;
|
||||
char nlad;
|
||||
lad **lads;
|
||||
char nstair;
|
||||
stair **stairs;
|
||||
char naltar;
|
||||
altar **altars;
|
||||
char ngold;
|
||||
gold **golds;
|
||||
char nengraving;
|
||||
engraving **engravings;
|
||||
char nfountain;
|
||||
fountain **fountains;
|
||||
} mazepart;
|
||||
|
||||
typedef struct {
|
||||
long flags;
|
||||
lev_init init_lev;
|
||||
schar filling;
|
||||
char numpart;
|
||||
mazepart **parts;
|
||||
} specialmaze;
|
||||
|
||||
typedef struct _room {
|
||||
char *name;
|
||||
char *parent;
|
||||
xchar x, y, w, h;
|
||||
xchar xalign, yalign;
|
||||
xchar rtype, chance, rlit, filled;
|
||||
char ndoor;
|
||||
room_door **doors;
|
||||
char ntrap;
|
||||
trap **traps;
|
||||
char nmonster;
|
||||
monster **monsters;
|
||||
char nobject;
|
||||
object **objects;
|
||||
char naltar;
|
||||
altar **altars;
|
||||
char nstair;
|
||||
stair **stairs;
|
||||
char ngold;
|
||||
gold **golds;
|
||||
char nengraving;
|
||||
engraving **engravings;
|
||||
char nfountain;
|
||||
fountain **fountains;
|
||||
char nsink;
|
||||
sink **sinks;
|
||||
char npool;
|
||||
pool **pools;
|
||||
/* These three fields are only used when loading the level... */
|
||||
int nsubroom;
|
||||
struct _room *subrooms[MAX_SUBROOMS];
|
||||
struct mkroom *mkr;
|
||||
} room;
|
||||
|
||||
typedef struct {
|
||||
struct {
|
||||
xchar room;
|
||||
xchar wall;
|
||||
xchar door;
|
||||
} src, dest;
|
||||
} corridor;
|
||||
|
||||
/* used only by lev_comp */
|
||||
typedef struct {
|
||||
long flags;
|
||||
lev_init init_lev;
|
||||
char nrobjects;
|
||||
char *robjects;
|
||||
char nrmonst;
|
||||
char *rmonst;
|
||||
xchar nroom;
|
||||
room **rooms;
|
||||
xchar ncorr;
|
||||
corridor **corrs;
|
||||
} splev;
|
||||
|
||||
#endif /* SP_LEV_H */
|
||||
Reference in New Issue
Block a user