|
|
|
|
/**
|
|
|
|
|
* @file structs.h
|
|
|
|
|
*
|
|
|
|
|
* Various global structures.
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
DEVILUTION_BEGIN_NAMESPACE
|
|
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////
|
|
|
|
|
// textdat
|
|
|
|
|
//////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
typedef struct TextDataStruct {
|
|
|
|
|
const char *txtstr;
|
|
|
|
|
int scrlltxt;
|
|
|
|
|
int txtspd; /* calculated dynamically, 01/23/21 */
|
|
|
|
|
int sfxnr;
|
|
|
|
|
} TextDataStruct;
|
|
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////
|
|
|
|
|
// effects/sound
|
|
|
|
|
//////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
typedef struct TSnd {
|
|
|
|
|
const char *sound_path;
|
|
|
|
|
SoundSample *DSB;
|
|
|
|
|
int start_tc;
|
|
|
|
|
} TSnd;
|
|
|
|
|
|
|
|
|
|
typedef struct TSFX {
|
|
|
|
|
unsigned char bFlags;
|
|
|
|
|
const char *pszName;
|
|
|
|
|
TSnd *pSnd;
|
|
|
|
|
} TSFX;
|
|
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////
|
|
|
|
|
// monster
|
|
|
|
|
//////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
typedef struct AnimStruct {
|
|
|
|
|
BYTE *CMem;
|
|
|
|
|
BYTE *Data[8];
|
|
|
|
|
int Frames;
|
|
|
|
|
int Rate;
|
|
|
|
|
} AnimStruct;
|
|
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////
|
|
|
|
|
// objects
|
|
|
|
|
//////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
typedef struct ObjDataStruct {
|
|
|
|
|
char oload;
|
|
|
|
|
char ofindex;
|
|
|
|
|
char ominlvl;
|
|
|
|
|
char omaxlvl;
|
|
|
|
|
char olvltype;
|
|
|
|
|
char otheme;
|
|
|
|
|
char oquest;
|
|
|
|
|
int oAnimFlag;
|
|
|
|
|
int oAnimDelay; // Tick length of each frame in the current animation
|
|
|
|
|
int oAnimLen; // Number of frames in current animation
|
|
|
|
|
int oAnimWidth;
|
|
|
|
|
BOOL oSolidFlag;
|
|
|
|
|
BOOL oMissFlag;
|
|
|
|
|
BOOL oLightFlag;
|
|
|
|
|
char oBreak;
|
|
|
|
|
char oSelFlag;
|
|
|
|
|
BOOL oTrapFlag;
|
|
|
|
|
} ObjDataStruct;
|
|
|
|
|
|
|
|
|
|
typedef struct ObjectStruct {
|
|
|
|
|
int _otype;
|
|
|
|
|
int _ox;
|
|
|
|
|
int _oy;
|
|
|
|
|
bool _oLight;
|
|
|
|
|
Uint32 _oAnimFlag;
|
|
|
|
|
unsigned char *_oAnimData;
|
|
|
|
|
int _oAnimDelay; // Tick length of each frame in the current animation
|
|
|
|
|
int _oAnimCnt; // Increases by one each game tick, counting how close we are to _pAnimDelay
|
|
|
|
|
int _oAnimLen; // Number of frames in current animation
|
|
|
|
|
int _oAnimFrame; // Current frame of animation.
|
|
|
|
|
int _oAnimWidth;
|
|
|
|
|
int _oAnimWidth2;
|
|
|
|
|
BOOL _oDelFlag;
|
|
|
|
|
char _oBreak; // check
|
|
|
|
|
BOOL _oSolidFlag;
|
|
|
|
|
BOOL _oMissFlag;
|
|
|
|
|
char _oSelFlag; // check
|
|
|
|
|
BOOL _oPreFlag;
|
|
|
|
|
BOOL _oTrapFlag;
|
|
|
|
|
BOOL _oDoorFlag;
|
|
|
|
|
int _olid;
|
|
|
|
|
int _oRndSeed;
|
|
|
|
|
int _oVar1;
|
|
|
|
|
int _oVar2;
|
|
|
|
|
int _oVar3;
|
|
|
|
|
int _oVar4;
|
|
|
|
|
int _oVar5;
|
|
|
|
|
int _oVar6;
|
|
|
|
|
_speech_id _oVar7;
|
|
|
|
|
int _oVar8;
|
|
|
|
|
} ObjectStruct;
|
|
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////
|
|
|
|
|
// portal
|
|
|
|
|
//////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
typedef struct PortalStruct {
|
|
|
|
|
BOOL open;
|
|
|
|
|
int x;
|
|
|
|
|
int y;
|
|
|
|
|
int level;
|
|
|
|
|
int ltype;
|
|
|
|
|
BOOL setlvl;
|
|
|
|
|
} PortalStruct;
|
|
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////
|
|
|
|
|
// gamemenu/gmenu
|
|
|
|
|
//////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
// TPDEF PTR FCN VOID TMenuFcn
|
|
|
|
|
|
|
|
|
|
typedef struct TMenuItem {
|
|
|
|
|
DWORD dwFlags;
|
|
|
|
|
const char *pszStr;
|
|
|
|
|
void (*fnMenu)(BOOL); /* fix, should have one arg */
|
|
|
|
|
} TMenuItem;
|
|
|
|
|
|
|
|
|
|
// TPDEF PTR FCN VOID TMenuUpdateFcn
|
|
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////
|
|
|
|
|
// spells
|
|
|
|
|
//////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
typedef struct SpellData {
|
|
|
|
|
unsigned char sName;
|
|
|
|
|
unsigned char sManaCost;
|
|
|
|
|
unsigned char sType;
|
|
|
|
|
const char *sNameText;
|
|
|
|
|
const char *sSkillText;
|
|
|
|
|
int sBookLvl;
|
|
|
|
|
int sStaffLvl;
|
|
|
|
|
BOOL sTargeted;
|
|
|
|
|
BOOL sTownSpell;
|
|
|
|
|
int sMinInt;
|
|
|
|
|
unsigned char sSFX;
|
|
|
|
|
unsigned char sMissiles[3];
|
|
|
|
|
unsigned char sManaAdj;
|
|
|
|
|
unsigned char sMinMana;
|
|
|
|
|
int sStaffMin;
|
|
|
|
|
int sStaffMax;
|
|
|
|
|
int sBookCost;
|
|
|
|
|
int sStaffCost;
|
|
|
|
|
} SpellData;
|
|
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////
|
|
|
|
|
// drlg
|
|
|
|
|
//////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
typedef struct ShadowStruct {
|
|
|
|
|
unsigned char strig;
|
|
|
|
|
unsigned char s1;
|
|
|
|
|
unsigned char s2;
|
|
|
|
|
unsigned char s3;
|
|
|
|
|
unsigned char nv1;
|
|
|
|
|
unsigned char nv2;
|
|
|
|
|
unsigned char nv3;
|
|
|
|
|
} ShadowStruct;
|
|
|
|
|
|
|
|
|
|
typedef struct HALLNODE {
|
|
|
|
|
int nHallx1;
|
|
|
|
|
int nHally1;
|
|
|
|
|
int nHallx2;
|
|
|
|
|
int nHally2;
|
|
|
|
|
int nHalldir;
|
|
|
|
|
struct HALLNODE *pNext;
|
|
|
|
|
} HALLNODE;
|
|
|
|
|
|
|
|
|
|
typedef struct ROOMNODE {
|
|
|
|
|
int nRoomx1;
|
|
|
|
|
int nRoomy1;
|
|
|
|
|
int nRoomx2;
|
|
|
|
|
int nRoomy2;
|
|
|
|
|
int nRoomDest;
|
|
|
|
|
} ROOMNODE;
|
|
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////
|
|
|
|
|
// themes
|
|
|
|
|
//////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
typedef struct ThemeStruct {
|
|
|
|
|
char ttype; /* aligned 4 */
|
|
|
|
|
int ttval;
|
|
|
|
|
} ThemeStruct;
|
|
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////
|
|
|
|
|
// inv
|
|
|
|
|
//////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
typedef struct InvXY {
|
|
|
|
|
int X;
|
|
|
|
|
int Y;
|
|
|
|
|
} InvXY;
|
|
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////
|
|
|
|
|
// diabloui
|
|
|
|
|
//////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
// TPDEF PTR FCN VOID PLAYSND
|
|
|
|
|
|
|
|
|
|
typedef struct _uidefaultstats {
|
|
|
|
|
WORD strength;
|
|
|
|
|
WORD magic;
|
|
|
|
|
WORD dexterity;
|
|
|
|
|
WORD vitality;
|
|
|
|
|
} _uidefaultstats;
|
|
|
|
|
|
|
|
|
|
typedef struct _uiheroinfo {
|
|
|
|
|
struct _uiheroinfo *next;
|
|
|
|
|
char name[16];
|
|
|
|
|
WORD level;
|
|
|
|
|
BYTE heroclass;
|
|
|
|
|
BYTE herorank;
|
|
|
|
|
WORD strength;
|
|
|
|
|
WORD magic;
|
|
|
|
|
WORD dexterity;
|
|
|
|
|
WORD vitality;
|
|
|
|
|
int gold;
|
|
|
|
|
int hassaved;
|
|
|
|
|
BOOL spawned;
|
|
|
|
|
} _uiheroinfo;
|
|
|
|
|
|
|
|
|
|
// TPDEF PTR FCN UCHAR ENUMHEROPROC
|
|
|
|
|
// TPDEF PTR FCN UCHAR ENUMHEROS
|
|
|
|
|
// TPDEF PTR FCN UCHAR CREATEHERO
|
|
|
|
|
// TPDEF PTR FCN UCHAR DELETEHERO
|
|
|
|
|
// TPDEF PTR FCN UCHAR GETDEFHERO
|
|
|
|
|
|
|
|
|
|
// TPDEF PTR FCN INT PROGRESSFCN
|
|
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////
|
|
|
|
|
// storm
|
|
|
|
|
//////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
// TPDEF PTR FCN UCHAR SMSGIDLEPROC
|
|
|
|
|
// TPDEF PTR FCN VOID SMSGHANDLER
|
|
|
|
|
|
|
|
|
|
typedef struct _SNETCAPS {
|
|
|
|
|
DWORD size;
|
|
|
|
|
DWORD flags;
|
|
|
|
|
DWORD maxmessagesize;
|
|
|
|
|
DWORD maxqueuesize;
|
|
|
|
|
DWORD maxplayers;
|
|
|
|
|
DWORD bytessec;
|
|
|
|
|
DWORD latencyms;
|
|
|
|
|
DWORD defaultturnssec;
|
|
|
|
|
DWORD defaultturnsintransit;
|
|
|
|
|
} _SNETCAPS;
|
|
|
|
|
|
|
|
|
|
typedef struct _SNETEVENT {
|
|
|
|
|
DWORD eventid;
|
|
|
|
|
DWORD playerid;
|
|
|
|
|
void *data;
|
|
|
|
|
DWORD databytes;
|
|
|
|
|
} _SNETEVENT;
|
|
|
|
|
|
|
|
|
|
// TPDEF PTR FCN UCHAR SNETABORTPROC
|
|
|
|
|
// TPDEF PTR FCN UCHAR SNETCATEGORYPROC
|
|
|
|
|
// TPDEF PTR FCN UCHAR SNETCHECKAUTHPROC
|
|
|
|
|
// TPDEF PTR FCN UCHAR SNETCREATEPROC
|
|
|
|
|
// TPDEF PTR FCN UCHAR SNETDRAWDESCPROC
|
|
|
|
|
// TPDEF PTR FCN UCHAR SNETENUMDEVICESPROC
|
|
|
|
|
// TPDEF PTR FCN UCHAR SNETENUMGAMESPROC
|
|
|
|
|
// TPDEF PTR FCN UCHAR SNETENUMPROVIDERSPROC
|
|
|
|
|
// TPDEF PTR FCN VOID SNETEVENTPROC
|
|
|
|
|
// TPDEF PTR FCN UCHAR SNETGETARTPROC
|
|
|
|
|
// TPDEF PTR FCN UCHAR SNETGETDATAPROC
|
|
|
|
|
// TPDEF PTR FCN INT SNETMESSAGEBOXPROC
|
|
|
|
|
// TPDEF PTR FCN UCHAR SNETPLAYSOUNDPROC
|
|
|
|
|
// TPDEF PTR FCN UCHAR SNETSELECTEDPROC
|
|
|
|
|
// TPDEF PTR FCN UCHAR SNETSTATUSPROC
|
|
|
|
|
|
|
|
|
|
typedef struct _SNETPLAYERDATA {
|
|
|
|
|
int size;
|
|
|
|
|
char *playername;
|
|
|
|
|
char *playerdescription;
|
|
|
|
|
} _SNETPLAYERDATA;
|
|
|
|
|
|
|
|
|
|
typedef struct _SNETVERSIONDATA {
|
|
|
|
|
int size;
|
|
|
|
|
const char *versionstring;
|
|
|
|
|
} _SNETVERSIONDATA;
|
|
|
|
|
|
|
|
|
|
typedef struct _SNETUIDATA {
|
|
|
|
|
int size;
|
|
|
|
|
void (*selectedcallback)();
|
|
|
|
|
void (*statuscallback)();
|
|
|
|
|
void (*categorylistcallback)();
|
|
|
|
|
void (*newaccountcallback)();
|
|
|
|
|
const char **profilefields;
|
|
|
|
|
bool (*selectnamecallback)(
|
|
|
|
|
const struct _SNETPROGRAMDATA *,
|
|
|
|
|
const struct _SNETPLAYERDATA *,
|
|
|
|
|
const struct _SNETUIDATA *,
|
|
|
|
|
const struct _SNETVERSIONDATA *,
|
|
|
|
|
DWORD provider, /* e.g. 'BNET', 'IPXN', 'MODM', 'SCBL' */
|
|
|
|
|
char *, DWORD, /* character name will be copied here */
|
|
|
|
|
char *, DWORD, /* character "description" will be copied here (used to advertise games) */
|
|
|
|
|
bool * /* new character? - unsure about this */
|
|
|
|
|
);
|
|
|
|
|
void (*changenamecallback)();
|
|
|
|
|
} _SNETUIDATA;
|
|
|
|
|
|
|
|
|
|
// TPDEF PTR FCN UCHAR SNETSPIBIND
|
|
|
|
|
// TPDEF PTR FCN UCHAR SNETSPIQUERY
|
|
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////
|
|
|
|
|
// capture
|
|
|
|
|
//////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
typedef struct _PcxHeader {
|
|
|
|
|
BYTE Manufacturer;
|
|
|
|
|
BYTE Version;
|
|
|
|
|
BYTE Encoding;
|
|
|
|
|
BYTE BitsPerPixel;
|
|
|
|
|
WORD Xmin;
|
|
|
|
|
WORD Ymin;
|
|
|
|
|
WORD Xmax;
|
|
|
|
|
WORD Ymax;
|
|
|
|
|
WORD HDpi;
|
|
|
|
|
WORD VDpi;
|
|
|
|
|
BYTE Colormap[48];
|
|
|
|
|
BYTE Reserved;
|
|
|
|
|
BYTE NPlanes;
|
|
|
|
|
WORD BytesPerLine;
|
|
|
|
|
WORD PaletteInfo;
|
|
|
|
|
WORD HscreenSize;
|
|
|
|
|
WORD VscreenSize;
|
|
|
|
|
BYTE Filler[54];
|
|
|
|
|
} PCXHEADER;
|
|
|
|
|
|
|
|
|
|
DEVILUTION_END_NAMESPACE
|