mirror of
https://github.com/jmarshall23/Hellfire.git
synced 2026-08-12 07:50:53 +02:00
235 lines
6.2 KiB
C++
235 lines
6.2 KiB
C++
/*-----------------------------------------------------------------------**
|
|
** Diablo
|
|
**
|
|
** Constants and Variables
|
|
**
|
|
** (C)1995 Condor, Inc. All rights reserved.
|
|
**-----------------------------------------------------------------------**
|
|
** $Header: /Diablo/GENDUNG.H 1 1/22/97 2:06p Dgartner $
|
|
**-----------------------------------------------------------------------*/
|
|
|
|
/*-----------------------------------------------------------------------**
|
|
** Defines
|
|
**-----------------------------------------------------------------------*/
|
|
|
|
#define LVLLENGTH 4
|
|
|
|
#define TLVL_START 0
|
|
#define LVL1_START 1
|
|
#define LVL2_START LVL1_START+LVLLENGTH
|
|
#define LVL3_START LVL2_START+LVLLENGTH
|
|
#define LVL4_START LVL3_START+LVLLENGTH
|
|
//HellFire JKE 7/29
|
|
#define LVL5_START LVL4_START+LVLLENGTH
|
|
#define CRYPTSTART 21
|
|
#define CRYPTEND 24
|
|
#define HIVESTART 17
|
|
#define HIVEEND 20
|
|
|
|
//#define NUMLEVELS ((4*LVLLENGTH)+1)
|
|
#define NUMLEVELS ((6*LVLLENGTH)+1) //HellFire JKE 7/29
|
|
#define NUMSLEVELS 10
|
|
|
|
#define DIRTEDGE 32
|
|
#define DIRTEDGED2 (DIRTEDGE/2)
|
|
#define DMAXX (80+DIRTEDGE)
|
|
#define DMAXY (80+DIRTEDGE)
|
|
#define MAXDUNX DMAXX
|
|
#define MAXDUNY DMAXY
|
|
|
|
#define MDMAXX ((DMAXX-DIRTEDGE)/2) // Mega tile dungeon max (max div 2)
|
|
#define MDMAXY ((DMAXY-DIRTEDGE)/2)
|
|
|
|
#define MAXTILES 2048
|
|
|
|
#define MAXMREND 128
|
|
|
|
#define NUMSPEEDCELS 64
|
|
#define SPEEDSIZE NUMSPEEDCELS*16384
|
|
|
|
#define MAXMICRO 2048
|
|
|
|
#define MAXDIRT 32
|
|
|
|
#define NODRAW 0
|
|
#define VIEWDRAW 1
|
|
#define FULLDRAW 0xff
|
|
|
|
#define SCRL_NONE 0
|
|
#define SCRL_U 1
|
|
#define SCRL_UR 2
|
|
#define SCRL_R 3
|
|
#define SCRL_DR 4
|
|
#define SCRL_D 5
|
|
#define SCRL_DL 6
|
|
#define SCRL_L 7
|
|
#define SCRL_UL 8
|
|
|
|
// bFlags bits
|
|
#define BFLAG_AUTOMAP 0x80
|
|
#define BFLAG_VISIBLE 0x40
|
|
#define BFLAG_PLRLR 0x20
|
|
#define BFLAG_MONSTLR 0x10
|
|
#define BFLAG_SETPC 0x08
|
|
#define BFLAG_DEADPLR 0x04
|
|
|
|
// Set Piece bit used in all drlg's
|
|
#define SETP_BIT 0x80 // Non changeable set piece bit
|
|
|
|
#define BFLAG_MONSTACTIVE 0x02
|
|
#define BFLAG_MISSILE 0x01
|
|
|
|
#define BFMASK_AUTOMAP 0x7f
|
|
#define BFMASK_VISIBLE 0xbf
|
|
#define BFMASK_PLRLR 0xdf
|
|
#define BFMASK_MONSTLR 0xef
|
|
#define BFMASK_SETPC 0xf7
|
|
//#define BFMASK_UNUSED 0xfb
|
|
//#define BFMASK_UNUSED 0xfd
|
|
#define BFMASK_MISSILE 0xfe
|
|
|
|
#define WTYPE_NONE 0
|
|
#define WTYPE_LEFT 1
|
|
#define WTYPE_RIGHT 2
|
|
#define WTYPE_ULC 3
|
|
#define WTYPE_LRC 4
|
|
|
|
#define D_NORMAL 0
|
|
#define D_NIGHTMARE 1
|
|
#define D_HELL 2
|
|
|
|
/*-----------------------------------------------------------------------**
|
|
** Macros
|
|
**-----------------------------------------------------------------------*/
|
|
#define MegaToMini(M) ((M << 1) + DIRTEDGED2)
|
|
#define MiniToMega(m) ((m - DIRTEDGED2) >> 1)
|
|
|
|
/*-----------------------------------------------------------------------**
|
|
** Structures
|
|
**-----------------------------------------------------------------------*/
|
|
|
|
typedef struct {
|
|
byte strig;
|
|
byte s1;
|
|
byte s2;
|
|
byte s3;
|
|
byte nv1;
|
|
byte nv2;
|
|
byte nv3;
|
|
} ShadowStruct;
|
|
|
|
typedef struct {
|
|
int _sxoff; // Smooth scroll x,y offsets
|
|
int _syoff;
|
|
int _sdx; // Delta between plr and view x,y
|
|
int _sdy;
|
|
int _sdir; // Direction
|
|
} ScrollStruct;
|
|
|
|
typedef struct THEME_LOC {
|
|
int x; //Upper left coord
|
|
int y; //Upper left coord
|
|
int ttval; //Transparency value
|
|
int width; //Room width
|
|
int height; //Room height
|
|
} THEME_LOC;
|
|
|
|
/*-----------------------------------------------------------------------**
|
|
** Externs
|
|
**-----------------------------------------------------------------------*/
|
|
|
|
extern byte dungeon[MDMAXX][MDMAXY];
|
|
extern byte pdungeon[MDMAXX][MDMAXY];
|
|
extern byte dflags[MDMAXX][MDMAXY];
|
|
|
|
extern int setpc_x, setpc_y, setpc_w, setpc_h;
|
|
extern byte *pSetPiece;
|
|
extern BOOL setloadflag;
|
|
|
|
extern "C" {
|
|
extern BYTE *pDungeonCels;
|
|
extern BYTE *pSpeedCels;
|
|
extern long microoffset[MAXMREND][16];
|
|
extern byte nWTypeTable[MAXTILES+1];
|
|
}
|
|
|
|
extern BYTE *pSpecialCels;
|
|
extern BYTE *pMegaTiles;
|
|
extern BYTE *pMiniTiles;
|
|
|
|
extern BYTE nBlockTable[MAXTILES+1];
|
|
extern BYTE nSolidTable[MAXTILES+1];
|
|
extern BYTE nTransTable[MAXTILES+1];
|
|
extern BYTE nMissileTable[MAXTILES+1];
|
|
extern BYTE nTrapTable[MAXTILES+1];
|
|
|
|
extern int dminx, dminy, dmaxx, dmaxy;
|
|
|
|
extern int gnDifficulty;
|
|
|
|
extern BYTE currlevel;
|
|
extern BYTE leveltype;
|
|
extern BYTE setlevel;
|
|
extern BYTE setlvlnum;
|
|
extern BYTE setlvltype;
|
|
|
|
extern int ViewX, ViewY;
|
|
extern int ViewDX, ViewDY;
|
|
extern int ViewBX, ViewBY;
|
|
extern ScrollStruct ScrollInfo;
|
|
|
|
extern int LvlViewX, LvlViewY;
|
|
|
|
extern int btmbx, btmby;
|
|
extern int btmdx, btmdy;
|
|
|
|
extern int MicroTileLen;
|
|
|
|
extern char TransVal;
|
|
extern BYTE TransList[256];
|
|
|
|
extern int dPiece[MAXDUNX][MAXDUNY]; // Tile #
|
|
|
|
typedef struct { WORD mt[16]; } MICROS;
|
|
extern MICROS dMT[MAXDUNX][MAXDUNY]; // Micro Tiles
|
|
extern MICROS dMT2[MAXDUNX*MAXDUNY];
|
|
|
|
extern char dTransVal[MAXDUNX][MAXDUNY]; // Transparent active value
|
|
extern char dLight[MAXDUNX][MAXDUNY]; // Current light value
|
|
extern char dSaveLight[MAXDUNX][MAXDUNY]; // Static light value
|
|
extern char dFlags[MAXDUNX][MAXDUNY]; // Flags for Solid collision, etc.
|
|
extern char dPlayer[MAXDUNX][MAXDUNY]; // Player
|
|
extern int dMonster[MAXDUNX][MAXDUNY]; // Monster
|
|
extern char dDead[MAXDUNX][MAXDUNY]; // Dead plr/monster
|
|
extern char dObject[MAXDUNX][MAXDUNY]; // Objects
|
|
extern char dItem[MAXDUNX][MAXDUNY]; // Items
|
|
extern char dMissile[MAXDUNX][MAXDUNY]; // Missiles (0 = none, # = missile, -1 = two or more)
|
|
extern char dSpecial[MAXDUNX][MAXDUNY]; // Second layer of tiling
|
|
extern int themeCount;
|
|
extern THEME_LOC themeLoc[50];
|
|
|
|
/*-----------------------------------------------------------------------**
|
|
** Prototypes
|
|
**-----------------------------------------------------------------------*/
|
|
|
|
int CalcRot(int x, int y);
|
|
void SetDungeonMicros();
|
|
void FillSolidBlockTbls ();
|
|
|
|
void DRLG_InitTrans();
|
|
void DRLG_MRectTrans(int, int, int, int);
|
|
void DRLG_MCopyTrans(int, int, int, int, BOOL, BOOL, BOOL, BOOL);
|
|
void DRLG_RectTrans(int, int, int, int);
|
|
void DRLG_CopyTrans(int, int, int, int);
|
|
void DRLG_ListTrans(int, byte *);
|
|
void DRLG_AreaTrans(int, byte *);
|
|
void DRLG_InitSetPC();
|
|
void DRLG_SetPC();
|
|
void Make_SetPC(int x, int y, int w, int h);
|
|
void DrawDungMiniMap(unsigned char floor);
|
|
BOOL DRLG_WillThemeRoomFit(int, int, int, int, int, int *, int *);
|
|
void DRLG_CreateThemeRoom(int);
|
|
void DRLG_PlaceThemeRooms(int, int, int, int, BOOL);
|
|
void DRLG_HoldThemeRooms();
|
|
BOOL SkipThemeRoom(int, int);
|