/** * @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; HANDLE file_handle; // for streamed audio 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; ////////////////////////////////////////////////// // 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; plr_class 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